Переглянути джерело

Merge branch '2.0' of http://192.168.1.220:10080/Amoy2/wlyy2.0 into 2.0

wangzhinan 2 роки тому
батько
коміт
e36138af1c
100 змінених файлів з 12002 додано та 2903 видалено
  1. 4 0
      common/common-entity/src/main/java/com/yihu/jw/entity/ehr/quota/TjDataSave.java
  2. 11 0
      common/common-entity/src/main/java/com/yihu/jw/entity/ehr/quota/TjQuotaDataSave.java
  3. 119 0
      common/common-entity/src/main/java/com/yihu/jw/entity/ehr/quota/TjQuotaGovProvision.java
  4. 2 1
      common/common-entity/src/main/java/com/yihu/jw/entity/ehr/resource/RsAdapterDictionary.java
  5. 2 1
      common/common-entity/src/main/java/com/yihu/jw/entity/ehr/resource/RsAdapterMetadata.java
  6. 2 1
      common/common-entity/src/main/java/com/yihu/jw/entity/ehr/resource/RsAdapterScheme.java
  7. 2 1
      common/common-entity/src/main/java/com/yihu/jw/entity/ehr/resource/RsAppResource.java
  8. 2 1
      common/common-entity/src/main/java/com/yihu/jw/entity/ehr/resource/RsAppResourceMetadata.java
  9. 2 1
      common/common-entity/src/main/java/com/yihu/jw/entity/ehr/resource/RsDictionary.java
  10. 2 1
      common/common-entity/src/main/java/com/yihu/jw/entity/ehr/resource/RsDictionaryEntry.java
  11. 2 1
      common/common-entity/src/main/java/com/yihu/jw/entity/ehr/resource/RsDimension.java
  12. 2 1
      common/common-entity/src/main/java/com/yihu/jw/entity/ehr/resource/RsDimensionCategory.java
  13. 2 1
      common/common-entity/src/main/java/com/yihu/jw/entity/ehr/resource/RsInterface.java
  14. 2 1
      common/common-entity/src/main/java/com/yihu/jw/entity/ehr/resource/RsMetadata.java
  15. 2 1
      common/common-entity/src/main/java/com/yihu/jw/entity/ehr/resource/RsOrgResource.java
  16. 2 1
      common/common-entity/src/main/java/com/yihu/jw/entity/ehr/resource/RsOrgResourceMetadata.java
  17. 2 1
      common/common-entity/src/main/java/com/yihu/jw/entity/ehr/resource/RsReport.java
  18. 2 1
      common/common-entity/src/main/java/com/yihu/jw/entity/ehr/resource/RsReportCategory.java
  19. 2 1
      common/common-entity/src/main/java/com/yihu/jw/entity/ehr/resource/RsReportMonitorType.java
  20. 2 1
      common/common-entity/src/main/java/com/yihu/jw/entity/ehr/resource/RsReportUsers.java
  21. 2 1
      common/common-entity/src/main/java/com/yihu/jw/entity/ehr/resource/RsReportView.java
  22. 12 0
      common/common-entity/src/main/java/com/yihu/jw/entity/ehr/resource/RsResource.java
  23. 3 12
      common/common-entity/src/main/java/com/yihu/jw/entity/ehr/resource/RsResourceCategory.java
  24. 2 1
      common/common-entity/src/main/java/com/yihu/jw/entity/ehr/resource/RsResourceDefaultParam.java
  25. 2 1
      common/common-entity/src/main/java/com/yihu/jw/entity/ehr/resource/RsResourceMetadata.java
  26. 13 1
      common/common-entity/src/main/java/com/yihu/jw/entity/ehr/resource/RsResourceQuota.java
  27. 2 1
      common/common-entity/src/main/java/com/yihu/jw/entity/ehr/resource/RsRolesResource.java
  28. 2 1
      common/common-entity/src/main/java/com/yihu/jw/entity/ehr/resource/RsRolesResourceMetadata.java
  29. 2 1
      common/common-entity/src/main/java/com/yihu/jw/entity/ehr/resource/RsSystemDictionary.java
  30. 2 1
      common/common-entity/src/main/java/com/yihu/jw/entity/ehr/resource/RsSystemDictionaryEntry.java
  31. 0 11
      common/common-request-mapping/src/main/java/com/yihu/jw/rm/svrBasic/AgAdminConstants.java
  32. 0 14
      common/common-request-mapping/src/main/java/com/yihu/jw/rm/svrBasic/ApiVersion.java
  33. 0 10
      common/common-request-mapping/src/main/java/com/yihu/jw/rm/svrBasic/Channel.java
  34. 0 116
      common/common-request-mapping/src/main/java/com/yihu/jw/rm/svrBasic/ErrorCode.java
  35. 0 11
      common/common-request-mapping/src/main/java/com/yihu/jw/rm/svrBasic/HBConstants.java
  36. 0 14
      common/common-request-mapping/src/main/java/com/yihu/jw/rm/svrBasic/HttpHeader.java
  37. 0 26
      common/common-request-mapping/src/main/java/com/yihu/jw/rm/svrBasic/LisEntry.java
  38. 0 65
      common/common-request-mapping/src/main/java/com/yihu/jw/rm/svrBasic/MicroServices.java
  39. 0 14
      common/common-request-mapping/src/main/java/com/yihu/jw/rm/svrBasic/PageArg.java
  40. 0 1836
      common/common-request-mapping/src/main/java/com/yihu/jw/rm/svrBasic/ServiceApi.java
  41. 0 12
      common/common-request-mapping/src/main/java/com/yihu/jw/rm/svrBasic/SessionAttributeKeys.java
  42. 0 50
      common/common-request-mapping/src/main/java/com/yihu/jw/rm/svrBasic/SystemDictId.java
  43. 0 33
      common/common-request-mapping/src/main/java/com/yihu/jw/rm/svrBasic/UrlScope.java
  44. 326 0
      common/common-rest-model/src/main/java/com/yihu/jw/restmodel/ehr/quota/EsConfig.java
  45. 8 0
      common/common-rest-model/src/main/java/com/yihu/jw/restmodel/ehr/resource/MRsColumnsModel.java
  46. 13 0
      common/common-rest-model/src/main/java/com/yihu/jw/restmodel/web/endpoint/EnvelopRestEndpoint.java
  47. 15 0
      common/common-util/src/main/java/com/yihu/jw/util/common/NumberUtil.java
  48. 51 0
      common/common-util/src/main/java/com/yihu/jw/util/date/DateUtil.java
  49. 1 2
      common/commons-ehr-constants/src/main/java/com/yihu/ehr/constants/ApiVersion.java
  50. 3 0
      common/commons-ehr-constants/src/main/java/com/yihu/ehr/constants/ServiceApi.java
  51. 19 0
      svr/svr-basic/pom.xml
  52. 447 0
      svr/svr-basic/src/main/java/com/yihu/jw/basic/agadmin/controller/common/SystemDictController.java
  53. 177 0
      svr/svr-basic/src/main/java/com/yihu/jw/basic/agadmin/controller/quota/QuotaCategoryController.java
  54. 191 0
      svr/svr-basic/src/main/java/com/yihu/jw/basic/agadmin/controller/quota/TjDataSaveController.java
  55. 226 0
      svr/svr-basic/src/main/java/com/yihu/jw/basic/agadmin/controller/quota/TjDataSourceController.java
  56. 259 0
      svr/svr-basic/src/main/java/com/yihu/jw/basic/agadmin/controller/quota/TjDimensionMainController.java
  57. 258 0
      svr/svr-basic/src/main/java/com/yihu/jw/basic/agadmin/controller/quota/TjDimensionSlaveController.java
  58. 947 0
      svr/svr-basic/src/main/java/com/yihu/jw/basic/agadmin/controller/quota/TjQuotaController.java
  59. 67 0
      svr/svr-basic/src/main/java/com/yihu/jw/basic/agadmin/controller/quota/TjQuotaDimensionMainController.java
  60. 67 0
      svr/svr-basic/src/main/java/com/yihu/jw/basic/agadmin/controller/quota/TjQuotaDimensionSlaveController.java
  61. 664 0
      svr/svr-basic/src/main/java/com/yihu/jw/basic/agadmin/controller/report/ReportController.java
  62. 63 0
      svr/svr-basic/src/main/java/com/yihu/jw/basic/agadmin/controller/resource/DictController.java
  63. 325 0
      svr/svr-basic/src/main/java/com/yihu/jw/basic/agadmin/controller/resource/MetaController.java
  64. 44 0
      svr/svr-basic/src/main/java/com/yihu/jw/basic/agadmin/controller/resource/ReportCategoryAppRelationController.java
  65. 274 0
      svr/svr-basic/src/main/java/com/yihu/jw/basic/agadmin/controller/resource/ReportCategoryController.java
  66. 914 0
      svr/svr-basic/src/main/java/com/yihu/jw/basic/agadmin/controller/resource/ReportController.java
  67. 641 0
      svr/svr-basic/src/main/java/com/yihu/jw/basic/agadmin/controller/resource/ResourceBrowseController.java
  68. 503 0
      svr/svr-basic/src/main/java/com/yihu/jw/basic/agadmin/controller/resource/ResourceCenterController.java
  69. 144 0
      svr/svr-basic/src/main/java/com/yihu/jw/basic/agadmin/controller/resource/ResourceConfigurationController.java
  70. 144 0
      svr/svr-basic/src/main/java/com/yihu/jw/basic/agadmin/controller/resource/ResourceDefaultParamController.java
  71. 697 0
      svr/svr-basic/src/main/java/com/yihu/jw/basic/agadmin/controller/resource/ResourceIntegratedController.java
  72. 151 0
      svr/svr-basic/src/main/java/com/yihu/jw/basic/agadmin/controller/resource/ResourceInterfaceController.java
  73. 568 0
      svr/svr-basic/src/main/java/com/yihu/jw/basic/agadmin/controller/resource/ResourceManageController.java
  74. 137 0
      svr/svr-basic/src/main/java/com/yihu/jw/basic/agadmin/controller/resource/ResourceMonitorTypeReportController.java
  75. 150 0
      svr/svr-basic/src/main/java/com/yihu/jw/basic/agadmin/controller/resource/ResourceViewController.java
  76. 269 0
      svr/svr-basic/src/main/java/com/yihu/jw/basic/agadmin/controller/resource/ResourcesStatisticsController.java
  77. 272 0
      svr/svr-basic/src/main/java/com/yihu/jw/basic/agadmin/controller/resource/RsResourceCategoryController.java
  78. 171 0
      svr/svr-basic/src/main/java/com/yihu/jw/basic/agadmin/controller/resource/SchemeAdaptController.java
  79. 107 0
      svr/svr-basic/src/main/java/com/yihu/jw/basic/agadmin/controller/resource/SchemeAdaptDataSetController.java
  80. 85 0
      svr/svr-basic/src/main/java/com/yihu/jw/basic/agadmin/controller/resource/SchemeAdaptDictController.java
  81. 418 0
      svr/svr-basic/src/main/java/com/yihu/jw/basic/agadmin/service/ResourceBrowseControllerService.java
  82. 0 203
      svr/svr-basic/src/main/java/com/yihu/jw/basic/config/BeanConfig.java
  83. 3 0
      svr/svr-basic/src/main/java/com/yihu/jw/basic/config/Config.java
  84. 0 26
      svr/svr-basic/src/main/java/com/yihu/jw/basic/config/TenantConfiguration.java
  85. 446 0
      svr/svr-basic/src/main/java/com/yihu/jw/basic/es/EsResultExtract.java
  86. 45 0
      svr/svr-basic/src/main/java/com/yihu/jw/basic/es/util/ElasticSearchConfig.java
  87. 80 0
      svr/svr-basic/src/main/java/com/yihu/jw/basic/es/util/ElasticSearchPool.java
  88. 402 0
      svr/svr-basic/src/main/java/com/yihu/jw/basic/es/util/ElasticsearchUtil.java
  89. 58 0
      svr/svr-basic/src/main/java/com/yihu/jw/basic/es/util/EsClientUtil.java
  90. 0 83
      svr/svr-basic/src/main/java/com/yihu/jw/basic/hibernate/HibenateDemo.java
  91. 0 264
      svr/svr-basic/src/main/java/com/yihu/jw/basic/hibernate/HibenateUtils.java
  92. 0 56
      svr/svr-basic/src/main/java/com/yihu/jw/basic/interceptor/AuditInterceptor.java
  93. 926 0
      svr/svr-basic/src/main/java/com/yihu/jw/basic/quota/controller/QuotaReportController.java
  94. 3 4
      svr/svr-basic/src/main/java/com/yihu/jw/basic/quota/controller/TjDataSaveEndPoint.java
  95. 2 2
      svr/svr-basic/src/main/java/com/yihu/jw/basic/quota/controller/TjDataSourceEndPoint.java
  96. 4 7
      svr/svr-basic/src/main/java/com/yihu/jw/basic/quota/controller/TjDimensionMainEndPoint.java
  97. 2 2
      svr/svr-basic/src/main/java/com/yihu/jw/basic/quota/controller/TjDimensionSlaveEndPoint.java
  98. 3 3
      svr/svr-basic/src/main/java/com/yihu/jw/basic/quota/controller/TjQuotaCategoryEndPoint.java
  99. 2 2
      svr/svr-basic/src/main/java/com/yihu/jw/basic/quota/controller/TjQuotaChartEndPoint.java
  100. 0 0
      svr/svr-basic/src/main/java/com/yihu/jw/basic/quota/controller/TjQuotaDataSaveEndPoint.java

+ 4 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/ehr/quota/TjDataSave.java

@ -26,6 +26,10 @@ public class TjDataSave implements Serializable {
    private Integer status;
    private String remark;
    public static String type_es ="1";
    public static String type_solr="2";
    public static String type_mysql ="3";
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "id", unique = true, nullable = false)

+ 11 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/ehr/quota/TjQuotaDataSave.java

@ -14,6 +14,8 @@ public class TjQuotaDataSave implements Serializable{
    private String saveCode;
    private String configJson;
    private String type;
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "id", unique = true, nullable = false)
@ -51,4 +53,13 @@ public class TjQuotaDataSave implements Serializable{
    public void setConfigJson(String configJson) {
        this.configJson = configJson;
    }
    @Transient
    public String getType() {
        return type;
    }
    public void setType(String type) {
        this.type = type;
    }
}

+ 119 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/ehr/quota/TjQuotaGovProvision.java

@ -0,0 +1,119 @@
package com.yihu.jw.entity.ehr.quota;
import com.fasterxml.jackson.annotation.JsonFormat;
import javax.persistence.*;
import java.io.Serializable;
import java.util.Date;
/**
 * Created by wxw on 2018/3/6.
 */
@Entity
@Table(name = "tj_quota_gov_provision")
public class TjQuotaGovProvision implements Serializable {
    private long id;
    private long population;
    private String gender;
    private String year;
    private String district;
    private long administrativeDivision;
    private Date createDate;
    private String creator;
    private Date modifyDate;
    private String modifier;
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "id", unique = true, nullable = false)
    public long getId() {
        return id;
    }
    public void setId(long id) {
        this.id = id;
    }
    @Column(name = "population")
    public long getPopulation() {
        return population;
    }
    public void setPopulation(long population) {
        this.population = population;
    }
    @Column(name = "gender")
    public String getGender() {
        return gender;
    }
    public void setGender(String gender) {
        this.gender = gender;
    }
    @Column(name = "year")
    public String getYear() {
        return year;
    }
    public void setYear(String year) {
        this.year = year;
    }
    @Column(name = "district")
    public String getDistrict() {
        return district;
    }
    public void setDistrict(String district) {
        this.district = district;
    }
    @Column(name = "administrative_division")
    public long getAdministrativeDivision() {
        return administrativeDivision;
    }
    public void setAdministrativeDivision(long administrativeDivision) {
        this.administrativeDivision = administrativeDivision;
    }
    @Column(name = "create_date", nullable = false)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    public Date getCreateDate() {
        return createDate;
    }
    public void setCreateDate(Date createDate) {
        this.createDate = createDate;
    }
    @Column(name = "creator")
    public String getCreator() {
        return creator;
    }
    public void setCreator(String creator) {
        this.creator = creator;
    }
    @Column(name = "modify_date")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    public Date getModifyDate() {
        return modifyDate;
    }
    public void setModifyDate(Date modifyDate) {
        this.modifyDate = modifyDate;
    }
    @Column(name = "modifier")
    public String getModifier() {
        return modifier;
    }
    public void setModifier(String modifier) {
        this.modifier = modifier;
    }
}

+ 2 - 1
common/common-entity/src/main/java/com/yihu/jw/entity/ehr/resource/RsAdapterDictionary.java

@ -1,6 +1,7 @@
package com.yihu.jw.entity.ehr.resource;
import javax.persistence.*;
import java.io.Serializable;
/**
 * @author linaz
@ -9,7 +10,7 @@ import javax.persistence.*;
@Entity
@Table(name="rs_adapter_dictionary")
@Access(value = AccessType.PROPERTY)
public class RsAdapterDictionary {
public class RsAdapterDictionary implements Serializable {
    private String id;
    private String schemeId;

+ 2 - 1
common/common-entity/src/main/java/com/yihu/jw/entity/ehr/resource/RsAdapterMetadata.java

@ -1,6 +1,7 @@
package com.yihu.jw.entity.ehr.resource;
import javax.persistence.*;
import java.io.Serializable;
/**
 * 适配数据元
@ -9,7 +10,7 @@ import javax.persistence.*;
 */
@Entity
@Table(name="rs_adapter_metadata")
public class RsAdapterMetadata {
public class RsAdapterMetadata implements Serializable {
    private String id;
    private String schemeId;
    private String metadataId;

+ 2 - 1
common/common-entity/src/main/java/com/yihu/jw/entity/ehr/resource/RsAdapterScheme.java

@ -3,6 +3,7 @@ package com.yihu.jw.entity.ehr.resource;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import java.io.Serializable;
/**
 * 资源适配方案实体
@ -11,7 +12,7 @@ import javax.persistence.*;
 */
@Entity
@Table(name="rs_adapter_scheme")
public class RsAdapterScheme {
public class RsAdapterScheme implements Serializable {
    private String id;
    private String type;

+ 2 - 1
common/common-entity/src/main/java/com/yihu/jw/entity/ehr/resource/RsAppResource.java

@ -3,13 +3,14 @@ package com.yihu.jw.entity.ehr.resource;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import java.io.Serializable;
/**
 * Created by lyr on 2016/4/26.
 */
@Entity
@Table(name="rs_app_resource")
public class RsAppResource {
public class RsAppResource implements Serializable {
    private String id;
    private String appId;
    private String resourceId;

+ 2 - 1
common/common-entity/src/main/java/com/yihu/jw/entity/ehr/resource/RsAppResourceMetadata.java

@ -3,13 +3,14 @@ package com.yihu.jw.entity.ehr.resource;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import java.io.Serializable;
/**
 * Created by lyr on 2016/4/26.
 */
@Entity
@Table(name="rs_app_resource_metadata")
public class RsAppResourceMetadata {
public class RsAppResourceMetadata implements Serializable {
    private String id;
    private String appId;
    private String appResourceId;

+ 2 - 1
common/common-entity/src/main/java/com/yihu/jw/entity/ehr/resource/RsDictionary.java

@ -1,6 +1,7 @@
package com.yihu.jw.entity.ehr.resource;
import javax.persistence.*;
import java.io.Serializable;
/**
 * 资源字典
@ -9,7 +10,7 @@ import javax.persistence.*;
 */
@Entity
@Table(name="rs_dictionary")
public class RsDictionary {
public class RsDictionary implements Serializable {
    private int id;
    private String code;
    private String name;

+ 2 - 1
common/common-entity/src/main/java/com/yihu/jw/entity/ehr/resource/RsDictionaryEntry.java

@ -3,6 +3,7 @@ package com.yihu.jw.entity.ehr.resource;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import java.io.Serializable;
/**
 * 资源字典项
@ -11,7 +12,7 @@ import javax.persistence.*;
 */
@Entity
@Table(name = "rs_dictionary_entry")
public class RsDictionaryEntry {
public class RsDictionaryEntry implements Serializable {
    private int id;
    private int dictId;
    private String dictCode;

+ 2 - 1
common/common-entity/src/main/java/com/yihu/jw/entity/ehr/resource/RsDimension.java

@ -3,13 +3,14 @@ package com.yihu.jw.entity.ehr.resource;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import java.io.Serializable;
/**
 * Created by lyr on 2016/4/25.
 */
@Entity
@Table(name="rs_dimension")
public class RsDimension {
public class RsDimension implements Serializable {
    private String id;
    private String code;
    private String name;

+ 2 - 1
common/common-entity/src/main/java/com/yihu/jw/entity/ehr/resource/RsDimensionCategory.java

@ -3,13 +3,14 @@ package com.yihu.jw.entity.ehr.resource;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import java.io.Serializable;
/**
 * Created by lyr on 2016/4/25.
 */
@Entity
@Table(name="rs_dimension_category")
public class RsDimensionCategory {
public class RsDimensionCategory implements Serializable {
    private String id;
    private String name;

+ 2 - 1
common/common-entity/src/main/java/com/yihu/jw/entity/ehr/resource/RsInterface.java

@ -3,6 +3,7 @@ package com.yihu.jw.entity.ehr.resource;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import java.io.Serializable;
/**
 * 资源接口
@ -11,7 +12,7 @@ import javax.persistence.*;
 */
@Entity
@Table(name="rs_interface")
public class RsInterface {
public class RsInterface implements Serializable {
    private String id;
    private String name;
    private String resourceInterface;

+ 2 - 1
common/common-entity/src/main/java/com/yihu/jw/entity/ehr/resource/RsMetadata.java

@ -3,13 +3,14 @@ package com.yihu.jw.entity.ehr.resource;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import java.io.Serializable;
/**
 * Created by lyr on 2016/5/16.
 */
@Entity
@Table(name="rs_metadata")
public class RsMetadata {
public class RsMetadata implements Serializable {
    private String id;
    private String domain;

+ 2 - 1
common/common-entity/src/main/java/com/yihu/jw/entity/ehr/resource/RsOrgResource.java

@ -3,13 +3,14 @@ package com.yihu.jw.entity.ehr.resource;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import java.io.Serializable;
/**
 * Created by zdm on 2017/6/15
 */
@Entity
@Table(name="rs_organization_resource")
public class RsOrgResource {
public class RsOrgResource implements Serializable {
    private String id;
    private String organizationId;
    private String resourceId;

+ 2 - 1
common/common-entity/src/main/java/com/yihu/jw/entity/ehr/resource/RsOrgResourceMetadata.java

@ -3,13 +3,14 @@ package com.yihu.jw.entity.ehr.resource;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import java.io.Serializable;
/**
 * Created by zdm on 2017/6/15
 */
@Entity
@Table(name="rs_organization_resource_metadata")
public class RsOrgResourceMetadata {
public class RsOrgResourceMetadata implements Serializable {
    private String id;
    private String organizationId;
    private String organizationResourceId;

+ 2 - 1
common/common-entity/src/main/java/com/yihu/jw/entity/ehr/resource/RsReport.java

@ -3,6 +3,7 @@ package com.yihu.jw.entity.ehr.resource;
import org.hibernate.annotations.Formula;
import javax.persistence.*;
import java.io.Serializable;
/**
 * 资源报表 entity
@ -12,7 +13,7 @@ import javax.persistence.*;
 */
@Entity
@Table(name = "rs_report")
public class RsReport {
public class RsReport implements Serializable {
    private Integer id; // 主键
    private String code; // 报表编码

+ 2 - 1
common/common-entity/src/main/java/com/yihu/jw/entity/ehr/resource/RsReportCategory.java

@ -1,6 +1,7 @@
package com.yihu.jw.entity.ehr.resource;
import javax.persistence.*;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
@ -12,7 +13,7 @@ import java.util.List;
 */
@Entity
@Table(name = "rs_report_category")
public class RsReportCategory {
public class RsReportCategory implements Serializable {
    private Integer id; // 主键
    private Integer pid; // 父级ID

+ 2 - 1
common/common-entity/src/main/java/com/yihu/jw/entity/ehr/resource/RsReportMonitorType.java

@ -1,6 +1,7 @@
package com.yihu.jw.entity.ehr.resource;
import javax.persistence.*;
import java.io.Serializable;
/**
 * 资源报表监测类型 entity
@ -10,7 +11,7 @@ import javax.persistence.*;
 */
@Entity
@Table(name = "rs_report_monitor_type")
public class RsReportMonitorType {
public class RsReportMonitorType implements Serializable {
    private Integer id; // 主键
    private String name; // 名称

+ 2 - 1
common/common-entity/src/main/java/com/yihu/jw/entity/ehr/resource/RsReportUsers.java

@ -3,13 +3,14 @@ package com.yihu.jw.entity.ehr.resource;
import org.hibernate.annotations.Formula;
import javax.persistence.*;
import java.io.Serializable;
/**
 * Created by wxw on 2018/7/31.
 */
@Entity
@Table(name = "rs_report_users")
public class RsReportUsers {
public class RsReportUsers implements Serializable {
    private Integer id; // 主键
    private String reportCode;  // 报表编码

+ 2 - 1
common/common-entity/src/main/java/com/yihu/jw/entity/ehr/resource/RsReportView.java

@ -3,6 +3,7 @@ package com.yihu.jw.entity.ehr.resource;
import org.hibernate.annotations.Formula;
import javax.persistence.*;
import java.io.Serializable;
/**
 * 资源报表视图配置 entity
@ -12,7 +13,7 @@ import javax.persistence.*;
 */
@Entity
@Table(name = "rs_report_view")
public class RsReportView {
public class RsReportView implements Serializable {
    private Integer id; // 主键
    private Integer reportId; // 资源报表ID

+ 12 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/ehr/resource/RsResource.java

@ -40,6 +40,9 @@ public class RsResource extends BaseAssignedEntity {
    // 单位放置位置
    private String dataPosition;
    //分类名称
    private String categoryName;
    @Column(name="code",nullable = false)
    public String getCode() {
        return code;
@ -145,4 +148,13 @@ public class RsResource extends BaseAssignedEntity {
    public void setDataPosition(String dataPosition) {
        this.dataPosition = dataPosition;
    }
    @Transient
    public String getCategoryName() {
        return categoryName;
    }
    public void setCategoryName(String categoryName) {
        this.categoryName = categoryName;
    }
}

+ 3 - 12
common/common-entity/src/main/java/com/yihu/jw/entity/ehr/resource/RsResourceCategory.java

@ -1,9 +1,11 @@
package com.yihu.jw.entity.ehr.resource;
import com.yihu.jw.entity.AssignedIdentityEntity;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import java.io.Serializable;
/**
 * Created by lyr on 2016/5/4.
@ -11,24 +13,13 @@ import javax.persistence.*;
 */
@Entity
@Table(name="rs_resource_category")
public class RsResourceCategory {
public class RsResourceCategory extends AssignedIdentityEntity {
    private String id;
    private String name;
    private String pid;
    private String code;
    private String description;
    @Id
    @GeneratedValue(generator="Generator")
    @GenericGenerator(name="Generator",strategy = "assigned")
    @Column(name="id",nullable = false,unique = true)
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    @Column(name="name",nullable = false)
    public String getName() {

+ 2 - 1
common/common-entity/src/main/java/com/yihu/jw/entity/ehr/resource/RsResourceDefaultParam.java

@ -3,6 +3,7 @@ package com.yihu.jw.entity.ehr.resource;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import java.io.Serializable;
/**
 * 资源字典
@ -11,7 +12,7 @@ import javax.persistence.*;
 */
@Entity
@Table(name="rs_resource_default_params")
public class RsResourceDefaultParam {
public class RsResourceDefaultParam implements Serializable {
    private String id;
    private String resourcesId;

+ 2 - 1
common/common-entity/src/main/java/com/yihu/jw/entity/ehr/resource/RsResourceMetadata.java

@ -3,13 +3,14 @@ package com.yihu.jw.entity.ehr.resource;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import java.io.Serializable;
/**
 * Created by lyr on 2016/4/25.
 */
@Entity
@Table(name="rs_resource_metadata")
public class RsResourceMetadata {
public class RsResourceMetadata implements Serializable {
    private String id;
    private String resourcesId;
    private String metadataId;

+ 13 - 1
common/common-entity/src/main/java/com/yihu/jw/entity/ehr/resource/RsResourceQuota.java

@ -1,14 +1,16 @@
package com.yihu.jw.entity.ehr.resource;
import javax.persistence.*;
import java.io.Serializable;
import java.util.List;
import java.util.Map;
/**
 * Created by Administrator on 2017/8/10.
 */
@Entity
@Table(name="rs_resource_quota")
public class RsResourceQuota {
public class RsResourceQuota implements Serializable {
    private int id;
    private String resourceId;
    private String quotaTypeName;
@ -18,6 +20,7 @@ public class RsResourceQuota {
    private Integer pid;
    private List<RsResourceQuota> children;
    private List<Map<String, Object>> mapList;
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
@ -92,4 +95,13 @@ public class RsResourceQuota {
    public void setChildren(List<RsResourceQuota> children) {
        this.children = children;
    }
    @Transient
    public List<Map<String, Object>> getMapList() {
        return mapList;
    }
    public void setMapList(List<Map<String, Object>> mapList) {
        this.mapList = mapList;
    }
}

+ 2 - 1
common/common-entity/src/main/java/com/yihu/jw/entity/ehr/resource/RsRolesResource.java

@ -3,13 +3,14 @@ package com.yihu.jw.entity.ehr.resource;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import java.io.Serializable;
/**
 * Created by zdm on 2017/6/15
 */
@Entity
@Table(name="rs_roles_resource")
public class RsRolesResource {
public class RsRolesResource implements Serializable {
    private String id;
    private String rolesId;
    private String resourceId;

+ 2 - 1
common/common-entity/src/main/java/com/yihu/jw/entity/ehr/resource/RsRolesResourceMetadata.java

@ -3,13 +3,14 @@ package com.yihu.jw.entity.ehr.resource;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import java.io.Serializable;
/**
 * Created by zdm on 2017/6/15
 */
@Entity
@Table(name="rs_roles_resource_metadata")
public class RsRolesResourceMetadata {
public class RsRolesResourceMetadata implements Serializable {
    private String id;
    private String rolesId;
    private String rolesResourceId;

+ 2 - 1
common/common-entity/src/main/java/com/yihu/jw/entity/ehr/resource/RsSystemDictionary.java

@ -3,6 +3,7 @@ package com.yihu.jw.entity.ehr.resource;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import java.io.Serializable;
/**
 * 资源系统字典
@ -11,7 +12,7 @@ import javax.persistence.*;
 */
@Entity
@Table(name="rs_system_dictionary")
public class RsSystemDictionary {
public class RsSystemDictionary implements Serializable {
    private String id;
    private String code;
    private String name;

+ 2 - 1
common/common-entity/src/main/java/com/yihu/jw/entity/ehr/resource/RsSystemDictionaryEntry.java

@ -3,6 +3,7 @@ package com.yihu.jw.entity.ehr.resource;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import java.io.Serializable;
/**
 * 资源系统字典项
@ -11,7 +12,7 @@ import javax.persistence.*;
 */
@Entity
@Table(name="rs_system_dictionary_entry")
public class RsSystemDictionaryEntry {
public class RsSystemDictionaryEntry implements Serializable {
    private String id;
    private String dictCode;
    private String code;

+ 0 - 11
common/common-request-mapping/src/main/java/com/yihu/jw/rm/svrBasic/AgAdminConstants.java

@ -1,11 +0,0 @@
package com.yihu.jw.rm.svrBasic;
/**
 * Created by AndyCai on 2016/2/22.
 */
public class AgAdminConstants {
    public static final String ResourceCount = "X-Total-Count";
    public static final String DefaultPassword="12345678";
    public static final String DateTimeFormat="yyyy-MM-dd HH:mm:ss";
    public static final String DateFormat="yyyy-MM-dd";
}

+ 0 - 14
common/common-request-mapping/src/main/java/com/yihu/jw/rm/svrBasic/ApiVersion.java

@ -1,14 +0,0 @@
package com.yihu.jw.rm.svrBasic;
/**
 * API版本前缀。用于适配Rest控制器的版本。定义好适用的版本之后,可以方便API版本编写。
 *
 * API版本格式为:v大版本.小版本。
 *
 * @author Sand
 * @version 1.0
 * @created 2015.11.05 11:29
 */
public class ApiVersion {
    public static final String Version1_0 = "/";      // v1.0 版本
}

+ 0 - 10
common/common-request-mapping/src/main/java/com/yihu/jw/rm/svrBasic/Channel.java

@ -1,10 +0,0 @@
package com.yihu.jw.rm.svrBasic;
/**
 * @author Sand
 * @version 1.0
 * @created 2016.03.31 16:41
 */
public class Channel {
    public static final String PackageResolve = "channel_pack_resolve";
}

+ 0 - 116
common/common-request-mapping/src/main/java/com/yihu/jw/rm/svrBasic/ErrorCode.java

@ -1,116 +0,0 @@
package com.yihu.jw.rm.svrBasic;
/**
 *
 * @author Sand
 * @version 1.0
 * @created 2015.08.10 17:49
 */
public enum ErrorCode {
    // new version code
    // --------------------- standard ---------------------
    CONTINUE(100, "Continue"),
    SWITCHING_PROTOCOLS(101, "Switching Protocols"),
    PROCESSING(102, "Processing"),
    CHECKPOINT(103, "Checkpoint"),
    OK(200, "OK"),
    CREATED(201, "Created"),
    ACCEPTED(202, "Accepted"),
    NON_AUTHORITATIVE_INFORMATION(203, "Non-Authoritative Information"),
    NO_CONTENT(204, "No Content"),
    RESET_CONTENT(205, "Reset Content"),
    PARTIAL_CONTENT(206, "Partial Content"),
    MULTI_STATUS(207, "Multi-Status"),
    ALREADY_REPORTED(208, "Already Reported"),
    IM_USED(226, "IM Used"),
    MULTIPLE_CHOICES(300, "Multiple Choices"),
    MOVED_PERMANENTLY(301, "Moved Permanently"),
    FOUND(302, "Found"),
    /** @deprecated */
    @Deprecated
    MOVED_TEMPORARILY(302, "Moved Temporarily"),
    SEE_OTHER(303, "See Other"),
    NOT_MODIFIED(304, "Not Modified"),
    /** @deprecated */
    @Deprecated
    USE_PROXY(305, "Use Proxy"),
    TEMPORARY_REDIRECT(307, "Temporary Redirect"),
    PERMANENT_REDIRECT(308, "Permanent Redirect"),
    BAD_REQUEST(400, "Bad Request"),
    UNAUTHORIZED(401, "Unauthorized"),
    PAYMENT_REQUIRED(402, "Payment Required"),
    FORBIDDEN(403, "Forbidden"),
    NOT_FOUND(404, "Not Found"),
    METHOD_NOT_ALLOWED(405, "Method Not Allowed"),
    NOT_ACCEPTABLE(406, "Not Acceptable"),
    PROXY_AUTHENTICATION_REQUIRED(407, "Proxy Authentication Required"),
    REQUEST_TIMEOUT(408, "Request Timeout"),
    CONFLICT(409, "Conflict"),
    GONE(410, "Gone"),
    LENGTH_REQUIRED(411, "Length Required"),
    PRECONDITION_FAILED(412, "Precondition Failed"),
    PAYLOAD_TOO_LARGE(413, "Payload Too Large"),
    /** @deprecated */
    @Deprecated
    REQUEST_ENTITY_TOO_LARGE(413, "Request Entity Too Large"),
    URI_TOO_LONG(414, "URI Too Long"),
    /** @deprecated */
    @Deprecated
    REQUEST_URI_TOO_LONG(414, "Request-URI Too Long"),
    UNSUPPORTED_MEDIA_TYPE(415, "Unsupported Media Type"),
    REQUESTED_RANGE_NOT_SATISFIABLE(416, "Requested range not satisfiable"),
    EXPECTATION_FAILED(417, "Expectation Failed"),
    I_AM_A_TEAPOT(418, "I'm a teapot"),
    /** @deprecated */
    @Deprecated
    INSUFFICIENT_SPACE_ON_RESOURCE(419, "Insufficient Space On Resource"),
    /** @deprecated */
    @Deprecated
    METHOD_FAILURE(420, "Method Failure"),
    /** @deprecated */
    @Deprecated
    DESTINATION_LOCKED(421, "Destination Locked"),
    UNPROCESSABLE_ENTITY(422, "Unprocessable Entity"),
    LOCKED(423, "Locked"),
    FAILED_DEPENDENCY(424, "Failed Dependency"),
    UPGRADE_REQUIRED(426, "Upgrade Required"),
    PRECONDITION_REQUIRED(428, "Precondition Required"),
    TOO_MANY_REQUESTS(429, "Too Many Requests"),
    REQUEST_HEADER_FIELDS_TOO_LARGE(431, "Request Header Fields Too Large"),
    UNAVAILABLE_FOR_LEGAL_REASONS(451, "Unavailable For Legal Reasons"),
    INTERNAL_SERVER_ERROR(500, "Internal Server Error"),
    NOT_IMPLEMENTED(501, "Not Implemented"),
    BAD_GATEWAY(502, "Bad Gateway"),
    SERVICE_UNAVAILABLE(503, "Service Unavailable"),
    GATEWAY_TIMEOUT(504, "Gateway Timeout"),
    HTTP_VERSION_NOT_SUPPORTED(505, "HTTP Version not supported"),
    VARIANT_ALSO_NEGOTIATES(506, "Variant Also Negotiates"),
    INSUFFICIENT_STORAGE(507, "Insufficient Storage"),
    LOOP_DETECTED(508, "Loop Detected"),
    BANDWIDTH_LIMIT_EXCEEDED(509, "Bandwidth Limit Exceeded"),
    NOT_EXTENDED(510, "Not Extended"),
    NETWORK_AUTHENTICATION_REQUIRED(511, "Network Authentication Required"),
    // --------------------- ehr ---------------------
    REQUEST_NOT_COMPLETED(-1, "Request Not Completed"), //默认错误码,请求未完成
    MISSING_USER_AGENT(-2, "Missing User Agent"),
    RATE_LIMIT_EXCEEDING(-3, "Rate Limit Exceeding"),
    OBJECT_NOT_FOUND(-4, "Object Not Found");
    private final int value;
    private final String reasonPhrase;
    ErrorCode (int value, String reasonPhrase) {
        this.value = value;
        this.reasonPhrase = reasonPhrase;
    }
    public int value() {
        return this.value;
    }
    public String getReasonPhrase() {
        return this.reasonPhrase;
    }
}

+ 0 - 11
common/common-request-mapping/src/main/java/com/yihu/jw/rm/svrBasic/HBConstants.java

@ -1,11 +0,0 @@
package com.yihu.jw.rm.svrBasic;
public class HBConstants {
	final static public String T_HFILES = "H_Files";
	final static public String T_HeathArchive = "H_HeathArchive";
	 /*通用列族 */
    public static final String FamilyBasic = "basic";
    public static final String FamilyExtension = "extension";
    /* 数据集表特有列族 */
    public static final String FamilyMetaData = "meta_data";
}

+ 0 - 14
common/common-request-mapping/src/main/java/com/yihu/jw/rm/svrBasic/HttpHeader.java

@ -1,14 +0,0 @@
package com.yihu.jw.rm.svrBasic;
/**
 * Created by Sand Wen on 2016.2.27.
 */
public class HttpHeader {
    public static final String RATE_LIMIT_LIMIT = "X-RateLimit-Limit";
    public static final String RATE_LIMIT_REMAINING = "X-RateLimit-Remaining";
    public static final String RATE_LIMIT_RESET = "X-RateLimit-Reset";
    public static final String TOTAL_COUNT = "X-Total-Count";
    public static final String AUTHORIZATION = "Authorization";
}

+ 0 - 26
common/common-request-mapping/src/main/java/com/yihu/jw/rm/svrBasic/LisEntry.java

@ -1,26 +0,0 @@
package com.yihu.jw.rm.svrBasic;
/**
 * 检验名称枚举列表(用于赛诺菲接口)
 *
 * @author linaz
 * @created 2016.06.28 14:23
 */
public class LisEntry {
//    PRO,    尿蛋白质
//    CREA,   肌酐
//    GLU,    葡萄糖
//    TCHO,   总胆固醇
//    HDL-C,  高密脂蛋白胆固醇
//    TG,     甘油三酯
//    K,      钾
//    HbAc1,  糖化血红蛋白
//    GLU(2h),葡萄糖2h
//    cTnI,   肌钙蛋白Ⅰ
//    PRO,    尿蛋白质
//    UTP;    24小时尿蛋白
    public static final String[] ENTRY_NAME = {"PRO", "CREA", "GLU", "TCHO", "HDL-C", "TG", "K", "HbAc1", "GLU(2h)", "cTnI", "PRO", "UTP"};
}

+ 0 - 65
common/common-request-mapping/src/main/java/com/yihu/jw/rm/svrBasic/MicroServices.java

@ -1,65 +0,0 @@
package com.yihu.jw.rm.svrBasic;
/**
 * 全局微服务名称枚举。用于Feign及Thrift客户端。
 *
 * @author Sand
 * @version 1.0
 * @created 2016.01.11 8:54
 */
public class MicroServices {
    public static final String Configuration = "svr-configuration";
    //以下几个微服务聚合svr-basic
    public static final String Basic = "svr-basic";
    public static final String Application = "svr-basic";
    public static final String Geography = "svr-basic";
    public static final String Patient = "svr-basic";
    public static final String Portal = "svr-basic";
    public static final String Security = "svr-basic";
    public static final String User = "svr-basic";
    public static final String Family = "svr-basic";
    public static final String FileResource = "svr-basic";
    public static final String Dictionary = "svr-basic";
    public static final String EsbDictionary = "hos-admin";
    public static final String Organization = "svr-basic";
    //以下几个微服务聚合svr-standard
    public static final String Adaption = "svr-standard";
    public static final String Standard = "hos-admin";
    public static final String StandardSource = "svr-standard";
    public static final String SpecialDict = "hos-admin";
    public static final String Resource = "svr-resource";
    public static final String ESB = "svr-esb";
    public static final String HealthProfile = "svr-health-profile";
    public static final String PackageResolve = "svr-pack-resolve";
    public static final String Package = "svr-pack-mgr";
    public static final String Authentication = "svr-authentication";
    public static final String Redis = "svr-redis";
    public static final String StdRedis = "hos-admin";
    public static final String Quota = "svr-quota";
    public static final String Dfs = "svr-dfs";
    public static final String Cipher = "svr-cipher";
    public static final String ArchiveSecurity = "svr-archive-security";
    public static final String Statistics = "svr-protal-statistics";
    public static final String Discovery = "svr-discovery";
    public static final String LogCollection = "svr-logCollection";
    public static final String Analyzer = "svr-pack-analyzer";
    public static final String FzGateway = "ag-admin";
    public static final String AgZuul = "ag-zuul";
}

+ 0 - 14
common/common-request-mapping/src/main/java/com/yihu/jw/rm/svrBasic/PageArg.java

@ -1,14 +0,0 @@
package com.yihu.jw.rm.svrBasic;
/**
 * @author Sand
 * @version 1.0
 * @created 2016.02.14 17:47
 */
public class PageArg {
    public static final Integer DefaultPage = 1;
    public static final Integer DefaultSize = 30;
    public static final String DefaultPageS = "1";
    public static final String DefaultSizeS = "30";
}

+ 0 - 1836
common/common-request-mapping/src/main/java/com/yihu/jw/rm/svrBasic/ServiceApi.java

@ -1,1836 +0,0 @@
package com.yihu.jw.rm.svrBasic;
/**
 * 微服务REST API. 此处定义的URL可用于服务对外提供的地址及HTTP客户端请求地址.
 * URL定义遵循健康档案平台REST规范.
 *
 * @author Sand
 * @version 1.0
 * @created 2015.09.09 15:04
 */
public class ServiceApi {
    public static class GateWay {
        public static final String admin = "/admin";
        public static final String FzGateway = "/admin/gateway/fz";
    }
    public static class Adaptions {
        //public static final String Cache = "/adaptions/{id}/cache";
        //public static final String CacheGet = "/adaptions/{key}/cache";
        public static final String Scheme = "/adaptions/schemas/{id}";
        public static final String Schemes = "/adaptions/schemas";
        public static final String SchemaMetadataList = "/adaptions/schema/metadata";
        public static final String SchemaMetadata = "/adaptions/schema/metadata/{id}";
        public static final String SchemaMetadataBatch = "/adaptions/schema/metadata/batch";
        public static final String RsAdapterDictionaries = "/adaptions/adapter/dictionaries";
        //public static final String RsAdapterDictionariesCache = "/adaptions/adapter/dictionaries/{schemaId}/cache";
        public static final String RsAdapterDictionary = "/adaptions/adapter/dictionaries/{id}";
    }
    /**
     * 资源管理中心接口
     */
    public static class Resources {
        //资源查询接口(命名先按原有路径,不规范)
        public static final String ResourceViewMetadata = "/resources/query/getResourceMetadata"; //资源浏览获取结构
        public static final String ResourceViewData = "/resources/query/getResourceData"; //资源浏览获取数据
        public static final String ResourceViewSubData = "/resources/query/getResourceSubData";
        public static final String ResourceQuery = "/resources/query"; //资源查询接口
        //public static final String ResourceSubQuery = "/resources/sub_query"; //详细资源查询接口
        public static final String ResourceQueryTransform = "/resources/query/transform"; //资源查询接口+转译
        public static final String ResourceQueryAllTransform = "/resources/queryAll/transform"; //资源查询接口获取所有数据集相关+转译
        public static final String ResourceQueryByDataSets = "/resources/query/dataSets"; //资源查询接口获取数据集相关的数据+转译
        public static final String ResourceRawFiles = "/resources/query/raw_files"; //非结构资源查询接口
        public static final String ResourceRawFilesList = "/resources/query/raw_files_list"; //非结构资源List查询接口
        public static final String ResourceMasterData = "/resources/query/master_data"; //主表资源查询接口
        public static final String ResourceSubData = "/resources/query/sub_data"; //细表资源查询接口
        public static final String ResourceMasterStat = "/resources/query/master_stat"; //主表资源统计接口
        public static final String ResourceSubStat = "/resources/query/sub_stat"; //细表资源查询接口
        public static final String ResourceHealthFile = "/resources/query/health_file"; //细表资源查询接口
        public static final String ResourceMysql = "/resources/query/mysql"; //mysql资源查询接口
        public static final String SolrIndexData = "/resources/query/solrIndex"; //solr索引列表查询接口
        //资源浏览
        public static final String ResourceBrowseCategories = "/resources/ResourceBrowses/categories";
        public static final String ResourceBrowseResourceData = "/resources/ResourceBrowses/getResourceData";
        public static final String ResourceBrowseResourceSubData = "/resources/ResourceBrowses/getResourceSubData";//根据主表查询词表数据接口
        public static final String ResourceBrowseQuotaResourceData = "/resources/ResourceBrowses/getQuotaResourceData";
        public static final String ResourceBrowseQuotaResourceParam = "/resources/ResourceBrowses/getQuotaResourceParam";
        public static final String ResourceBrowseResourceMetadata = "/resources/ResourceBrowses/getResourceMetadata";
        public static final String ResourceBrowseTree = "/resourceBrowseTree";
        public static final String ResourceBrowseGetRsByCategoryId = "/getResourceByCategoryId";
        //资源视图
        public static final String Resources = "/resources";
        public static final String Resource = "/resources/{id}";
        public static final String ResourceByCode = "/resources/byCode";
        public static final String ResourceTree = "/resources/tree";
        public static final String ResourcePage = "/resources/page";
        public static final String NoPageResources = "/NoPageResources";
        public static final String IsExistName = "/resources/isExistName";
        public static final String IsExistCode = "/resources/isExistCode/{code}";
        public static final String GetQuotaList = "/resources/getQuotaList";
        public static final String GetRsQuotaPreview = "/resources/getRsQuotaPreview";
        public static final String SearchInfo = "/resourceQuota/searchInfo";
        public static final String BatchAddResourceQuota = "/resourceQuota/batchAddResourceQuota";
        public static final String SearchByQuotaId = "/resourceQuota/searchByQuotaId";
        public static final String GetByResourceId = "/resourceQuota/getByResourceId";
        public static final String GetQuotaChartByQuotaId = "/resourceQuota/getQuotaChartByQuotaId";
        public static final String GetRQNameByResourceId = "/resourceQuota/getRQNameByResourceId";
        public static final String DelRQNameByResourceId = "/resourceQuota/delRQNameByResourceId";
        public static final String SearchQuotaByResourceId = "/resourceQuota/getQuotaByResourceId";
        public static final String SearchTreeByResourceId = "/resourceQuota/searchTreeByResourceId";
        public static final String UpdateResourceQuota = "/resourceQuota/updateResourceQuota";
        public static final String ResourceMetadataList = "/resources/rs_metadata";
        public static final String ResourceMetadataBatch = "/resources/rs_metadata/batch";
        public static final String ResourceMetadataBatchByResourceId = "/resources/rs_metadata/resource_ids/batch";
        public static final String ResourceMetadata = "/resources/rs_metadata/{id}";
        public static final String ResourceGrant = "/resources/grants/{id}";
        public static final String ResourceGrants = "/resources/grants";
        public static final String ResourceGrantsNoPage = "/resources/grants/no_paging";
        public static final String AppsGrantResources = "/resources/apps/{appId}/grant";
        public static final String ResourceGrantApps = "/resources/{resourceId}/grant";
        public static final String AppsGrantResourcesByCategoryId = "/resources/appsAppId/grantByCategoryId";
        public static final String DeleteAppsGrantResourcesByCategoryId = "/resources/appsAppId/deleteGrantByCategoryId";
        public static final String ResourceMetadatasValid = "/resources/metadatas/valid";
        public static final String ResourceMetadataGrants = "/resources/metadata/grants";
        public static final String ResourceMetadataGrant = "/resources/metadata/grants/{id}";
        public static final String ResourceMetadataGrantApp = "/resources/app_resource/{appResourceId}/grant/metadata/{metadataId}";
        public static final String ResourceMetadataListGrantApp = "/resources/metadata/grant/{appResourceId}";
        public static final String ResourceAppMetadataGrants = "/resources/app_resource/{app_res_id}/metadata";
        public static final String ResourceAppMetadataGrant = "/resources/app_resource/metadata/grant";
        public static final String ResourceAppMetadataGrantExistence = "/resources/app_resource/metadata/grant/existence";
        public static final String MetadataList = "/resources/metadata";
        public static final String MetadataBatch = "/resources/metadata/batch";
        public static final String Metadata = "/resources/metadata/{id}";
        public static final String MetadataExistence = "/resources/metadata/existence";
        public static final String MetadataStdCodeExistence = "/resources/metadata/std_code/existence";
        public static final String MetadataIdExistence = "/resources/metadata/id/existence";
        public static final String MetadataMaxId = "/resources/metadata/metadataMaxId";
        public static final String DictList = "/resources/dict";
        public static final String DictBatch = "/resources/dict/batch";
        public static final String Dict = "/resources/dict/{id}";
        public static final String DictCode = "/resources/dict/code";
        public static final String DictExistence = "/resources/dict/existence";
        public static final String DictEntryBatch = "/resources/dict/entry/batch";
        public static final String DictCodesExistence = "/resources/dict/codes/existence";
        public static final String Params = "/resources/params";
        public static final String ParamsNoPage = "/resources/params/no_paging";
        public static final String Param = "/resources/param";
        public static final String ParamById = "/resources/param/{id}";
        public static final String ParamKeyValueExistence = "/resources/param/key_value_existence";
        //固化视图筛选条件
        public static final String QueryByResourceId = "/resources/query/QueryByResourceId";
        public static final String DictEntries = "/resources/dict_entries";
        public static final String NoPageDictEntries = "/resources/noPage_dict_entries";
        public static final String DictEntry = "/resources/dict_entries/{id}";
        public static final String DictEntriesByDictCode = "/resources/dict/code/dict_entries";
        public static final String DictEntriesExistence = "/resources/dict_entries/existence";
        public static final String SystemDictList = "/resources/system_dict";
        public static final String SystemDict = "/resources/system_dict/{id}";
        public static final String SystemDictEntries = "/resources/system_dict_entries";
        public static final String SystemDictEntry = "/resources/system_dict_entries/{id}";
        //资源接口
        public static final String Interfaces = "/resources/interfaces";
        public static final String InterfaceById = "/resources/interfaces/{id}";
        public static final String Interface = "/resources/interface";
        public static final String InterfaceNameExistence = "/resources/existence/name";
        //资源分类
        public static final String CategoryUpdate = "/resources/category/update";
        public static final String Category = "/resources/category/{id}";
        public static final String CategoriesByPid = "/resources/categories/pid";
        public static final String CategoriesByCodeAndPid = "/resources/categories/codeAndPid";
        public static final String CategoryTree = "/resources/categories/tree";
        public static final String CategoryExitSelfAndParent = "/resources/categories/selfAndParent";
        public static final String CategoriesAll = "/resources/categories/all";
        public static final String CategoriesSearch = "/resources/categories/search";
        //综合查询服务
        public static final String IntMetadataList = "/resources/integrated/metadata_list";
        public static final String IntMetadataData = "/resources/integrated/metadata_data";
        public static final String IntQuotaList = "/resources/integrated/quota_list";
        public static final String IntQuotaData = "/resources/integrated/quota_data";
        public static final String IntQuotaParam = "/resources/integrated/quota_param";
        public static final String IntResourceUpdate = "/resources/integrated/resource_update";
        public static final String IntResourceQueryUpdate = "/resources/integrated/resource_query_update";
        //获取分类
        public static final String IntCategory = "/resources/integrated/category";
        public static final String IntMetadata = "/resources/integrated/metadata";
        //貌似没用了
        public static final String AdapterDicts = "/resources/adapter/dict";
        public static final String AdapterDictsBatch = "/resources/adapter/dict/batch";
        public static final String AdapterDict = "/resources/adapter/dict/{id}";
        //应用角色资源授权
        public static final String ResourceRolesGrants = "/resources/rolesGrants";
        public static final String ResourceRolesGrant = "/resources/rolesGrants/{id}";
        public static final String ResourceRolesMetadatasValid = "/resources/relosMetadatas/valid";
        public static final String ResourceRolesMetadataGrants = "/resources/relosMetadatas/grants";
        public static final String RolesGrantResources = "/resources/roles/{rolesId}/grant";
        public static final String GetRolesGrantResources = "/resources/getRolesGrantResources";
        //public static final String ResourceGrantApps = "/resources/{resourceId}/grant";
        public static final String ResourceRolesMetadataGrant = "/resources/rolesMetadata/grants/{id}";
        public static final String ResourceRolesGrantsNoPage = "/resources/rolesGrants/no_paging";
        public static final String ResourceRolesResMetadataGrants = "/resources/roles_resource/{roles_res_id}/metadata";
        public static final String RolesGrantResourcesByCategoryId = "/resources/rolesRolesId/grantByCategoryId";
        public static final String DeleteRolesGrantResourcesByCategoryId = "/resources/rolesRolesId/deleteGrantByCategoryId";
        /**
         * 机构-资源授权
         */
        public static final String ResourceOrgGrants = "/resources/OrgGrants";
        public static final String ResourceOrgGrant = "/resources/OrgGrants/{id}";
        public static final String ResourceOrgMetadatasValid = "/resources/OrgMetadatas/valid";
        public static final String ResourceOrgMetadataGrants = "/resources/OrgMetadatas/grants";
        public static final String OrgGrantResources = "/resources/Org/{orgCode}/grant";
        //public static final String ResourceGrantApps = "/resources/{resourceId}/grant";
        public static final String ResourceOrgMetadataGrant = "/resources/OrgMetadata/grants/{id}";
        public static final String ResourceOrgGrantsNoPage = "/resources/OrgGrants/no_paging";
        public static final String ResourceOrgResMetadataGrants = "/resources/Org_resource/{Org_res_id}/metadata";
        public static final String ResourceOrgRsMetadataGrant = "/resources/Org_resource/metadata/grant";
        /**
         * 资源报表分类
         */
        public static final String RsReportCategoryPrefix = "/resources/reportCategory/";
        public static final String RsReportCategory = "/resources/reportCategory/{id}";
        public static final String RsReportCategoryChildrenByPid = "/resources/reportCategory/getChildrenByPid";
        public static final String RsReportCategoryTree = "/resources/reportCategoryTree";
        public static final String RsReportCategoryComboTree = "/resources/reportCategoryComboTree";
        public static final String RsReportCategories = "/resources/reportCategories";
        public static final String RsReportCategorySave = "/resources/reportCategory/save";
        public static final String RsReportCategoryDelete = "/resources/reportCategory/delete";
        public static final String RsReportCategoryIsUniqueCode = "/resources/reportCategory/isUniqueCode";
        public static final String RsReportCategoryIsUniqueName = "/resources/reportCategory/isUniqueName";
        public static final String RsReportCategoryNoPageCategories = "/resources/reportCategory/getAllCategories";
        public static final String RsReportCategoryByApp = "/resources/reportCategory/getAllCategoryByApp";
        public static final String RsReportCategoryByIds = "/resources/reportCategory/getAllCategoryByIds";
        public static final String RsReportCategoryIdsByCode = "/resources/reportCategory/getCategoryIdsByCode";
        /**
         * 资源报表分类和应用
         */
        public static final String RsReportCategoryAppDelete = "/resources/reportCategory/deleteCategoryApp";
        public static final String RsReportCategoryAppSave = "/resources/reportCategory/saveCategoryApp";
        public static final String GetRsReportCategoryApps = "/resources/reportCategory/getRsReportCategoryApps";
        /**
         * 资源报表监测分类
         */
        public static final String RsReportMonitorType = "/resources/rsReportMonitorType/{id}";
        public static final String RsReportMonitorTypeSave = "/resources/rsReportMonitorType/save";
        public static final String RsReportMonitorTypeDelete = "/resources/rsReportMonitorType/delete";
        public static final String RsReportMonitorTypeIsUniqueName = "/resources/rsReportMonitorType/isUniqueName";
        public static final String RsReportMonitorTypes = "/resources/rsReportMonitorType/getRsReportMonitorTypePage";
        public static final String RsReportMonitorTypesNoPage = "/resources/rsReportMonitorType/getRsReportMonitorTypeNoPage";
        public static final String RsReportMonitorTypesById = "/resources/rsReportMonitorType/getRsReportMonitorTypeById";
        public static final String RsReportByMonitorTypeId = "/resources/rsReportMonitorType/getRsReportByMonitorTypeId";
        /**
         * 资源报表监测类型配置报表
         */
        public static final String RsMonitorTypeReport = "/resources/monitorTypeReport";
        public static final String RsMonitorTypeReportByUserId = "/resources/monitorTypeReport/{user_id}";
        public static final String RsMonitorTypeReports = "/resources/monitorTypeReport";
        public static final String RsMonitorTypeReportsNoPage = "/resources/monitorTypeReport/noPage";
        /**
         * 资源报表
         */
        public static final String RsReportPrefix = "/resources/report/";
        public static final String RsReport = "/resources/report/{id}";
        public static final String RsReportFindByCode = "/resources/report/findByCode";
        public static final String RsReports = "/resources/reports";
        public static final String RsReportViewsTreeData = "/resources/report/viewsTreeData";
        public static final String RsReportSelectedViews = "/resources/report/selectedViews";
        public static final String RsReportSave = "/resources/report/save";
        public static final String RsReportDelete = "/resources/report/delete";
        public static final String RsReportIsUniqueCode = "/resources/report/isUniqueCode";
        public static final String RsReportIsUniqueName = "/resources/report/isUniqueName";
        public static final String RsReportNoPage = "/resources/report/getReportNoPage";
        public static final String RsReportTemplateContent = "/resources/report/getTemplateContent";
        public static final String RsReportIsCategoryApplied = "/resources/report/isCategoryApplied";
        public static final String RsReportByCategoryId = "/resources/report/getByCategoryId";
        public static final String GetPositionMapByCode = "/resources/report/getPositionMapByCode";
        public static final String GetRsReportByParam = "/resources/report/getRsReportByParam";
        public static final String QueryByUserId = "/open/resources/report/queryByUserId";
        public static final String QueryOtherReportByUserId = "/open/resources/report/queryOtherReportByUserId";
        public static final String SaveByUserId = "/open/resources/report/saveByUserId";
        /**
         * 资源报表视图配置
         */
        public static final String RsReportViews = "/resources/reportViews";
        public static final String RsReportViewSave = "/resources/reportView/save";
        public static final String RsReportViewExist = "/resources/reportView/exist";
        public static final String RsReportViewExistByResourceId = "/resources/reportView/existByResourceId";
        public static final String RsReportViewExistReport = "/resources/reportView/existReport";
        public static final String StatisticsGetDoctorsGroupByTown = "/resources/statistics/getDoctorsGroupByTown";
        //资源中心 - 统计相关
        public static final String GetPatientArchiveCount = "/resource/center/getPatientArchiveCount";
        public static final String GetMedicalResourcesCount = "/resource/center/getMedicalResourcesCount";
        public static final String GetHealthArchiveCount = "/resource/center/getHealthArchiveCount";
        public static final String GetElectronicCasesCount = "/resource/center/getElectronicCasesCount";
        public static final String GetHealthCardBindingAmount = "/resource/center/getHealthCardBindingAmount";
        public static final String GetInfoDistribution = "/resource/center/getInfoDistribution";
        public static final String GetNewSituation = "/resource/center/getNewSituation";
        public static final String GetOrgArchives = "/resource/center/getOrgArchives";
        public static final String GetMedicalStaffDistribution = "/resource/center/getMedicalStaffDistribution";
        public static final String GetMedicalStaffRatio = "/resource/center/getMedicalStaffRatio";
        public static final String GetCumulativeIntegration = "/resource/center/getCumulativeIntegration";
        public static final String GteTotallyToBeIntegrated = "resource/center/gteTotallyToBeIntegrated";
        public static final String GetArchiveSource = "/resource/center/getArchiveSource";
        public static final String GetArchiveDistribution = "/resource/center/getArchiveDistribution";
        public static final String GetStorageAnalysis = "/resource/center/getStorageAnalysis";
        public static final String GetElectronicMedicalSource = "/resource/center/getElectronicMedicalSource";
        public static final String GetElectronicMedicalOrgDistributed = "/resource/center/getElectronicMedicalOrgDistributed";
        public static final String GetElectronicMedicalDeptDistributed = "/resource/center/getElectronicMedicalDeptDistributed";
        public static final String GetElectronicMedicalAcquisitionSituation = "/resource/center/getElectronicMedicalAcquisitionSituation";
        //资源中心 - 大数据展示相关
        public static final String Achievements = "/resource/center/achievements";
        public static final String Visualization = "/resource/center/visualization";
        public static final String DataAnalysis = "/resource/center/dataAnalysis";
        public static final String HierarchicalManagement = "/resource/center/hierarchicalManagement";
    }
    /**
     * 档案查询接口
     */
    public static class Profiles {
        public static final String ProfileInfo = "/profile/baseInfo"; //基本信息
        public static final String PastHistory = "/profile/pastHistory"; //既往史 - mobile居民端
        public static final String PersonHistory = "/profile/personHistory"; //个人史
        public static final String AllergensHistory = "/profile/allergensHistory"; //过敏史
        public static final String FamilyHistory = "/profile/familyHistory"; //家族史
        public static final String HealthProblem = "/profile/healthProblem"; //主要健康问题
        public static final String HealthCondition = "/profile/healthCondition"; //历史健康情况
        public static final String MedicalEvents = "/profile/medicalEvents"; //门诊/住院事件(时间轴)
        public static final String RecentMedicalEvents = "/profile/recentMedicalEvents"; //最近就诊记录
        public static final String RecentVisits = "/profile/recentVisits"; //近期就诊
        public static final String RecentVisitsSub = "/profile/recentVisitsSub"; //近期就诊详情
        public static final String CDAClass = "/profile/cdaClass"; //cda分类
        public static final String CDAData = "/profile/cdaData"; //cda数据
        public static final String MedicationRecords = "/profile/medicationRecords"; //患者用药清单
        public static final String MedicationRecordsPage = "/profile/medicationRecordsPage"; //患者用药清单
        public static final String MedicationRanking = "/profile/medicationRanking"; //患者用药排行
        public static final String MedicationRankingWithTable = "/profile/medicationRankingWithTable"; //患者用药排行
        public static final String RecentMedicationSub = "/profile/recentMedicationSub"; //患者用药详情
        public static final String InspectionRecords = "/profile/inspectionRecords"; //检查检验记录
        public static final String InspectionStatistics = "/profile/inspectionStatistics"; //检查检验记录统计
        public static final String InspectionStatisticsOneSub = "/profile/inspectionStatisticsOneSub"; //检查检验记录子项详情(某次检验记录)
        public static final String InspectionStatisticsAllSub = "/profile/inspectionStatisticsAllSub"; //检查检验记录子项详情(相关检验全部记录)
        public static final String MotherhoodOverview = "/profile/motherhoodOverview"; //孕产概况
        // ------------------------------ 以上为已对接接口 ------------------------------
        public static final String ProfileLucene = "/profile/lucene"; //全文检索
        public static final String MedicalDisease = "/{demographic_id}/profile/medical_disease"; //就诊过疾病
        public static final String MedicalArea = "/{demographic_id}/profile/medical_area"; //就诊过区域
        public static final String MedicalYear = "/{demographic_id}/profile/medical_year"; //就诊过年份
        public static final String MedicationUsed = "/{demographic_id}/profile/medication_used"; //患者常用药(按次数)
        public static final String MedicalEvent = "/{event_no}/info"; //某次住院/门诊事件信息
        public static final String MedicationMaster = "/profile/medication/master"; //处方主表
        public static final String MedicationPrescription = "/profile/medication/prescription"; //处方笺
        public static final String MedicationDetail = "/profile/medication/detail/{prescription_no}"; //处方细表
        public static final String MedicationDetailChinese = "/profile/medication/detail/chinese"; //中药处方
        public static final String MedicationDetailWestern = "/profile/medication/detail/western"; //西药处方
        public static final String OutpatientDiagnosis = "/{demographic_id}/outpatient/diagnosis"; //门诊诊断
        public static final String OutpatientSymptom = "/{demographic_id}/outpatient/symptom"; //门诊症状
        public static final String OutpatientCostMaster = "/{demographic_id}/outpatient/cost/master"; //门诊费用汇总
        public static final String OutpatientCostDetail = "/{demographic_id}/outpatient/cost/detail"; //门诊费用明细
        public static final String HospitalizedDiagnosis = "/{demographic_id}/hospitalized/diagnosis"; //住院诊断
        public static final String HospitalizedSymptom = "/{demographic_id}/hospitalized/symptom"; //住院症状
        public static final String HospitalizedCostMaster = "/{demographic_id}/hospitalized/cost/master"; //住院费用汇总
        public static final String HospitalizedCostDetail = "/{demographic_id}/hospitalized/cost/detail"; //住院费用明细
        public static final String HospitalizedOrdersTemporary = "/{demographic_id}/hospitalized/orders/temporary"; //住院临时医嘱
        public static final String HospitalizedOrdersLongtime = "/{demographic_id}/hospitalized/orders/longtime"; //住院长期医嘱
        public static final String HospitalizedDeath = "/{demographic_id}/hospitalized/death"; //住院死因链情况
        public static final String CDADocumentId = "/profile/cda/document_id"; //cda模板(通过event_no + cda_type)
        public static final String CDADocument = "/{profile_id}/cda_document"; //完整CDA文档
        public static final String ExaminationReport = "/{demographic_id}/examination"; //检查报告单
        public static final String ExaminationImg = "/{demographic_id}/examination/img"; //检查报告单图片
        public static final String LaboratoryReport = "/{demographic_id}/laboratory"; //检验报告单
        public static final String LaboratoryImg = "/{demographic_id}/laboratory/img"; //检验报告单图片
        public static final String LaboratoryProject = "/{demographic_id}/laboratory/project"; //检验报告单项目
        public static final String LaboratoryAllergy = "/{demographic_id}/laboratory/allergy"; //检验药敏
        public static final String Surgery = "/{demographic_id}/surgery";//手术-手术记录
        public static final String IndicatorsClass = "/{demographic_id}/indicators/class"; //获取某个健康问题指标
        public static final String IndicatorsData = "/{demographic_id}/indicators/data"; //获取指标数据
    }
    public static class Families {
        public static final String Families = "/families";
        public static final String Family = "/families/{id}";
        public static final String FamiliesMembers = "/families/members";
        public static final String FamilyMembers = "/families/{families_id}/members";
        public static final String FamilyMember = "/families/{families_id}/members/{id_card_no}";
    }
    public static class Cipher {
        public static final String Encryption = "/cipher/encryption/{type}";
        public static final String Decryption = "/cipher/decryption/{type}";
    }
    public static class Apps {
        public static final String Apps = "/apps";
        public static final String AppsNoPage = "/apps/no_paging";
        public static final String getApp = "/app";
        public static final String App = "/apps/{app_id}";
        public static final String AppExistence = "/apps/{app_id}/existence";
        public static final String AppStatus = "/apps/{app_id}/status";
        public static final String AppNameExistence = "/app/{app_name}/existence";
        public static final String FilterList = "/apps/filterList";
        public static final String getAppTypeAndApps = "/getAppTypeAndApps";
        public static final String getApps = "/getApps";
        public static final String getDoctorAppsByType = "/getDoctorAppsByType";
        public static final String createAppRolesByAppId = "/createAppRolesByAppId";
        // ---------------- 开放平台 ----------------
        public static final String CheckField = "/app/checkField";
        public static final String CheckName = "/app/checkName";
        public static final String AppAuthClient = "/app/authClient";
        public static final String SimpleUpdate = "/app/simpleUpdate";
        //--------------- 医生工作平台 ---------------
        public static final String GetAppsRelationByUserIdAndParentAppId = "/app/getAppsByUserId";
        public static final String GetAppsRelationByUserJson = "/app/getAppsByUserJson";
        //--------------- 总支撑平台 ---------------
        public static final String SaveAppsRelation = "/app/saveAppsRelation";
        public static final String GetUserApp = "/app/role/get";
    }
    public static class AppApi {
        public static final String AppApis = "/appApi";
        public static final String AppApi = "/appApi/{id}";
        public static final String AppApisNoPage = "/appApiNoPage";
        public static final String AppApiSearch = "/appApi/search";
        public static final String AppApiAuth = "/appApiAuth";
        public static final String Save = "/appApi/save";
        public static final String Delete = "/appApi/delete";
        public static final String Update = "/appApi/update";
        public static final String Page = "/appApi/page";
        public static final String AuthList = "/appApi/authList";
        public static final String AuthApi = "/appApi/authApi";
        public static final String CheckName = "/appApi/checkName";
    }
    public static class AppApiCategory {
        public static final String Base = "/appApiCategory";
        public static final String Check = "/appApiCategory/check";
    }
    public static class AppApiErrorCode {
        public static final String Base = "/appApiErrorCode";
        public static final String CheckCode = "/appApiErrorCode/checkCode";
    }
    public static class AppFeature {
        public static final String AppFeatures = "/appFeature";
        public static final String FilterFeatureList = "/filterFeatureList";
        public static final String FilterFeatureNoPage = "/filterFeatureNoPage";
        public static final String FilterFeatureNoPageSorts = "/filterFeatureNoPageSorts";
        public static final String AppFeature = "/appFeature/{id}";
        public static final String FindAppMenus = "/appFeature/findAppMenus";
    }
    public static class AppVersion {
        public static final String FindAppVersion = "/appVersion/getAppVersion";
    }
    public static class AppApiParameter {
        public static final String AppApiParameters = "/appApiParameter";
        public static final String AppApiParameter = "/appApiParameter/{id}";
    }
    public static class AppApiResponse {
        public static final String AppApiResponses = "/appApiResponse";
        public static final String AppApiResponse = "/appApiResponse/{id}";
    }
    public static class UserApp {
        public static final String UserAppList = "/userAppList";
        public static final String UserAppShow = "/userApp/show";
        public static final String GetUserAppListById = "/userApp/getUserAppByAppId";
        public static final String CreateUserApp = "/userApp/createUserApp";
    }
    public static class Packages {
        public static final String Packages = "/packages";
        public static final String PackagesByFilter = "/packagesByFilter";
        public static final String Package = "/packages/{id}";
        public static final String Analyze = "/packages/analyze/{id}";
        public static final String Resolve = "/packages/resolve/{id}";
        public static final String Analyzes = "/packages/analyze";
        public static final String Resolves = "/packages/resolve";
        public static final String Status = "/packages/status";
        public static final String Search = "/packages/search";
        public static final String Download = "/packages/download/{id}";
        public static final String PackageCrypto = "/packages/crypto";
        public static final String Queue = "/packages/queue";
        public static final String UploadProvincialQueueSize = "/packages/queueSize/UploadProvincial";//上传省平台队列
        public static final String Migrate = "/packages/migrate";
    }
    //非病人维度
    public static class DatasetPackages {
        public static final String Packages = "/datasetPackages";
        public static final String AcquirePackage = "/datasetPackages/acquire";
        public static final String Package = "/datasetPackages/{id}";
        public static final String PackageResolve = "/datasetPackages/resolve";
        public static final String PackageSearch = "/datasetPackages/search";
        public static final String PackageDownloads = "/datasetPackages/{id}/downloads";
        public static final String ResolveMessage = "/datasetPackages/message/resolve";
        public static final String MessageTimer = "/datasetPackages/message/timer";
    }
    public static class PackageAnalyzer {
        public static final String Scheduler = "/packAnalyzer/scheduler";
        public static final String Status = "/packAnalyzer/status/{id}";
        public static final String DailyReport = "/packAnalyzer/dailyReport";
        public static final String List = "/packAnalyzer/list";
        public static final String FindByField = "/packAnalyzer/findByField";
        public static final String FindBySql = "/packAnalyzer/findBySql";
        public static final String EsSaveData = "/packAnalyzer/esSaveData";
        public static final String QcEmpty = "/packAnalyzer/qc/check/empty";
        public static final String QcType = "/packAnalyzer/qc/check/type";
        public static final String QcFormat = "/packAnalyzer/qc/check/format";
        public static final String QcValue = "/packAnalyzer/qc/check/value";
        public static final String UpdateStatus = "/packAnalyzer/updateStatus";
        public static final String Analyzer = "/packAnalyzer/analyzer";
    }
    public static class PackageResolve {
        public static final String Scheduler = "/resolve/scheduler";
        public static final String Resolve = "/resolve/{id}";
        public static final String Local = "/resolve/local/{id}";
        public static final String Fetch = "/resolve/fetch/{id}";
        public static final String Immediate = "/resolve/immediate";
        public static final String ArchiveRelation = "/resolve/archiveRelation"; //档案关联
    }
    public static class Patients {
        public static final String GetUserCards = "/getUserCards";// 就诊卡列表
        public static final String CardApply = "/patientCards/apply";     //卡认证申请
        public static final String CardList = "/patientCards/list";  //	个人账号列表
        public static final String CardApplyListManager = "/patientCards/manager/applyList";//	管理员--卡认证列表
        public static final String CardVerifyManager = "/patientCards/manager/verify";//	管理员--卡认证审核操作
        public static final String CardBindManager = "/patientCards/manager/bind";//	管理员--后台绑卡操作
        public static final String ArchiveRelationManager = "/patientCards/manager/archiveRelation";//	管理员--卡档案关联审核
        public static final String ArchiveApply = "/patientArchive/apply";//	档案认领申请(临时卡)
        public static final String ArchiveApplyList = "/patientArchive/applyList";//	个人档案认领列表
        public static final String ArchiveList = "/patientArchive/list";//个人档案列表
        public static final String ArchiveUnbind = "/patientArchive/unbind";//	管理员--通过卡号获取未认领档案
        public static final String ArchiveApplyListManager = "/patientArchive/manager/applyList";//	管理员--档案认领列表
        public static final String ArchiveVerifyManager = "/patientArchive/manager/verify";//	管理员--档案认领审核操作
        public static final String ArchiveRelation = "/patientArchive/archiveRelation";//新建档案关联
        public static final String GetArchiveList = "/patientArchive/getApplyList";//根据查询条件查询个人档案申请列表
        public static final String GetArchiveRelationList = "/patientArchive/getArRelationList";//根据查询条件查询个人档案申请列表
        public static final String GetArchiveRelation = "/patientArchive/{applyId}/getArRelation";//根据查询条件查询个人档案申请列表
        public static final String FindArchiveRelation = "/patient/findArchiveRelation";
        public static final String UpdateArchiveRelation = "/patient/updateArchiveRelation";
        public static final String DelArchiveRelation = "/patient/delArchiveRelation";
        public static final String MCardSave = "/medicalCards/save";// 就诊卡新增&保存
        public static final String MCardDel = "/medicalCards/del";//	就诊卡删除
        public static final String GetMCard = "/medicalCards/get";//就诊卡详情
        public static final String GetMCards = "/getMedicalCards";//	就诊卡列表
        public static final String MCardCheckCardNo = "/medicalCards/checkCardNo";//	校验卡是否唯一
        public static final String MCardGetMutiCardNo = "/medicalCards/getMutiCard";//	获取重复的卡列表
        public static final String MCarddataBatch = "/medicalCards/batch";//	批量添加
        public static final String Authentications = "/patient/authentications";
        public static final String Authentication = "/patient/Authentication/{id}";
        /******************************* 旧接口 **********************************************************/
        public static final String ArApplications = "/archive/applications";
        public static final String ArApplication = "/archive/applications/{id}";
        public static final String ArRelations = "/archive/relations";
        public static final String ArRelation = "/archive/relation/{id}";
        public static final String ArRelationsExistence = "/archive/relations/existence";
        /******************************* 旧接口 **********************************************************/
    }
    public static class Authentication {
        public static final String AccessToken = "/oauth/accessToken";
        public static final String ValidToken = "/oauth/validToken";
        public static final String Login = "/oauth/login";
        public static final String Logout = "/oauth/logout";
        public static final String VerifyCode = "/oauth/verifyCode";
        public static final String VerifyCodeExpire = "/oauth/verifyCodeExpire";
        public static final String VerifyCodeValidate = "/oauth/verifyCodeValidate";
    }
    public static class MessageRemind {
        public static final String MessageRemind = "/messageRemind";
        public static final String MessageRemindTop = "/messageRemindTop";
        public static final String MessageRemindCount = "/messageRemindCount";
        public static final String MessageRemindAdmin = "/messageRemind/admin/{messageRemind_id}";
        public static final String MessageRemindReaded = "/messageRemind/readed/{remindId}";
        public static final String MessageRemindByType = "/MessageRemindByType";
        public static final String MessageReminInfodByType = "/MessageRemindInfoInfoByType";
        public static final String MessageRemindByNotifie = "/MessageRemindByNotifie";
        public static final String UpdateMessageRemindByNotifie = "/UpdateMessageRemindByNotifie";
        public static final String MessageRemindSatisfactionSurvey = "/MessageRemind/SatisfactionSurvey";
    }
    public static class Portal {
        public static final String Login = "/portal/login";
        public static final String UserAppList = "/portal/userApp/list";
        public static final String UserAppShow = "/portal/userApp/show";
        public static final String MessageRemind = "/portal/messageRemind";
        public static final String MessageRemindCount = "/portal/messageRemind/count";
        public static final String MessageRemindRead = "/portal/messageRemind/read/{remindId}";
        public static final String NoticesTop = "/portal/notices/top";
        public static final String Feedback = "/portal/feedback";
        public static final String ResourceTop = "/portal/resource/top";
        public static final String QuotaCategoryOfChild = "/portal/quotaCategoryOfChild";
        public static final String TjQuotaWarn = "/portal/tj/tjQuotaWarn";
        public static final String Setting = "/portal/setting";
    }
    public static class PortalNotices {
        public static final String PortalNotices = "/portalNotices";
        public static final String PortalNoticesTop = "/portalNoticesTop";
        public static final String PortalNoticeAdmin = "/portalNotices/admin/{portalNotice_id}";
    }
    public static class PortalResources {
        public static final String PortalResources = "/portalResources";
        public static final String PortalResourcesTop = "/portalResourcesTop";
        public static final String PortalResourcesAdmin = "/portalResources/admin/{portalResources_id}";
    }
    public static class PortalFeedback {
        public static final String PortalFeedback = "/portalFeedback";
        public static final String PortalFeedbackAdmin = "/portalFeedback/admin/{portalFeedback_id}";
        public static final String PortalFeedBackByUserId = "/protalFeedback/findByUserId";
        public static final String pagePortalFeedback = "/pagePortalFeedback";
    }
    public static class PortalLogin {
        public static final String PortalLogin = "/login";
    }
    public static class PortalSetting {
        public static final String PortalSetting = "/portalSetting";
        public static final String PortalSettingTop = "/portalSettingTop";
        public static final String PortalSettingAdmin = "/portalSetting/admin/{portalSetting_id}";
    }
    public static class PortalStandards {
        public static final String PortalStandards = "/portalStandards";
        public static final String PortalStandardsAdmin = "/portalStandards/admin/{portalStandard_id}";
    }
    public static class Securities {
        public static final String UserKey = "/securities/users/{user_id}/key";
        public static final String UserKeyId = "/securities/users/{user_id}/key/id";
        public static final String UserPublicKey = "/securities/users/{user_id}/key/public";
        public static final String UserTokens = "/securities/users/{user_id}/tokens";
        public static final String UserToken = "/securities/users/{user_id}/tokens/{token_id}";
        public static final String OrganizationKey = "/securities/organizations/{org_code}/key";
        public static final String OrganizationPublicKey = "/securities/organizations/{org_code}/key/public";
        public static final String ClientTokens = "/securities/clients/{client_id}/tokens";
        public static final String Keys = "/securities/keys/{id}";
        public static final String deleteOrgKey = "/securities/org/keys/{org_code}";
        public static final String deleteUserKey = "/securities/user/keys/{user_id}";
        public static final String Tokens = "/securities/tokens/{id}";
    }
    public static class Standards {
        public static final String Caches = "/std/caches";
        public static final String Cache = "/std/caches/{version}";
        public static final String Sources = "/std/sources";
        public static final String NoPageSources = "/std/sources/no_paging";
        public static final String Source = "/std/sources/{id}";
        public static final String IsSourceCodeExist = "/std/sources/code_is_exist";
        public static final String NoPageTypes = "/std/types/no_paging";
        public static final String Types = "/std/types";
        public static final String Type = "/std/types/{id}";
        public static final String TypesCodeExistence = "/std/type/code/existence";
        public static final String TypeChildren = "/std/types/parent_id/childrens";
        public static final String TypesChildren = "/std/types/childrens";
        public static final String TypeList = "/cda_types/code_name";
        public static final String TypeParent = "/std/types/parent";
        public static final String TypeOther = "/std/types/{id}/other";
        public static final String Versions = "/std/versions";
        public static final String Version = "/std/versions/{version}";
        public static final String VersionInStageExist = "/std/versions/in_stage/existence";
        public static final String VersionCache = "/std/versions/{version}/cache";
        public static final String VersionNameExistence = "/std/version/name/existence";
        public static final String VersionBackStage = "/std/versions/{version}/back";
        public static final String VersionCommit = "/std/versions/{version}/commit";
        public static final String VersionRevert = "/std/versions/{version}/revert";
        public static final String VersionLatest = "/std/versions/latest";
        public static final String VersionLatestExistence = "/std/versions/{version}/latest/existence";
        public static final String Documents = "/std/documents";
        public static final String DocumentNoPage = "/std/document/noPage";
        public static final String Document = "/std/documents/{id}";
        public static final String DocumentList = "/std/documentsList";
        public static final String DocumentFileExistence = "/std/documents/{id}/file/existence";
        public static final String DocumentCreateFile = "/std/documents/{id}/file/create";
        public static final String DocumentGetFile = "/std/documents/{id}/file";
        public static final String DocumentDataSet = "/std/documents/data_set";
        public static final String DocumentDataSetList = "/std/documents/data_set_list";
        public static final String DataSetRelationships = "/std/documents/data_set_relationships";
        public static final String DataSetRelationshipsNoPage = "/std/documents/data_set_relationships/noPage";
        public static final String DataSetRelationship = "/std/documents/data_set_relationships/{id}";
        public static final String Dictionaries = "/std/dictionaries";
        public static final String NoPageDictionaries = "/std/dictionaries/no_paging";
        public static final String Dictionary = "/std/dictionaries/{id}";
        public static final String DictionaryCode = "/std/dictionaries/code";
        public static final String MetaDataWithDict = "/std/data_set/{data_set_id}/meta_datas/{meta_data_id}/dictionaries";
        public static final String DictCodeIsExist = "/std/dictionaries/is_exist/code";
        public static final String DictOther = "/std/dictionaries/{id}/other";
        public static final String DictParent = "/std/dictionaries/{id}/parent";
        public static final String DictCodesExistence = "/dict/codes/existence";
        public static final String DictEntryBatch = "/dict/entry/batch";
        public static final String Entry = "/std/dictionaries/entries/{id}";
        public static final String Entries = "/std/dictionaries/entries";
        public static final String EntriesWithDictionary = "/std/dictionary/{dict_id}/entries";
        public static final String EntryCodeIsExist = "/std/dictionaries/entries/is_exist/code";
        public static final String DataSets = "/std/data_sets";
        public static final String NoPageDataSets = "/std/data_sets/no_paging";
        public static final String DataSet = "/std/data_sets/{id}";
        public static final String DataSetsName = "/std/data_sets/name";
        public static final String DataSetCodeIsExist = "/std/data_set/is_exist/code";
        public static final String DataSetsIds = "/std/{ids}data_sets";
        public static final String DataSetsBatch = "/std/data_set/bacth";
        public static final String GetDataSetByCode = "/std/data_set/getDataSetByCode";
        public static final String MetaDatas = "/std/data_sets/meta_datas";
        public static final String MetaData = "/std/data_sets/meta_datas/{id}";
        public static final String MetaDataCodeExistence = "/std/data_sets/{data_set_id}/meta_data/inner_code/existence";
        public static final String MetaDataNameExistence = "/std/data_sets/{data_set_id}/meta_data/name/existence";
        public static final String MetaDatasName = "/std/data_sets/meta_datas/name";
        public static final String MetaDatasWithDataSet = "/std/data_sets/{data_set_id}/meta_datas";
        public static final String DispatchLogs = "/std/dispatches/logs";
        public static final String Dispatch = "/std/dispatches/{id}";
        public static final String Dispatches = "/std/dispatches";
        public static final String AdaptMeta = "/std/adapt/meta";
        public static final String AdaptDict = "/std/adapt/dict";
    }
    public static class Doctors {
        public static final String Doctors = "/doctors";
        public static final String DoctorsExistence = "/doctors/{doctor_code}/existence";
        public static final String DoctorAdmin = "/doctors/admin/{doctor_id}";
        public static final String DoctorByIdCardNo = "/doctor/{idCardNo}";
        public static final String DoctorPhoneExistence = "/doctor/phone/existence";
        public static final String DoctorBatch = "/doctor/batch";
        public static final String DoctorOnePhoneExistence = "/doctor/onePhone/existence";
        public static final String DoctorEmailExistence = "/doctor/email/existence";
        public static final String DoctorsIdCardNoExistence = "/doctors/{doctor_idCardNo}/CardNoExist";
        public static final String DoctoridCardNoExistence = "/doctor/idCardNo/existence";
        public static final String DoctorOnlyUpdateD = "/doctors/updateOnlyDoctor";
    }
    public static class Users {
        public static final String Users = "/users";
        public static final String UsersOfApp = "/usersOfApp";
        public static final String User = "/users/{user_name}";
        public static final String UserExistence = "/users/{user_name}/existence";
        public static final String UserVerification = "/users/verification";
        public static final String UserAdmin = "/users/admin/{user_id}";
        public static final String UserAdminPassword = "/users/admin/{user_id}/password";
        public static final String UserAdminPasswordReset = "/users/admin/{user_id}/password_reset";
        public static final String UserAdminKey = "/users/admin/{user_id}/key";
        public static final String UserAdminContact = "/users/admin/{user_id}/contact";
        public static final String UserIdCardNoExistence = "/user/id_card_no/existence";
        public static final String UserEmailNoExistence = "/user/email/existence";
        public static final String UserTelephoneNoExistence = "/user/telephone/existence";
        public static final String UserPhoneExistence = "/user/phone/existence";
        public static final String UserOnePhoneExistence = "/user/onePhone/existence";
        public static final String UserEmailExistence = "/user/email/existence";
        public static final String UseridCardNoExistence = "/user/idCardNo/existence";
        public static final String UserByIdCardNo = "/user/idCardNo/userByIdCardNo";
        public static final String UpdateSystemUser = "/updateSystemUser";
        public static final String GetOrgAndDeptRelation = "/users/getOrgAndDeptRelation";
        public static final String InitializeSystemUser = "/users/initialize";
        public static final String UsersByTel = "/users/tel";
        public static final String H5Handshake = "/users/h5/handshake";
        public static final String UsersOfAppPhoneExistence = "/usersOfApp/user/onePhone/existence";
        public static final String GetUserOfUsersOfApp = "/usersOfApp/users/getUserOfUsersOfApp";
        public static final String GetUserInfoAndRolesByUserIdOrCode = "/users/orgDeptMember/getUserInfoAndRolesByUserIdOrCode";
        public static final String Save = "/users/save";
        public static final String Update = "/users/update";
        public static final String Check = "/users/check";
        public static final String ChangePassword = "/users/changePassword";
        public static final String DistributeSecurityKey = "/users/distributeSecurityKey";
        public static final String GetSecurityKey = "/users/getSecurityKey";
        public static final String changePasswordByTelephone = "/usersOfApp/users/changePasswordByTelephone";
        public static final String changePasswordByOldPassword = "/users/changePasswordByOldPassword";
        public static final String updateUserTelePhone = "/users/updateTelephone";
        public static final String initializationAuthorization = "/users/initializationAuthorization";
    }
    public static class TelVerification {
        public static final String TelVerificationMsgSendMsg = "/usersOfApp/msg/sendMsg";
        public static final String TelVerificationMsgValidate = "/usersOfApp/msg/validate";
    }
    public static class Roles {
        public static final String Role = "/roles/role";
        public static final String RoleId = "/roles/role/{id}";
        public static final String Roles = "/roles/roles";
        public static final String RolesNoPage = "/roles/roles/no_page";
        public static final String RoleNameExistence = "/roles/name/existence";
        public static final String RoleCodeExistence = "/roles/code/existence";
        public static final String RoleBatchAdd = "/roles/roleBatchAdd";
        public static final String RoleFindByField = "/roles/findByField";
        public static final String RoleFindByUserId = "/roles/findByUserId";
        public static final String RoleFindByUserIdAndAppId = "/roles/findByUserIdAndAppId";
        public static final String RoleUser = "/roles/role_user";
        public static final String RoleUserByUserId = "/roles/role_user/{user_id}";
        public static final String RoleUsers = "/roles/role_users";
        public static final String RoleUsersNoPage = "/roles/role_users/no_page";
        public static final String NoPageCategoriesAndReport = "/roles/report/getCategoryAndReportNoPage";
        public static final String RoleOrg = "/roles/role_org";
        public static final String RoleOrgs = "/roles/role_orgs";
        public static final String RoleOrgsNoPage = "/roles/role_orgs/no_page";
        public static final String RoleFeature = "/roles/role_feature";
        public static final String RoleFeatureId = "/roles/role_feature/{id}";
        public static final String RoleFeatureByRoleId = "/roles/role_feature/role_id";
        public static final String RoleFeatures = "/roles/role_features";
        public static final String RoleFeaturesNoPage = "/roles/role_features/no_page";
        public static final String RoleFeatureExistence = "/roles/role_feature/existence";
        public static final String HasPermission = "/roles/role_feature/hasPermission";
        public static final String RoleApp = "/roles/role_app";
        public static final String RoleAppId = "/roles/role_app/{id}";
        public static final String RoleApps = "/roles/role_apps";
        public static final String RoleAppsNoPage = "/roles/role_apps/no_paging";
        public static final String RoleApi = "/roles/role_api";
        public static final String RoleApiId = "/roles/role_api/{id}";
        public static final String RoleApiByRoleId = "/roles/role_api/role_id";
        public static final String RoleApis = "/roles/role_apis";
        public static final String RoleApisNoPage = "/roles/role_apis/no_paging";
        public static final String RoleApisExistence = "/roles/role_api/existence";
        public static final String BatchAddRoleReportRelation = "/roles/role_report/batchAddRoleReportRelation";
        public static final String DeleteRoleReportRelationByRoleId = "/roles/role_report/deleteByRoleId";
        public static final String SearchRoleReportRelation = "/roles/role_report/search";
        public static final String SearchRoleReportRelationNoPage = "/roles/role_report/searchNoPage";
        public static final String SearchRoleReportRelationIsReportAccredited = "/roles/role_report/isReportAccredited";
        public static final String ClientRole = "/roles/clientRole";
        public static final String RoleUserTypeInit = "/roles/usertype/init";
        public static final String RoleUserTypeUpdate = "/roles/usertype/update";
        public static final String UserOrgRela = "/user/org/relation";
        public static final String CreateUserType = "/user/usertype";
        public static final String SearchUserType = "/user/searchUserType";
        public static final String UpdateUserType = "/user/updateUserType";
        public static final String GetUserTypeRoles = "/user/usertype/roles";
        public static final String GetUserTypeById = "/user/getUserTypeById";
        public static final String SaveUserTypeRoles = "/user/saveUserTypeRoles";
        public static final String ValidateUserType = "/user/validateUserType";
    }
    public static class HealthProfile {
        public static final String Profiles = "/health_profiles";
        public static final String ProfileSearch = "/health_profiles/search";
        public static final String Profile = "/health_profiles/{profile_id}";
        public static final String ProfileDocument = "/health_profiles/{profile_id}/documents/{document_id}";
        public static final String Diagnosis = "/health_profile/disease/diagnosis";
        public static final String MajorIssues = "/health_profile/disease/major_issues";
        public static final String Prescriptions = "/health_profile/prescriptions";
        public static final String Drugs = "/health_profile/drugs";
        public static final String Lis = "/health_profile/lis";
        public static final String PhysicalExam = "/health_profile/physical_examinations";
        public static final String PastHistories = "/health_profile/past_histories";
    }
    public static class ProfileTemplate {
        public static final String Templates = "/templates";
        public static final String TemplatesDownloads = "/templates/downloads";
        public static final String Template = "/templates/{id}";
        public static final String TemplateCtn = "/templates/{id}/content";
        public static final String TemplateTitleExistence = "/template/title/existence";
    }
    public static class SanofiSupport {
        public static final String PhysicSigns = "/sanofi/physic_signs";
    }
    public static class ArchiveSecurity {
        public static final String ArchivePrivate = "/archiveprivate/{userId}";
        public static final String ArchivePrivateRowKey = "/archiveprivate/{userId}/{rowKey}";
        public static final String ArchiveSecuritySetting = "/archivesecurity";
        public static final String ArchiveSecuritySettingUser = "/archivesecurity/{user_id}";
        public static final String ArchiveSecuritySettingKeyAuthen = "/archivesecurity/{user_id}/securitykey/authentication";
        public static final String ArchiveLogs = "/archivelogs";
        public static final String AuthorizeApps = "/authorizeapps";
        public static final String AuthorizeAppsId = "/authorizeapps/{id}";
        public static final String AuthorizeAppsSubjects = "/authorizeapps/subjects";
        public static final String AuthorizeAppsSubjectsId = "/authorizeapps/subjects/{id}";
        public static final String AuthorizeSubjects = "/authorizesubjects";
        public static final String AuthorizeSubjectsResources = "/authorizesubjects/{subjectId}/resources";
        public static final String AuthorizeDoctors = "/authorizedoctors";
        public static final String AuthorizeDoctorsId = "/authorizedoctors/{id}";
        public static final String AuthorizeDoctorsIdAlteration = "/authorizedoctors/{id}/alteration";
        public static final String AuthorizeDoctorsIdAuthorization = "/authorizedoctors/{id}/authorization";
        public static final String MessageReplyTempates = "/messagereplytemplates";
        public static final String MessageTempates = "/messagetemplates";
        public static final String MessageTempatesCode = "/messagetemplates/{messageTempCode}";
        public static final String MessageSend = "/messagesend";
        public static final String MessageSendId = "/messagesend/{id}";
        public static final String MessageReply = "/messagereply";
    }
    /**
     * 病历夹接口
     */
    public static class MedicalRecords {
        //公用接口
        public static final String SystemAccess = "/medicalRecords/systemAccess"; //系统接入接口,通过单点登录获取最新病历
        public static final String SystemDict = "/medicalRecords/systemDict";
        public static final String SystemDictEntry = "/medicalRecords/systemDictEntry"; //获取系统字典项
        public static final String ICD10Dict = "/medicalRecords/icd10Dict"; //获取ICD10字典
        public static final String ImgList = "/medicalRecords/imgList"; //图片列表
        //病历接口
        public static final String AddRecord = "/medicalRecords/record/addRecord"; //新增病历
        public static final String MedicalRecordRelated = "/medicalRecords/record/related"; //	病历关联记录
        public static final String MedicalRecord = "/medicalRecords/record/{record_id}"; //	病历信息管理
        public static final String MedicalInfo = "/medicalRecords/record/{record_id}/medicalInfo"; //	病情信息管理
        public static final String MedicalLabel = "/medicalRecords/record/{record_id}/label"; //获取病历标签/批量保存病历标签
        public static final String MedicalReport = "/medicalRecords/record/{record_id}/report/{report_id}"; //获取某病历某报告
        public static final String MedicalReports = "/medicalRecords/record/{record_id}/reports"; //获取某病历某报告
        public static final String MedicalReportManage = "/medicalRecords/record/{record_id}/report"; //新增/修改/导入报告/删除报告
        public static final String ImportMedicalPrescription = "/medicalRecords/record/{record_id}/drug/import"; //导入处方
        public static final String MedicalDrug = "/medicalRecords/record/{record_id}/drug"; //新增/修改病历用药记录/删除病历用药记录/获取病历用药记录
        public static final String MedicalShare = "/medicalRecords/record/{record_id}/share"; //病历分享
        public static final String MedicalDiagnosis = "/medicalRecords/record/{record_id}/diagnosis";//病历诊断
        //医生接口
        public static final String DoctorInfo = "/medicalRecords/doctor/{doctor_id}"; //获取医生信息
        public static final String DoctorLabelClass = "/medicalRecords/doctor/{doctor_id}/labelClass"; //获取全部医生标签类别
        public static final String DoctorLabel = "/medicalRecords/doctor/{doctor_id}/label"; //获取医生标签
        public static final String DoctorTemplate = "/medicalRecords/doctor/{doctor_id}/template"; //获取医生模板/批量保存医生模板
        public static final String DoctorRecords = "/medicalRecords/doctor/{doctor_id}/records"; //获取医生病历
        public static final String DoctorText = "/medicalRecords/doctor/{doctor_id}/text"; //上传医生文本素材/获取医生文本素材
        public static final String DoctorTextDialog = "/medicalRecords/doctor/{doctor_id}/textDialog"; //获取医生文本对话
        public static final String DoctorImg = "/medicalRecords/doctor/{doctor_id}/img"; //上传医生图片素材/获取医生图片素材
        public static final String DoctorICD10 = "/medicalRecords/doctor/{doctor_id}/icd10"; //	获取医生ICD10
        public static final String DoctorInfoManage = "/medicalRecords/doctor/info"; //	新增医生信息/修改医生信息
        public static final String DoctorLabelClassManage = "/medicalRecords/doctor/labelClass"; //	新增医生标签类别/修改医生标签类别/删除医生标签类别
        //患者接口
        public static final String PatientInfo = "/medicalRecords/patient/{patient_id}/info"; //	获取患者基本信息
        public static final String PatientInfoManage = "/medicalRecords/patient/info"; //	新增患者信息/修改患者信息
        public static final String PatientRecords = "/medicalRecords/patient/{patient_id}/records"; //	获取患者病历
        public static final String PatientICD10 = "/medicalRecords/patient/{patient_id}/icd10"; //	获取患者ICD10
    }
    public static class DailyStatistics {
        //日常监测
        public static final String StatisticsProfile = "/statistics/profiles";
        public static final String StatisticsOutpatientHospital = "/statistics/outpatientHospital";
        public static final String StatisticsDailyReport = "/statistics/dailyReport";
        public static final String StatisticsDailyReportFiles = "/statistics/dailyReportFiles";
        //住院
        public static final String StatisticsHospitalization = "/statistics/hospitalization/{orgCode}";
        public static final String StatisticsHospitalizationDept = "/statistics/hospitalization/{orgCode}/dept";
        public static final String StatisticsHospitalizationSex = "/statistics/hospitalization/{orgCode}/sex";
        public static final String StatisticsHospitalizationDisease = "/statistics/hospitalization/{orgCode}/disease";
        //门诊
        public static final String StatisticsOutpatient = "/statistics/outpatient/{orgCode}";
        public static final String StatisticsOutpatientDept = "/statistics/outpatient/{orgCode}/dept";
        public static final String StatisticsOutpatientSex = "/statistics/outpatient/{orgCode}/sex";
        //入库统计
        public static final String StatisticsProfileCreateDate = "/statistics/profiles/createDate";
        public static final String StatisticsProfileEventDate = "/statistics/profiles/eventDate";
        public static final String StatisticsProfileIdNotNull = "/statistics/profiles/idNotNull";
        public static final String StatisticsProfileEventDateGroup = "/statistics/profiles/eventDateGroup";
    }
    /**
     * Redis服务
     */
    public static class Redis {
        //初始化缓存
        public static final String InitHealthProblem = "/redis/init/healthProblem";
        public static final String InitIcd10 = "/redis/init/icd10";
        public static final String InitOrgName = "/redis/init/orgName";
        public static final String InitOrgArea = "/redis/init/orgArea";
        public static final String InitVersions = "/redis/init/versions";
        public static final String InitOrgSaasArea = "/redis/init/orgSaasArea";
        public static final String InitOrgSaasOrg = "/redis/init/orgSaasOrg";
        public static final String InitRsAdapterMeta = "/redis/init/rsAdapterMeta/{id}";
        public static final String InitRsMetadataDict = "/redis/init/rsMetadataDict";
        public static final String InitAreaName = "/redis/init/areaName";
        //清除缓存
        public static final String Delete = "/redis/delete";
        //更新缓存
        public static final String UpdateOrgName = "/redis/update/orgName";
        public static final String UpdateOrgArea = "/redis/update/orgArea";
        public static final String UpdateOrgSaasArea = "/redis/update/orgSaasArea";
        public static final String UpdateOrgSaasOrg = "/redis/update/orgSaasOrg";
        //获取缓存数据
        public static final String HealthProblem = "/redis/healthProblem";
        public static final String Icd10Name = "/redis/icd10Name";
        public static final String Icd10ChronicInfo = "/redis/icd10ChronicInfo";
        public static final String Icd10HpCode = "/redis/icd10HpCode";
        public static final String OrgName = "/redis/orgName";
        public static final String OrgArea = "/redis/orgArea";
        public static final String OrgSaasArea = "/redis/orgSaasArea";
        public static final String OrgSaasOrg = "/redis/orgSaasOrg";
        //App前端Redis
        public static final String AppGetRedisValue = "/redis/getAppClientValue";
        public static final String AppSetRedisValue = "/redis/setAppClientValue";
        public static final String AppSetRedisJsonValue = "/redis/setAppClientJsonValue";
        public static final String AppDeleteRedisValue = "/redis/deleteAppClientValue";
        //资源化相关Redis
        public static final String RsAdapterMetadata = "/redis/rsAdapterMetaData";
        public static final String RsMetadataDict = "/redis/rsMetadataDict";
        //标准相关Redis
        public static final String StdVersion = "/redis/stdVersion";
        public static final String StdDataSetCode = "/redis/stdDataSetCode";
        public static final String StdDataSetName = "/redis/stdDataSetName";
        public static final String StdDataSetNameByCode = "/redis/stdDataSetNameByCode";
        public static final String StdDataSetMultiRecord = "/redis/stdDataSetMultiRecord";
        public static final String StdMetadataCodes = "/redis/stdMetadataCodes";
        public static final String StdMetadataName = "/redis/stdMetadataName";
        public static final String StdMetadataType = "/redis/stdMetaDataType";
        public static final String StdMetadataFormat = "/redis/stdMetaData/format";
        public static final String StdMetadataNullable = "/redis/stdMetaData/nullable";
        public static final String StdMetadataDict = "/redis/stdMetaDataDict";
        public static final String StdDictEntryValue = "/redis/stdDictEntryValue";
        public static final String StdDictEntryValueExist = "/redis/stdDictEntry/ValueExist";
        public static final String StdDictEntryCodeExist = "/redis/stdDictEntry/CodeExist";
        // Redis消息队列
        public static class MqChannel {
            public static final String Prefix = "/redis/mq/channel/";
            public static final String GetById = "/redis/mq/channel/{id}";
            public static final String Search = "/redis/mq/channel/search";
            public static final String Save = "/redis/mq/channel/save";
            public static final String Delete = "/redis/mq/channel/delete";
            public static final String IsUniqueChannel = "/redis/mq/channel/isUniqueChannel";
            public static final String IsUniqueChannelName = "/redis/mq/channel/isUniqueChannelName";
            public static final String IsExist = "/redis/mq/channel/isExist";
            public static final String SendMessage = "/redis/mq/channel/sendMessage";
        }
        // Redis消息订阅者
        public static class MqSubscriber {
            public static final String Prefix = "/redis/mq/subscriber/";
            public static final String GetById = "/redis/mq/subscriber/{id}";
            public static final String Search = "/redis/mq/subscriber/search";
            public static final String Save = "/redis/mq/subscriber/save";
            public static final String Delete = "/redis/mq/subscriber/delete";
            public static final String IsUniqueAppId = "/redis/mq/subscriber/isUniqueAppId";
            public static final String IsUniqueSubscribedUrl = "/redis/mq/subscriber/isUniqueSubscribedUrl";
            public static final String IsExist = "/redis/mq/subscriber/isExist";
            public static final String Unsubscribe = "/redis/mq/subscriber/unsubscribe";
        }
        // Redis消息发布者
        public static class MqPublisher {
            public static final String Prefix = "/redis/mq/publisher/";
            public static final String GetById = "/redis/mq/publisher/{id}";
            public static final String Search = "/redis/mq/publisher/search";
            public static final String Save = "/redis/mq/publisher/save";
            public static final String Delete = "/redis/mq/publisher/delete";
            public static final String IsUniqueAppId = "/redis/mq/publisher/isUniqueAppId";
        }
        // 缓存分类
        public static class CacheCategory {
            public static final String Prefix = "/redis/cache/category/";
            public static final String GetById = "/redis/cache/category/{id}";
            public static final String Search = "/redis/cache/category/search";
            public static final String SearchNoPage = "/redis/cache/category/searchNoPage";
            public static final String Save = "/redis/cache/category/save";
            public static final String Delete = "/redis/cache/category/delete";
            public static final String IsUniqueName = "/redis/cache/category/isUniqueName";
            public static final String IsUniqueCode = "/redis/cache/category/isUniqueCode";
        }
        // 缓存授权
        public static class CacheAuthorization {
            public static final String Prefix = "/redis/cache/authorization/";
            public static final String GetById = "/redis/cache/authorization/{id}";
            public static final String Search = "/redis/cache/authorization/search";
            public static final String Save = "/redis/cache/authorization/save";
            public static final String Delete = "/redis/cache/authorization/delete";
            public static final String IsUniqueAppId = "/redis/cache/authorization/isUniqueAppId";
        }
        // 缓存Key规则
        public static class CacheKeyRule {
            public static final String Prefix = "/redis/cache/keyRule/";
            public static final String GetById = "/redis/cache/keyRule/{id}";
            public static final String Search = "/redis/cache/keyRule/search";
            public static final String Save = "/redis/cache/keyRule/save";
            public static final String Delete = "/redis/cache/keyRule/delete";
            public static final String IsUniqueName = "/redis/cache/keyRule/isUniqueName";
            public static final String IsUniqueCode = "/redis/cache/keyRule/isUniqueCode";
            public static final String IsUniqueExpression = "/redis/cache/keyRule/isUniqueExpression";
        }
        // 缓存操作
        public static class CacheOperation {
            public static final String Get = "/redis/cache/operation/get";
            public static final String Set = "/redis/cache/operation/set";
            public static final String Remove = "/redis/cache/operation/remove";
        }
        // 缓存操作
        public static class CacheStatistics {
            public static final String GetCategoryKeys = "/redis/cache/statistics/getCategoryKeys";
            public static final String GetCategoryMemory = "/redis/cache/statistics/getCategoryMemory";
        }
        // 接收订阅消息
        public static class SubscribeMessage {
            public static final String ReceiveResponseTime = "/redis/subscribeMessage/receiveResponseTime";
        }
    }
    /**
     * 行政区划服务
     */
    public static class Geography {
        public static final String Address = "/geographies/{id}";//根据地址编号查询地址
        public static final String AddressCanonical = "geographies/{id}/canonical";//根据地址编号获取地址中文字符串全拼
        public static final String Geographies = "/geographies"; //地址增改查
        public static final String GeographiesDelete = "geographies/{id}";
        public static final String GeographiesNull = "/geographies/is_null";//判断是否是个空地址
        public static final String AddressDictByLevel = "/geography_entries/level/{level}";//根据等级查询行政区划地址
        public static final String AddressDictByPid = "/geography_entries/pid/{pid}";//根据上级编号查询行政区划地址
        public static final String AddressDict = "/geography_entries/{id}";//根据id查询行政区划地址
        public static final String AddressDictList = "/geography_entries_list";  //获取多条行政区划地址
        public static final String AddressDictAll = "/geography_entries/all";    //获取全部行政区划地址
        public static final String AddressDictByFields = "/geography_entries/getAddressDict";     //根据地址中文名 查询地址编号
        public static final String GetAddressNameByCode = "/geography/GetAddressNameByCode";     //根据地址中文名 查询地址编号
    }
    public static class Report {
        public static final String GetQcDailyReportList = "/report/getQcDailyReportList";
        public static final String QcDailyReport = "/report/qcDailyReport";
        public static final String GetEventDataReport = "/report/getEventDataReport";
        public static final String AddQcDailyReportDetailList = "/report/addQcDailyReportDetailList";
        public static final String AddOrUpdateQcDailyReportDetail = "/report/addorUpdateQcDailyReportDetail";
        public static final String GetQcDailyReportDetail = "/report/getQcDailyReportDetail";
        public static final String GetQcDailyReportPageList = "/report/getQcDailyReportPageList";
        public static final String GetJsonArchives = "/report/getGetJsonArchives";
        public static final String GetArchivesInfo = "/report/getArchivesInfo";
        public static final String GetQcDailyReportDatasetsList = "/report/getQcDailyReportDatasetsList";
        public static final String QcDailyReportDatasets = "/report/qcDailyReportDatasets";
        public static final String GetQcDailyReportDatasetList = "/report/getQcDailyReportDatasetList";
        public static final String QcDailyReportDataset = "/report/qcDailyReportDataset";
        public static final String AddQcDailyDatasetDetailList = "/report/addQcDailyDatasetDetailList";
        public static final String GetQcDailyReportMetadataList = "/report/getQcDailyReportMetadataList";
        public static final String QcDailyReportMetadata = "/report/qcDailyReportMetadata";
        public static final String AddQcDailyMetadataDetailList = "/report/addQcDailyMetadataDetailList";
        public static final String GetQcQuotaDictList = "/report/getQcQuotaDictList";
        public static final String QcQuotaDict = "/report/qcQuotaDict";
        public static final String GetQcQuotaResultList = "/report/getQcQuotaResultList";
        public static final String QcQuotaResult = "/report/qcQuotaResult";
        public static final String QcDailyReportReolve = "/report/qcDailyReportReolve";
        public static final String GetQcQuotaOrgIntegrity = "/report/getQcQuotaOrgIntegrity";
        public static final String GetQcQuotaIntegrity = "/report/getQcQuotaIntegrity";
        public static final String QcQuotaList = "/report/qcQuotaList";
        public static final String GetQcDailyIntegrity = "/report/getQcDailyIntegrity";
        public static final String GetQcOverAllIntegrity = "/report/getQcOverAllIntegrity";
        public static final String GetQcOverAllOrgIntegrity = "/report/getQcOverAllOrgIntegrity";
        public static final String GetQcQuotaDailyIntegrity = "/report/getQcQuotaDailyIntegrity";
        public static final String GetQcQuotaByLocation = "/report/getQcQuotaByLocation";
        public static final String QcDailyStatisticsStorage = "/report/qcDailyStatisticsStorage";
        public static final String QcDailyStatisticsStorageByDate = "/report/qcDailyStatisticsStorageByDate";
        public static final String QcDailyStatisticsIdentify = "/report/qcDailyStatisticsIdentify";
    }
    public static class TJ {
        public static final String GetTjDimensionMainList = "/tj/getTjDimensionMainList";
        public static final String TjDimensionMain = "/tj/tjDimensionMain";
        public static final String TjDimensionMainId = "/tj/tjDimensionMainId/{id}";
        public static final String TjDimensionMainCode = "/tj/tjDimensionMainCode";
        public static final String TjDimensionMainName = "/tj/tjDimensionMainName";
        public static final String GetTjDimensionMainInfoList = "/tj/getTjDimensionMainInfoList";
        public static final String GetTjDimensionSlaveList = "/tj/getTjDimensionSlaveList";
        public static final String TjDimensionSlaveId = "/tj/tjDimensionSlaveId/{id}";
        public static final String TjDimensionSlave = "/tj/tjDimensionSlave";
        public static final String TjDimensionSlaveCode = "/tj/tjDimensionSlaveCode";
        public static final String TjDimensionSlaveName = "/tj/tjDimensionSlaveName";
        public static final String GetTjDimensionSlaveInfoList = "/tj/getTjDimensionSlaveInfoList";
        public static final String GetTjDimensionSlaveByCode = "/tj/getTjDimensionSlaveByCode";
        public static final String GetTjQuotaDimensionMainList = "/tj/getTjQuotaDimensionMainList";
        public static final String TjQuotaDimensionMain = "/tj/tjQuotaDimensionMain";
        public static final String AddTjQuotaDimensionMain = "/tj/addTjQuotaDimensionMain";
        public static final String GetTjQuotaDimensionMainAll = "/tj/getTjQuotaDimensionMainAll";
        public static final String GetTjQuotaDimensionSlaveList = "/tj/getTjQuotaDimensionSlaveList";
        public static final String TjQuotaDimensionSlave = "/tj/tjQuotaDimensionSlave";
        public static final String AddTjQuotaDimensionSlave = "/tj/addTjQuotaDimensionSlave";
        public static final String GetTjQuotaDimensionSlaveAll = "/tj/getTjQuotaDimensionSlaveAll";
        public static final String DeleteSlaveByQuotaCode = "/tj/deleteSlaveByQuotaCode";
        public static final String GetDimensionSlaveByQuotaCode = "/tj/getDimensionSlaveByQuotaCode";
        public static final String GetTjQuotaSynthesiseDimension = "/tj/getTjQuotaSynthesiseDimension";
        public static final String GetTjQuotaSynthesiseDimensionKeyVal = "/tj/getTjQuotaSynthesiseDimensionKeyVal";
        public static final String GetTjQuotaChartList = "/tj/getTjQuotaChartList";
        public static final String GetTjQuotaLogList = "/tj/getTjQuotaLogList";
        public static final String GetTjQuotaLogRecentRecord = "/tj/getTjQuotaLogRecentRecord";
        public static final String GetTjDataSaveList = "/tj/getTjDataSaveList";
        public static final String AddTjDataSave = "/tj/addTjDataSave";
        public static final String DeleteTjDataSave = "/tj/deleteTjDataSave";
        public static final String GetTjDataSaveById = "/tj/getTjDataSaveById/{id}";
        public static final String GetTjDataSourceList = "/tj/getTjDataSourceList";
        public static final String AddTjDataSource = "/tj/addTjDataSource";
        public static final String DeleteTjDataSource = "/tj/deletetTjDataSource";
        public static final String GetTjDataSourceById = "/tj/getTjDataSourceById/{id}";
        public static final String TjDataSourceExistsName = "/tj/tjDataSourceExistsName/{name}";
        public static final String TjDataSourceExistsCode = "/tj/tjDataSourceExistsCode/{code}";
        public static final String GetTjQuotaDataSaveList = "tj/getTjQuotaDataSaveList";
        public static final String AddTjQuotaDataSave = "tj/addTjQuotaDataSave";
        public static final String DeleteTjQuotaDataSave = "tj/deleteTjQuotaDataSave";
        public static final String GetTjQuotaDataSourceList = "tj/getTjQuotaDataSourceList";
        public static final String AddTjQuotaDataSource = "tj/addTjQuotaDataSource";
        public static final String DeleteTjQuotaDataSource = "tj/deleteTjQuotaDataSource";
        public static final String GetTjQuotaList = "tj/getTjQuotaList";
        public static final String AddTjQuota = "tj/addTjQuota";
        public static final String UpdateTjQuota = "tj/updateTjQuota";
        public static final String DeleteTjQuota = "tj/deleteTjQuota";
        public static final String GetTjQuotaById = "tj/getTjQuotaById/{id}";
        public static final String TjQuotaExistsName = "/tj/tjQuotaExistsName/{name}";
        public static final String TjQuotaExistsCode = "/tj/tjQuotaExistsCode/{code}";
        public static final String GetTjQuotaByCode = "/tj/getTjQuotaByCode";
        public static final String TjQuotaConfigInfo = "/tj/quotaConfigInfo";
        public static final String TjHasConfigDimension = "/tj/hasConfigDimension";
        public static final String TjQuotaTypeIsExist = "/quota/type_isExist";
        public static final String TjDimensionMainIsExist = "/quota/TjDimensionMainIsExist";
        public static final String TjDimensionSlaveIsExist = "/quota/TjDimensionSlaveIsExist";
        public static final String TjQuotaBatch = "/tjQuota/batch";
        public static final String TjGetQuotaResult = "/tj/tjGetQuotaResult";
        public static final String TjGetOrgHealthCategoryQuotaResult = "/tj/tjGetOrgHealthCategoryQuotaResult";
        public static final String TjGetReportQuotaResult = "/tj/tjGetReportQuotaResult";
        public static final String TjQuotaExecute = "/job/execuJob";
        public static final String FirstExecuteQuota = "/job/firstExecuteQuota";
        public static final String FindByQuotaCodes = "/quota/findByQuotaCodes";
        public static final String TjQuotaRemove = "/job/removeJob";
        public static final String GetTjQuotaWarn = "tj/getTjQuotaWarn";
        public static final String GetQuotaReport = "tj/getQuotaReport";
        public static final String GetQuotaGraphicReportPreview = "tj/getQuotaGraphicReportPreview";
        public static final String GetMoreQuotaGraphicReportPreviews = "tj/getMoreQuotaGraphicReportPreviews";
        public static final String GetQuotaRadarGraphicReportPreviews = "tj/getQuotaRadarGraphicReportPreviews";
        public static final String GetQuotaNestedPieReportPreviews = "tj/getQuotaNestedPieReportPreviews";
        public static final String GetQuotaTotalCount = "tj/getQuotaTotalCount";
        public static final String GetQuotaGroupBy = "tj/getQuotaGroupBy";
        public static final String GetQuotaReportTwoDimensionalTable = "/tj/getQuotaReportTwoDimensionalTable";
        public static final String GetCostComposeReports = "/tj/getCostComposeReports";
        public static final String GetDeviceReports = "/tj/getDeviceReports";
        public static final String TjQuotaChart = "/tj/tjQuotaChart";
        public static final String BatchTjQuotaChart = "/tj/batchTjQuotaChart";
        public static final String TjQuotaChartId = "/tj/tjQuotaChart/{id}";
        public static final String GetAllTjQuotaChart = "/tj/getAllTjQuotaChart";
        public static final String getQuotaCategoryByName = "/quotaCategory/getQuotaCategoryByName";
        public static final String GetHeatMap = "/tj/getHeatMap";
        public static final String GetNumberOfDiabetes = "/tj/getNumberOfDiabetes";
        public static final String GetPieData = "/tj/getPieData";
        public static final String GetLineData = "/tj/getLineData";
        public static final String GetBarData = "/tj/getBarData";
        public static final String GetDiseaseTypeAnalysisInfo = "/tj/getDiseaseTypeAnalysisInfo";
        public static final String GetSexAnalysisInfo = "/tj/getSexAnalysisInfo";
        public static final String GetAgeAnalysisInfo = "/tj/getAgeAnalysisInfo";
        public static final String GetArchiveCount = "/tj/getArchiveCount";
        public static final String GetArchiveManCount = "/tj/getArchiveManCount";
        public static final String GetYearDropdownList = "/tj/getYearDropdownList";
        public static final String GetOftenIllList = "/tj/getOftenIllList";
        public static final String GetHighCostList = "/tj/getHighCostList";
        public static final String GetRepeateInspectList = "/tj/getRepeateInspectList";
        public static final String DrugAnalysis = "/tj/drugAnalysis";
        public static class Scheduler {
            public static final String ExtractMedicineExpense = "/tj/scheduler/extractMedicineExpense";
            public static final String ExtractChronicDisease = "/tj/scheduler/extractChronicDisease";
            public static final String ExtractPregnantWoman = "/tj/scheduler/extractPregnantWoman";
        }
    }
    public static class StasticReport {
        public static final String GetStatisticsElectronicMedicalCount = "/stasticReport/getStatisticsElectronicMedicalCount";
        public static final String GetStatisticsMedicalEventTypeCount = "/stasticReport/getStatisticsMedicalEventTypeCount";
        public static final String GetStatisticsDemographicsAgeCount = "/stasticReport/getStatisticsDemographicsAgeCount";
        public static final String GetArchiveReportInfo = "/stasticReport/getArchiveReportInfo";
        public static final String GetArchiveIdentifyReportInfo = "/stasticReport/getArchiveIdentifyReportInfo";
        public static final String GetArchiveHospitalReportInfo = "/stasticReport/getArchiveHospitalReportInfo";
        public static final String GetArchiveStatisticalReportInfo = "/stasticReport/getArchiveStatisticalReportInfo";
        public static final String GetArchiveTotalVisitReportInfo = "stasticReport/getArchiveTotalVisitReportInfo";
        public static final String getStatisticsUserCards = "/tj/getStatisticsUserCards";
        public static final String getStatisticsUserAgeByIdCardNo = "/tj/getStatisticsUserAgeByIdCardNo";
        public static final String getStatisticsDoctorByRoleType = "/tj/getStatisticsDoctorByRoleType";
        public static final String getStatisticsCityDoctorByRoleType = "/tj/getStatisticsCityDoctorByRoleType";
        public static final String GetArchiveReportAll = "/stasticReport/getArchiveReportAll";
        public static final String GetRecieveOrgCount = "/stasticReport/getRecieveOrgCount";
        public static final String GetArchivesInc = "/stasticReport/getArchivesInc";
        public static final String GetArchivesFull = "/stasticReport/getArchivesFull";
        public static final String GetArchivesTime = "/stasticReport/getArchivesTime";
        public static final String GetDataSetCount = "/stasticReport/getDataSetCount";
        public static final String GetArchivesRight = "/stasticReport/getArchivesRight";
        public static final String GetStasticByDay = "/stasticReport/getStasticByDay";
        public static final String GetErrorCodeList = "/stasticReport/getErrorCodeList";
    }
    public static class Org {
        public static final String getUserOrglistByUserId = "/org/getUserOrglistByUserId/";
        public static final String getUserOrgSaasByUserOrgCode = "/org/getUserOrgSaasByUserOrgCode/";
        public static final String GetOrgDeptsDate = "/org/getOrgDeptsDate";
        public static final String GetOrgDeptInfoList = "/org/userId/getOrgDeptInfoList";
        public static final String getseaOrgsByOrgCode = "/organizations/seaOrgsByOrgCode";
        public static final String ChildOrgSaasByAreaCode = "/org/childOrgSaasByAreaCode";
        public static final String getOrgCodeAndFullName = "/org/getOrgCodeAndFullName";
        public static final String getUserOrgCodelistByUserId = "/org/getUserOrgCodelistByUserId";
        // 卫生机构类别
        public static class HealthCategory {
            public static final String Prefix = "/org/healthCategory/";
            public static final String GetById = "/org/healthCategory/{id}";
            public static final String FindAll = "/org/healthCategory/findAll";
            public static final String Search = "/org/healthCategory/search";
            public static final String Save = "/org/healthCategory/save";
            public static final String Delete = "/org/healthCategory/delete";
            public static final String IsUniqueCode = "/org/healthCategory/isUniqueCode";
            public static final String IsUniqueName = "/org/healthCategory/isUniqueName";
        }
    }
    public static class GetInfo {
        public static final String GetAppIdsByUserId = "/BasicInfo/getAppIdsByUserId";
        public static final String GetIdCardNoByOrgCode = "/BasicInfo/getIdCardNoByOrgCode";
    }
    public static class Government {
        public static final String SearchGovernmentMenu = "/government/searchGovernmentMenu";
        public static final String GovernmentMenuCheckName = "/government/checkName";
        public static final String GovernmentMenuCheckCode = "/government/checkCode";
        public static final String GovernmentMenuById = "/government/detailById";
        public static final String AddGovernmentMenu = "/government/save";
        public static final String UpdateGovernmentMenu = "/government/update";
        public static final String AddGovernmentBrowseLog = "/governmentBrowseLog/save";
        public static final String searchGovernmentBrowseLog = "/governmentBrowseLog/searchByUserId";
        public static final String searchHotBrowseLog = "/governmentBrowseLog/searchHotBrowseLog";
        public static final String GovernmentMenuReportMonitorTypeSave = "/governmentMenuReportMonitorType/save";
        public static final String GovernmentMenuReportMonitorTypeDelete = "/governmentMenuReportMonitorType/delete";
        public static final String MonitorTypeList = "/governmentMenuReportMonitorType/MonitorTypeList";
        public static final String GetReportByMenuCode = "/governmentMenuReportMonitorType/getReportByMenuCode";
        //政府服务平台-门诊仪表盘-start
        public static final String OutpatientsBoardCount = "/government/outpatientsBoardCount";
        public static final String GetMonthDistribution = "/statistics/monthDistribution";
        public static final String GetRescue = "/statistics/rescue";
        //政府服务平台-门诊仪表盘-end
    }
    /**
     * 系统字典
     */
    public static class SystemDict {
        public static final String getDictEntryByDictId = "/systemDict/getDictEntryByDictId/{dictId}";
        public static final String Crud = "/dictionaries";
        public static final String FindById = "/dictionaries/{id}";
        public static final String FindByPhoneticCode = "/dictionary/{phoneticCode}";
        public static final String DeleteById = "/dictionaries/{id}";
        public static final String CheckName = "/dictionaries/existence";
        public static final String CheckCode = "/dictionaries/checkCode";
        public static final String GetDictEntryByDictIdAndEntryCode = "/open/dictionaries/getDictEntryByDictIdAndEntryCode";
        public static final String getDictEntryCodeAndValueByDictId = "/dictionaries/getDictEntryCodeAndValueByDictId";
    }
    /**
     * 应急指挥中心
     */
    public static class Emergency {
        // 救护车
        public static final String Ambulance = "/ambulance/findById";
        public static final String AmbulanceList = "/ambulance/list";
        public static final String AmbulanceSearch = "/ambulance/search";
        public static final String AmbulanceUpdateStatus = "/ambulance/updateStatus";
        public static final String AmbulanceSave = "/ambulance/save";
        public static final String AmbulanceUpdate = "/ambulance/update";
        public static final String AmbulanceDelete = "/ambulance/delete";
        public static final String AmbulanceIdOrPhoneExistence = "/ambulance/idOrPhoneExistence";
        public static final String AmbulancesBatch = "/ambulances/batch";
        // 出勤记录
        public static final String AttendanceSave = "/attendance/save";
        public static final String AttendanceUpdate = "/attendance/update";
        public static final String AttendanceEdit = "/attendance/edit";
        public static final String AttendanceList = "/attendance/list";
        public static final String AttendanceDelete = "/attendance/delete";
        public static final String AttendanceDetail = "/attendance/detail";
        public static final String AttendanceAnalysis = "/attendance/analysis";
        // 排班
        public static final String ScheduleList = "/schedule/list";
        public static final String ScheduleLevel = "/schedule/level";
        public static final String ScheduleSave = "/schedule/save";
        public static final String ScheduleUpdate = "/schedule/update";
        public static final String ScheduleBathUpdate = "/schedule/bathUpdate";
        public static final String ScheduleCleanData = "/schedule/cleanData";
        public static final String ScheduleBatch = "/schedules/batch";
        // 待命地点
        public static final String LocationList = "/location/list";
        public static final String LocationSave = "/location/save";
        public static final String LocationUpdate = "/location/update";
        public static final String LocationDelete = "/location/delete";
    }
    /**
     * 设备管理
     */
    public static class Device {
        public static final String FindById = "/device/findById";
        public static final String DeviceList = "/device/list";
        public static final String DeviceSave = "/device/save";
        public static final String DeviceUpdate = "/device/update";
        public static final String DeviceDelete = "/device/delete";
        public static final String DeviceBatch = "/device/batch";
    }
    public static class FastDFS {
        public static final String Upload = "/fastDfs/upload";
        public static final String OpenUpload = "/open/fastDfs/upload";
        public static final String OldUpload = "/fastDfs/oldUpload";
        public static final String OpenOldUpload = "/open/fastDfs/oldUpload";
        public static final String DeleteById = "/fastDfs/deleteById";
        public static final String DeleteByPath = "/fastDfs/deleteByPath";
        public static final String DeleteByObjectId = "/fastDfs/deleteByObjectId";
        public static final String FileInfo = "/fastDfs/fileInfo";
        public static final String DownloadById = "/fastDfs/downloadById";
        public static final String DownloadByPath = "/fastDfs/downloadByPath";
        public static final String DownloadByObjectId = "/fastDfs/downloadByObjectId";
        public static final String DownloadToLocal = "/fastDfs/downloadToLocal";
        public static final String GetFilePath = "/fastDfs/getFilePath";
        public static final String GetFileByDictEntry = "/open/fastDfs/getFileByDictEntry";
        public static final String Page = "/fastDfs/page";
        public static final String Status = "/fastDfs/status";
        public static final String GetPublicUrl = "/fastDfs/getPublicUrl";
        public static final String SetPublicUrl = "/fastDfs/setPublicUrl";
    }
    public static class ElasticSearch {
        public static final String Mapping = "/elasticSearch/mapping";
        public static final String Index = "/elasticSearch/index";
        public static final String Delete = "/elasticSearch/delete";
        public static final String DeleteByField = "/elasticSearch/deleteByField";
        public static final String Update = "/elasticSearch/update";
        public static final String FindById = "/elasticSearch/{id}";
        public static final String FindByField = "/elasticSearch/findByField";
        public static final String Page = "/elasticSearch/page";
        public static final String FindBySql = "/elasticSearch/findBySql";
        public static final String DateHistogram = "/elasticSearch/dateHistogram";
    }
    public static class OutpatientServiceStatistic {
        public static final String StatisticDeptOutpatientSum = "/outpatientServiceStatistic/statisticDeptOutpatientSum";
        public static final String StatisticDeptTransferTreatmentSum = "/outpatientServiceStatistic/statisticDeptTransferTreatmentSum";
    }
    public static class SingleDisease {
        public static final String GetDropdownList = "/singleDisease/getDropdownList";
        public static final String GetSymptomDetailData = "/singleDisease/getSymptomDetailData";
        public static final String GetMedicineDetailData = "/singleDisease/getMedicineDetailData";
    }
    /**
     * 后台配置问卷/满意度问题和选项
     */
    public static class SurveyAdminManage {
        public static final String GetSurveyTemplateList = "/admin/surveyTemplate/list";
        public static final String GetSurveyTemplateOptionsList = "/admin/surveyTemplate/options/list";
        public static final String SaveLabelInfo = "/admin/surveyTemplate/saveLabelInfo";
        public static final String SaveTemplate = "/admin/surveyTemplate/saveTemplate";
        public static final String GetTemplateLabel = "/admin/surveyTemplate/getTemplateLabel/{phoneticCode}";
        public static final String GetTemplateById = "/admin/surveyTemplate/getTemplateById";
        public static final String DelTemplate = "/admin/surveyTemplate/delTemplate";
        public static final String GetSurveyQuestionList = "/admin/surveyQuestion/list";
        public static final String SaveSurveyQuestion = "/admin/surveyQuestion/save";
        public static final String GetQuestionById = "/admin/surveyQuestion/getById";
        public static final String GetQuestionsByIds = "/admin/surveyQuestion/getByIds";
        public static final String DelQuestion = "/admin/surveyQuestion/delQuestion";
        public static final String DelQuestions = "/admin/surveyQuestion/delQuestions";
        public static final String updateQuestion = "/admin/surveyQuestion/update";
    }
    /**
     * 居民填写满意度
     */
    public static class Questionnaire {
        public static final String GetAllQuestionsByTemplateCode = "/questionnaire/getAllQuestionsByTemplateCode";
        public static final String SaveAnswer = "/questionnaire/saveAnswer";
    }
    /**
     * 转发福州总部开放平台接口相关
     */
    public static class Fz {
        public static final String OpenApi = "/fz/open/api";
        public static final String InnerApi = "/fz/inner/api";
    }
    /**
     * APP消息推送接口
     */
    public static class AppPushMessage {
        public static final String single = "/AppPushMessage/single";
        public static final String list = "/AppPushMessage/list";
        public static final String app = "/AppPushMessage/app";
        public static final String tarns = "/AppPushMessage/tarnsmission";
        public static final String findClientId = "/AppPushMessage/findClientId";
        public static final String findClientIdList = "/AppPushMessage/findClientIdList";
        public static final String updateClientId = "/AppPushMessage/updateClientId";
    }
    /**
     * 预约-挂号单
     */
    public static class Registration {
        public static final String Prefix = "/appointment/registration/";
        public static final String GetById = "/appointment/registration/{id}";
        public static final String GetByOrderId = "/appointment/registration/orderId/{orderId}";
        public static final String Search = "/appointment/registration/search";
        public static final String Save = "/appointment/registration/save";
        public static final String Update = "/appointment/registration/update";
        public static final String Delete = "/appointment/registration/delete";
        public static final String UpdateState = "/appointment/registration/updateState";
        public static final String IsSuccessfullyRegister = "/appointment/registration/isSuccessfullyRegister";
    }
    /**
     * 组合福州总部的预约挂号接口为我方需要的数据结构
     */
    public static class FzCombination {
        public static final String FindHospitalList = "/open/appointment/combination/findHospitalList";
        public static final String FindDoctorList = "/open/appointment/combination/findDoctorList";
    }
    /**
     * 账号相关
     */
    public static class AccountRepresentation {
        public static final String SaveAccontRepresenetation = "/account/save";
        public static final String GetRandomImageCode = "/account/getRandomImageCode";
        public static final String CheckRandomImageCode = "/account/checkRandomImageCode";
        public static final String findUserByPhoneOrName = "/account/findUserByPhoneOrName";
        public static final String ChangePassWord = "/account/changePassWord";
    }
    public class MessageTemplate {
        public static final String MessageTemplateAdmin = "/messageTemplate/admin/{messageTemplateId}";
        public static final String MessageTemplate = "/messageTemplate";
        public static final String MyMessageList = "/messageTemplate/MyMessageList";
        public static final String MyMessage = "/messageTemplate/MyMessage/admin/{messageId}";
        public static final String MessageOrderPush = "/messageTemplate/messageOrderPush";
    }
    /**
     * 数据质量监控
     */
    public static class DataQuality {
        public static final String PaltformReceiveWarningList = "/dataQuality/warningSetting/receiveWarningList";
        public static final String PaltformReceiveWarningAdd = "/dataQuality/warningSetting/receiveWarningAdd";
        public static final String PaltformReceiveWarningDel = "/dataQuality/warningSetting/receiveWarningDel";
        public static final String PaltformReceiveWarningUpd = "/dataQuality/warningSetting/receiveWarningUpd";
        public static final String PaltformReceiveWarning = "/dataQuality/warningSetting/receiveWarning/{id}";
        public static final String PaltformReceiveWarningIsExist = "/dataQuality/warningSetting/receiveWarningIsExist";
        public static final String PaltformReceiveWarningDefault = "/dataQuality/warningSetting/receiveWarningDefault";
        public static final String PaltformResourceWarningList = "/dataQuality/warningSetting/resourceWarningList";
        public static final String PaltformResourceWarningAdd = "/dataQuality/warningSetting/resourceWarningAdd";
        public static final String PaltformResourceWarningDel = "/dataQuality/warningSetting/resourceWarningDel";
        public static final String PaltformResourceWarningUpd = "/dataQuality/warningSetting/resourceWarningUpd";
        public static final String PaltformResourceWarning = "/dataQuality/warningSetting/resourceWarning/{id}";
        public static final String PaltformUploadWarningList = "/dataQuality/warningSetting/uploadWarningList";
        public static final String PaltformUploadWarningAdd = "/dataQuality/warningSetting/uploadWarningAdd";
        public static final String PaltformUploadWarningDel = "/dataQuality/warningSetting/uploadWarningDel";
        public static final String PaltformUploadWarningUpd = "/dataQuality/warningSetting/uploadWarningUpd";
        public static final String PaltformUploadWarningIsExist = "/dataQuality/warningSetting/uploadWarningIsExist";
        public static final String PaltformUploadWarning = "/dataQuality/warningSetting/uploadWarning/{id}";
        public static final String DatasetWarningList = "/dataQuality/warningSetting/datasetWarningList";
        public static final String ImportDatasetExcel = "/dataQuality/warningSetting/importDatasetExcel";
        public static final String DatasetWarningListNoPage = "/dataQuality/warningSetting/datasetWarningListNoPage";
        public static final String DatasetWarningAdd = "/dataQuality/warningSetting/datasetWarningAdd";
        public static final String DatasetWarningDel = "/dataQuality/warningSetting/datasetWarningDel";
        public static final String DatasetList = "/dataQuality/warningSetting/datasetList";
        public static final String Meta_datas = "/dataQuality/warningSetting/meta_datas";
        public static final String ReceivedPacketNumList = "/dataQuality/receivedPacket/packetNumList";
        public static final String ReceivedPacketReportData = "/dataQuality/receivedPacket/packetReportData";
        public static final String QualityMonitoringList = "/dataQuality/quality/qualityMonitoringList";
        public static final String ReceptionList = "/dataQuality/quality/receptionList";
        public static final String ReceiveDataset = "/dataQuality/quality/receiveDataset";
        public static final String QualityMonitorProvincePlatform = "/dataQuality/quality/platform";
        public static final String uploadRecordDetail = "/dataQuality/quality/uploadRecord";
        public static final String uploadRecordDetailPage = "/dataQuality/quality/uploadRecordPage";
        public static final String UploadDataSetList = "/dataQuality/quality/uploadDataSets";
        public static final String UploadDataSetListPage = "/dataQuality/quality/uploadDataSetsPage";
        public static final String UploadErrorList = "/dataQuality/quality/uploadError";
        public static final String UploadErrorListPage = "/dataQuality/quality/uploadErrorPage";
        public static final String WarningRecordList = "/dataQuality/warningRecord/warningRecordList";
        public static final String RealTimeMonitorList = "/dataQuality/warningRecord/realTimeMonitorList";
        public static final String WarningRecord = "/dataQuality/warningRecord/warningRecord/{id}";
        public static final String WarningRecordUpd = "/dataQuality/warningRecord/warningRecordUpd";
        public static final String WarningQuestionAnalyze = "/dataQuality/warningRecord/warningQuestionAnalyze";
        public static final String WarningQuestionJob = "/dataQuality/warningRecord/WarningQuestionJob";
        public static final String ExportWarningRecordToExcel = "/dataQuality/export/exportWarningRecordToExcel";
        public static final String ExportQualityMonitoring = "/dataQuality/export/exportQualityMonitoring";
        public static final String ExportReceptionList = "/dataQuality/export/exportReceptionList";
        public static final String ExportAnalyzeErrorList = "/dataQuality/export/exportAnalyzeErrorList";
        public static final String ExportMetadataErrorList = "/dataQuality/export/exportMetadataErrorList";
        public static final String ExportArchiveList = "/dataQuality/export/exportArchiveList";
        public static final String ExportUploadRecordList = "/dataQuality/export/exportUploadRecordList";
        public static final String ExportQualityMonitoringListToExcel = "/dataQuality/export/exportQualityMonitoringListToExcel";
        public static final String ExportQualityUpload = "/dataQuality/export/exportQualityUpload";
        //首页相关
        public static final String HomeSummary = "/dataQuality/home/recordList";
        public static final String HomeAreaDataList = "/dataQuality/home/areaDataList";
        public static final String HomeOrgDataList = "/dataQuality/home/orgDataList";
        public static final String HomeDatasetError = "/dataQuality/home/datasetError";
        public static final String HomeMetadataError = "/dataQuality/home/metadataError";
        public static final String HomeCompleteAnalyze = "/dataQuality/home/completeAnalyze";
        public static final String HomeCorrectAnalyze = "/dataQuality/home/correctAnalyze";
        public static final String HomeInTimeAnalyze = "/dataQuality/home/inTimeAnalyze";
        public static final String HomeTrend = "/dataQuality/home/trend";
        //app端相关
        public static final String HomeHealthArchiveTrend = "/dataQuality/home/healthArchiveTrend";
    }
    /**
     * 质控相关
     */
    public class PackQcReport {
        public static final String dailyReport = "/packQcReport/dailyReport";
        public static final String datasetWarningList = "/packQcReport/datasetWarningList";
        public static final String resourceSuccess = "/packQcReport/resourceSuccess";
        public static final String resourceSuccessPage = "/packQcReport/resourceSuccessPage";
        public static final String archiveReport = "/packQcReport/archiveReport";
        public static final String dataSetList = "/packQcReport/dataSetList";
        public static final String dataSetListPage = "/packQcReport/dataSetListPage";
        public static final String archiveFailed = "/packQcReport/archiveFailed";
        public static final String archiveFailedPage = "/packQcReport/archiveFailedPage";
        public static final String metadataError = "/packQcReport/metadataError";
        public static final String metadataErrorPage = "/packQcReport/metadataErrorPage";
        public static final String analyzeErrorList = "/packQcReport/analyzeErrorList";
        public static final String metadataErrorList = "/packQcReport/metadataErrorList";
        public static final String metadataErrorDetail = "/packQcReport/metadataErrorDetail";
        public static final String archiveList = "/packQcReport/archiveList";
        public static final String archiveDetail = "/packQcReport/archiveDetail";
        public static final String uploadRecordList = "/packQcReport/uploadRecordList";
        public static final String uploadRecordDetail = "/packQcReport/uploadRecordDetail";
    }
    // 政府服务平台首页
    public static class GovFirsPage {
        // 政府服务平台首页 - 指标分类
        public static class QuotaCategory {
            public static final String Prefix = "/govFirstPage/quotaCategory";
            public static final String GetById = "/govFirstPage/quotaCategory/{id}";
            public static final String Search = "/govFirstPage/quotaCategory/search";
            public static final String Save = "/govFirstPage/quotaCategory/save";
            public static final String Delete = "/govFirstPage/quotaCategory/delete";
            public static final String IsUniqueCode = "/govFirstPage/quotaCategory/isUniqueCode";
            public static final String IsUniqueName = "/govFirstPage/quotaCategory/isUniqueName";
        }
        // 政府服务平台首页 - 指标展示管理
        public static class QuotaVisibility {
            public static final String Prefix = "/govFirstPage/quotaVisibility";
            public static final String GetById = "/govFirstPage/quotaVisibility/{id}";
            public static final String Search = "/govFirstPage/quotaVisibility/search";
            public static final String Save = "/govFirstPage/quotaVisibility/save";
            public static final String Delete = "/govFirstPage/quotaVisibility/delete";
            public static final String IsUniqueCode = "/govFirstPage/quotaVisibility/isUniqueCode";
            public static final String IsUniqueName = "/govFirstPage/quotaVisibility/isUniqueName";
            public static final String UpdateStatus = "/govFirstPage/quotaVisibility/updateStatus";
            public static final String GetCategoryQuotaList = "/govFirstPage/quotaVisibility/getCategoryQuotaList";
        }
        // 政府服务平台首页 - 报表接口
        public static class Report {
            public static final String CountEmergencyAttendance = "/govFirstPage/report/countEmergencyAttendance";
            public static final String CountHospitalizationAttendance = "/govFirstPage/report/countHospitalizationAttendance";
            public static final String StatEmergencyExpense = "/govFirstPage/report/statEmergencyExpense";
            public static final String StatHospitalizationExpense = "/govFirstPage/report/statHospitalizationExpense";
            public static final String StatEmergencyMedicineExpense = "/govFirstPage/report/statEmergencyMedicineExpense";
            public static final String StatHospitalizationMedicineExpense = "/govFirstPage/report/statHospitalizationMedicineExpense";
            public static final String StatAttendanceTrend = "/govFirstPage/report/statAttendanceTrend";
            public static final String StatExpenseTrend = "/govFirstPage/report/statExpenseTrend";
        }
    }
    /**
     * 统计视图
     */
    public static class StatisticView {
        /**
         * 视图
         */
        public static class View {
            public static final String Add = "/statisticView/View/add";
            public static final String Delete = "/statisticView/View/delete";
            public static final String GetViewRule = "/statisticView/View/getViewRule";
            public static final String GetViewStatisticData = "/statisticView/View/getViewStatisticData";
        }
        /**
         * 视图维度
         */
        public static class ViewDimension {
            public static final String Add = "/statisticView/ViewDimension/add";
            public static final String Delete = "/statisticView/ViewDimension/delete";
        }
        /**
         * 视图指标
         */
        public static class ViewQuota {
            public static final String Add = "/statisticView/ViewQuota/add";
            public static final String Delete = "/statisticView/ViewQuota/delete";
        }
    }
}

+ 0 - 12
common/common-request-mapping/src/main/java/com/yihu/jw/rm/svrBasic/SessionAttributeKeys.java

@ -1,12 +0,0 @@
package com.yihu.jw.rm.svrBasic;
/**
 * Spring MVC 的Web会话常用会话属性常量。
 *
 * @author Sand
 * @version 1.0
 * @created 2015.11.07 16:29
 */
public class SessionAttributeKeys {
    public final static String CurrentUser = "current_user";
}

+ 0 - 50
common/common-request-mapping/src/main/java/com/yihu/jw/rm/svrBasic/SystemDictId.java

@ -1,50 +0,0 @@
package com.yihu.jw.rm.svrBasic;
/**
 * 通用字典ID。
 *
 * @author Sand
 * @version 1.0
 * @created 2015.07.29 14:38
 */
public class SystemDictId {
/*    public final static long Nation = 1;                         // 民族字典
    public final static long Gender = 2;                         // 性别字典
    public final static long Country = 3;                       // 国家字典
    public final static long MartialStatus = 4;                 // 婚姻状态字典
    public final static long FamilyMemberRelation = 5;          // 家庭关系
    public final static long ResidenceType = 6;                // 户口类型
    public final static long OrganizationType = 7;             // 组织机构类型
    public final static long OrganizationSettledWay = 8;       // 机构接入平台方式
    public final static long CardStatus = 9;                          // 卡状态
    public final static long CardType = 10;                      // 卡类型
    public final static long RSAKeyType = 11;                       // 公私钥类型
    public final static long UserType = 12;                      // 用户类型
    public final static long UserRole = 13;                      // 用户角色*/
    public final static long AppStatus = 1;                                 // app状态
    public final static long AppCatalog = 2;                             // app类型
    public final static long Gender = 3;                                    // 用户性别
    public final static long MartialStatus = 4;                       // 婚姻状况
    public final static long Nation = 5;                                    // 民族
    public final static long ResidenceType = 6;                  // 户口类型
    public final static long OrgType = 7;                               // 机构类型
    public final static long SettledWay = 8;                        // 结算方式
    public final static long CardStatus = 9;                          // 卡状态
    public final static long CardType = 10;                         // 卡类型
    public final static long RequestState = 11;                       // 请求状态
    public final static long KeyType = 12;                              // 用户区分
    public final static long MedicalRole = 13;                      // 医疗角色
    public final static long UserRole = 14;                         // 用户角色
    public final static long UserType = 15;                         // 用户类别
    public final static long FamilyMemberRelation = 16;                      // 家庭成员关系
    public final static long tags = 17;                                     // 标签
    public final static long yesNo = 18;                                 // 是否
    public final static long hosTableList = 19;                    // 集成开放平台数据收集表
    public final static long loginAddress = 20;                    // 登入地址API Id
    public final static String AddressAPI = "baidu_APIStore_API";       //登入地址API
    public final static String Apikey = "baidu_apikey";                                 //登入地址apikey
    public final static int RsReportStatus = 92; // 资源报表状态
}

+ 0 - 33
common/common-request-mapping/src/main/java/com/yihu/jw/rm/svrBasic/UrlScope.java

@ -1,33 +0,0 @@
package com.yihu.jw.rm.svrBasic;
/**
 * @author linaz
 * @created 2016.06.03 15:57
 */
public enum UrlScope {
    Public(0),              // fastdfs
    Private(1);             // http
    private int url;
    UrlScope(int url) {    //    必须是private的,否则编译错误
        this.url = url;
    }
    public static UrlScope valueOf(int url) {
        switch (url) {
            case 0:
                return Public;
            case 1:
                return Private;
            default:
                return null;
        }
    }
    public int value() {
        return this.url;
    }
}

+ 326 - 0
common/common-rest-model/src/main/java/com/yihu/jw/restmodel/ehr/quota/EsConfig.java

@ -0,0 +1,326 @@
package com.yihu.jw.restmodel.ehr.quota;
/**
 * Created by chenweida on 2017/6/2.
 */
public class EsConfig {
    private String host;//地址
    private Integer port;//端口
    private String index;// 索引 es相当与数据库
    private String type;// 类型 es 相当于表
    private String clusterName;//es clusterName
    private String table;// 数据库表
    private String fullQuery;  //全量查询
    private String filter;  // where条件
    private String timekey;//根据sql去查询的key 时间控制字段
    private String aggregation;// 聚合方式,默认count:计数;sum:求和;list:查询;distinct:去重查询;
    private String aggregationKey;//聚合字段
    private String especialType; //特殊类型  orgHealthCategory:卫生机构类型
    private String superiorBaseQuotaCode;  // 上级基础指标code
    private String dateComparisonType;      //时间对比类型  lastYear 去年 lastMonth 上个月 lastWeek 上个星期 lastDay 昨天
    // solr去重查询
    private String distinctGroupField; // 分组去重字段
    private String distinctGroupSort; // 去重组内排序,如:“event_date asc”。
    private Boolean distinctGroupNullIsolate; // 去重组内,空值记录是保存第一条,还是每条记录单独保存,true:拆分保存,false:保存第一条,默认合并保存。
    //除法运算
    private String molecular;  // 统计除法的分子  指标code
    private String molecularFilter;  // 除法的分子过滤条件
    private String denominator;// 统计除法的分母  指标code
    private String denominatorFilter;// 除法的分母过滤条件
    private String percentOperation;//运算方式  1 乘法  2 除法
    private String percentOperationValue;//运算对应的值
    private String divisionType; //除法运算类型 1 分子分母各维度对应相除 默认 2 分子按维度 /分母按年份获取总数 如:技术人员每千人口 = 技术人员数/对应区县总人口数*1000
    //加法运算
    private String addOperation;//加法运算方式  1 加法 默认 2 减法
    private String addFirstQuotaCode;//加法第一个指标
    private String addFirstFilter;//加法第一个指标过滤条件
    private String addSecondQuotaCode;//加法第二个指标
    private String addSecondFilter;//加法第二个指标过滤条件
    private String growthFlag;  // 增幅标志  1 year  2 month 3 quarter
    private String incrementFlag;   // 环比  1 上月  2 本月
    //已停止使用
    private String thousandFlag; //每千,每万 1000,10000
    private String thousandDmolecular; //每千,每万 统计分子
    private String thousandDenominator; //每千,每万 统计分母
    public String getSuperiorBaseQuotaCode() {
        return superiorBaseQuotaCode;
    }
    public void setSuperiorBaseQuotaCode(String superiorBaseQuotaCode) {
        this.superiorBaseQuotaCode = superiorBaseQuotaCode;
    }
    public String getHost() {
        return host;
    }
    public void setHost(String host) {
        this.host = host;
    }
    public String getIndex() {
        return index;
    }
    public void setIndex(String index) {
        this.index = index;
    }
    public String getType() {
        return type;
    }
    public void setType(String type) {
        this.type = type;
    }
    public String getTimekey() {
        return timekey;
    }
    public void setTimekey(String timekey) {
        this.timekey = timekey;
    }
    public Integer getPort() {
        return port;
    }
    public void setPort(Integer port) {
        this.port = port;
    }
    public String getClusterName() {
        return clusterName;
    }
    public void setClusterName(String clusterName) {
        this.clusterName = clusterName;
    }
    public String getTable() {
        return table;
    }
    public void setTable(String table) {
        this.table = table;
    }
    public String getMolecular() {
        return molecular;
    }
    public void setMolecular(String molecular) {
        this.molecular = molecular;
    }
    public String getDenominator() {
        return denominator;
    }
    public void setDenominator(String denominator) {
        this.denominator = denominator;
    }
    public String getFilter() {
        return filter;
    }
    public void setFilter(String filter) {
        this.filter = filter;
    }
    public String getAggregation() {
        return aggregation;
    }
    public void setAggregation(String aggregation) {
        this.aggregation = aggregation;
    }
    public String getAggregationKey() {
        return aggregationKey;
    }
    public void setAggregationKey(String aggregationKey) {
        this.aggregationKey = aggregationKey;
    }
    public String getThousandFlag() {
        return thousandFlag;
    }
    public void setThousandFlag(String thousandFlag) {
        this.thousandFlag = thousandFlag;
    }
    public String getThousandDmolecular() {
        return thousandDmolecular;
    }
    public void setThousandDmolecular(String thousandDmolecular) {
        this.thousandDmolecular = thousandDmolecular;
    }
    public String getThousandDenominator() {
        return thousandDenominator;
    }
    public void setThousandDenominator(String thousandDenominator) {
        this.thousandDenominator = thousandDenominator;
    }
    public String getEspecialType() {
        return especialType;
    }
    public void setEspecialType(String especialType) {
        this.especialType = especialType;
    }
    public String getPercentOperation() {
        return percentOperation;
    }
    public void setPercentOperation(String percentOperation) {
        this.percentOperation = percentOperation;
    }
    public String getPercentOperationValue() {
        return percentOperationValue;
    }
    public void setPercentOperationValue(String percentOperationValue) {
        this.percentOperationValue = percentOperationValue;
    }
    public String getMolecularFilter() {
        return molecularFilter;
    }
    public void setMolecularFilter(String molecularFilter) {
        this.molecularFilter = molecularFilter;
    }
    public String getDenominatorFilter() {
        return denominatorFilter;
    }
    public void setDenominatorFilter(String denominatorFilter) {
        this.denominatorFilter = denominatorFilter;
    }
    public String getFullQuery() {
        return fullQuery;
    }
    public void setFullQuery(String fullQuery) {
        this.fullQuery = fullQuery;
    }
    public String getAddOperation() {
        return addOperation;
    }
    public void setAddOperation(String addOperation) {
        this.addOperation = addOperation;
    }
    public String getAddFirstQuotaCode() {
        return addFirstQuotaCode;
    }
    public void setAddFirstQuotaCode(String addFirstQuotaCode) {
        this.addFirstQuotaCode = addFirstQuotaCode;
    }
    public String getAddFirstFilter() {
        return addFirstFilter;
    }
    public void setAddFirstFilter(String addFirstFilter) {
        this.addFirstFilter = addFirstFilter;
    }
    public String getAddSecondQuotaCode() {
        return addSecondQuotaCode;
    }
    public void setAddSecondQuotaCode(String addSecondQuotaCode) {
        this.addSecondQuotaCode = addSecondQuotaCode;
    }
    public String getAddSecondFilter() {
        return addSecondFilter;
    }
    public void setAddSecondFilter(String addSecondFilter) {
        this.addSecondFilter = addSecondFilter;
    }
    public String getGrowthFlag() {
        return growthFlag;
    }
    public void setGrowthFlag(String growthFlag) {
        this.growthFlag = growthFlag;
    }
    public String getIncrementFlag() {
        return incrementFlag;
    }
    public void setIncrementFlag(String incrementFlag) {
        this.incrementFlag = incrementFlag;
    }
    public String getDivisionType() {
        return divisionType;
    }
    public void setDivisionType(String divisionType) {
        this.divisionType = divisionType;
    }
    public String getDateComparisonType() {
        return dateComparisonType;
    }
    public void setDateComparisonType(String dateComparisonType) {
        this.dateComparisonType = dateComparisonType;
    }
    public String getDistinctGroupField() {
        return distinctGroupField;
    }
    public void setDistinctGroupField(String distinctGroupField) {
        this.distinctGroupField = distinctGroupField;
    }
    public String getDistinctGroupSort() {
        return distinctGroupSort;
    }
    public void setDistinctGroupSort(String distinctGroupSort) {
        this.distinctGroupSort = distinctGroupSort;
    }
    public Boolean getDistinctGroupNullIsolate() {
        return distinctGroupNullIsolate;
    }
    public void setDistinctGroupNullIsolate(Boolean distinctGroupNullIsolate) {
        this.distinctGroupNullIsolate = distinctGroupNullIsolate;
    }
}

+ 8 - 0
common/common-rest-model/src/main/java/com/yihu/jw/restmodel/ehr/resource/MRsColumnsModel.java

@ -17,6 +17,14 @@ public class MRsColumnsModel implements Serializable {
    private List<String> columnsType;
    private List<String> columnsDict;
    public MRsColumnsModel() {
    }
    public MRsColumnsModel(String code, String value) {
        this.code = code;
        this.value = value;
    }
    public String getCode() {
        return code;
    }

+ 13 - 0
common/common-rest-model/src/main/java/com/yihu/jw/restmodel/web/endpoint/EnvelopRestEndpoint.java

@ -41,6 +41,8 @@ public abstract class EnvelopRestEndpoint extends BaseRestEndPoint {
    @Autowired
    protected BaseExceptionDictDao baseExceptionDictDao;
    protected static String ERR_SYSTEM_DES = "系统错误,请联系管理员!";
    protected Short deployRegion = 3502;
    protected Envelop success() {
@ -655,4 +657,15 @@ public abstract class EnvelopRestEndpoint extends BaseRestEndPoint {
        }
        return result;
    }
    public <T> T toModel(String json,Class<T> targetCls){
        try {
            objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
            T model = objectMapper.readValue(json, targetCls);
            return model;
        } catch (Exception e){
            e.printStackTrace();
            return null;
        }
    }
}

+ 15 - 0
common/common-util/src/main/java/com/yihu/jw/util/common/NumberUtil.java

@ -646,4 +646,19 @@ public class NumberUtil {
        }
        return true;
    }
    public static String changeIdCardNo(String idCard) {
        String newIdCard = "";
        if (!org.springframework.util.StringUtils.isEmpty(idCard)) {
            int length = idCard.length();
            if(length == 18 || length == 15) {
                String prefix = idCard.substring(0,6);
                String suffix = idCard.substring(length - 4);
                newIdCard = prefix + "********" + suffix;
            } else {
                newIdCard = idCard;
            }
        }
        return newIdCard;
    }
}

+ 51 - 0
common/common-util/src/main/java/com/yihu/jw/util/date/DateUtil.java

@ -6,6 +6,7 @@ import org.springframework.util.StringUtils;
import java.math.BigDecimal;
import java.sql.Time;
import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.*;
import java.time.format.DateTimeFormatter;
@ -25,6 +26,26 @@ import java.util.concurrent.TimeUnit;
 */
public class DateUtil {
    public static final String DEFAULT_DATE_YEAR_FORMAT = "yyyy";
    public static final String DEFAULT_DATE_MONTH_FORMAT = "MM";
    public static final String PRINT_DATE_YM_FORMAT = "MMM., yyyy";
    public static final String PRINT_DATE_YMD_FORMAT = "MMM. d, yyyy";
    public static final String DEFAULT_YEARS = "0.0";
    public static final String DEFAULT_DATE_YMD_FORMAT = "yyyy-MM-dd";
    public static final String DEFAULT_DATE_YM_FORMAT = "yyyyMM";
    public static final String DEFAULT_DATE_MD_FORMAT = "MMdd";
    public static final String DEFAULT_CHAR_DATE_YMD_FORMAT = "yyyyMMdd";
    public static final String DEFAULT_TIMESTAMP_FORMAT = "yyyy-MM-dd HH:mm:ss.SSS";
    public static final String DEFAULT_SIMPLEDATE_FORMAT = "yyyy-MM-dd HH:mm:ss SSS";
    public static final String DEFAULT_YMDHMSDATE_FORMAT = "yyyy-MM-dd HH:mm:ss";
    public static final String DEFAULT_TIME_FORMAT = "HH:mm:ss";
    public static final String DEFAULT_NOW_STRING_FORMAT = "yyyyMMddHHmmssSSS";
    public static final String DATE_MDY_FORMAT = "MMddyyyy";
    public static final String DATE_MY_FORMAT = "MMyyyy";
    public static final String utcDateTimePattern = "yyyy-MM-dd'T'HH:mm:ss'Z'";
    public static final String utcDateTimePatternTZ = " yyyy-MM-dd'T'HH:mm:ssZZZ";
    public static final String DATE_WORLD_FORMAT = "yyyy-MM-dd'T'HH:mm:ss'Z'";
    public static final String HH_MM = "HH:mm";
    public static final String HH_MM_SS = "HH:mm:ss";
    public static final String YY = "yy";
@ -100,6 +121,36 @@ public class DateUtil {
        return Date.from(instant);
    }
    public static String getYearFromYMD(Date ymd) {
        return getYearFromYMD(toString(ymd));
    }
    public static String getYearFromYMD(String ymd) {
        return ymd != null && ymd.length() == "yyyy-MM-dd".length() ? ymd.substring(0, 4) : null;
    }
    public static String utcToDate(String utcTime, String format) {
        SimpleDateFormat utcSdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
        SimpleDateFormat newSdf = new SimpleDateFormat(format);
        String date = null;
        try {
            if (!org.apache.commons.lang3.StringUtils.isEmpty(utcTime)) {
                date = newSdf.format(utcSdf.parse(utcTime));
            }
        } catch (ParseException var6) {
            var6.printStackTrace();
        }
        return date;
    }
    public static String utcToDate(Date date) {
        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
        String utcDate = sdf1.format(date);
        return utcDate;
    }
    /**
     * 字符串转时间格式
     */

+ 1 - 2
common/commons-ehr-constants/src/main/java/com/yihu/ehr/constants/ApiVersion.java

@ -10,6 +10,5 @@ package com.yihu.ehr.constants;
 * @created 2015.11.05 11:29
 */
public class ApiVersion {
//    public static final String Version1_0 = "/api/v1.0";      // v1.0 版本
    public static final String Version1_0 = "/";      // v1.0 版本
    public static final String Version1_0 = "/api/v1.0";      // v1.0 版本
}

+ 3 - 0
common/commons-ehr-constants/src/main/java/com/yihu/ehr/constants/ServiceApi.java

@ -1036,6 +1036,9 @@ public class ServiceApi {
        //清除缓存
        public static final String Delete = "/redis/delete";
        public static final String InitVersions = "/redis/init/versions";
        public static final String StdMetadataName = "/redis/stdMetadataName";
        //更新缓存
        public static final String UpdateOrgName = "/redis/update/orgName";
        public static final String UpdateOrgArea = "/redis/update/orgArea";

+ 19 - 0
svr/svr-basic/pom.xml

@ -28,6 +28,25 @@
                </exclusion>
            </exclusions>
        </dependency>
        <!-- es -->
        <!-- ElasticSearch -->
        <dependency>
            <groupId>org.elasticsearch</groupId>
            <artifactId>elasticsearch</artifactId>
            <version>2.4.6</version>
        </dependency>
        <dependency>
            <groupId>org.nlpcn</groupId>
            <artifactId>elasticsearch-sql</artifactId>
            <version>2.4.1.0</version>
        </dependency>
        <!-- ElasticSearch -->
        <dependency>
            <groupId>com.github.abel533</groupId>
            <artifactId>ECharts</artifactId>
            <version>2.2.6</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>

+ 447 - 0
svr/svr-basic/src/main/java/com/yihu/jw/basic/agadmin/controller/common/SystemDictController.java

@ -0,0 +1,447 @@
package com.yihu.jw.basic.agadmin.controller.common;
import com.yihu.jw.basic.dict.service.SystemDictEntryService;
import com.yihu.jw.basic.dict.service.SystemDictService;
import com.yihu.jw.entity.ehr.dict.SystemDict;
import com.yihu.jw.entity.ehr.dict.SystemDictEntry;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.PageEnvelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * Created by Administrator on 2015/8/12.
 */
@RequestMapping("/dict")
@RestController
@Api( tags = {"网关-字典"})
public class SystemDictController extends EnvelopRestEndpoint {
    @Autowired
    private SystemDictService dictService;
    @Autowired
    private SystemDictEntryService systemDictEntryService;
//
//    @RequestMapping("/createDict")
//    public Envelop createDict(String name, String reference, String userId) {
//        Map<String, Object> params = new HashMap<>();
//        if (StringUtils.isEmpty(name)){
//            return failed("字典名称不能为空");
//        }
//        SystemDictModel systemDictModel = new SystemDictModel();
//        systemDictModel.setName(name.replace(" ", ""));
//        systemDictModel.setAuthorId("System");
//        params.put("dictionary", toJson(systemDictModel));
//        try {
//            String urlCheck = "/basic/api/v1.0/dictionaries/existence";
//            Map<String, Object> paramsCheck = new HashMap<>();
//            paramsCheck.put("dict_name",name);
//            String resultCheckStr = HttpClientUtil.doGet(adminInnerUrl + urlCheck, paramsCheck, username, password);
//            boolean exists = Boolean.valueOf(resultCheckStr);
//            if (exists) {
//                return failed("字典名字在系统中已存在");
//            }
//            String url = "/basic/api/v1.0/dictionaries";
//            HttpResponse resultStr = HttpUtils.doJsonPost(adminInnerUrl + url, toJson(systemDictModel), null, username, password);
//            if (resultStr.isSuccessFlg()) {
//                return toModel(resultStr.getContent(), Envelop.class);
//            } else {
//                return failed(resultStr.getContent());
//            }
//        } catch (Exception ex){
//            ex.printStackTrace();
//            return failed(ex.getMessage());
//        }
//    }
//
//    @RequestMapping("/deleteDict")
//    public Envelop deleteDict(long dictId) {
//        try {
//            Map<String, Object> params = new HashMap<>();
//            params.put("dictId", dictId);
//            String url ="/basic/api/v1.0/dictionaries/" + dictId;
//            String resultStr = HttpClientUtil.doDelete(adminInnerUrl + url, params, username, password);
//            boolean success = Boolean.valueOf(resultStr);
//            if (success) {
//                return success(true);
//            }
//            return failed("删除失败");
//        } catch (Exception ex){
//            ex.printStackTrace();
//            return failed(ex.getMessage());
//        }
//    }
//
//    @RequestMapping("/updateDict")
//    public Envelop updateDict(long dictId, String name) {
//        if (StringUtils.isEmpty(name)) {
//            return failed("字典名称不能为空");
//        }
//        try {
//            Map<String, Object> dictParams = new HashMap<>();
//            dictParams.put("id", dictId);
//            dictParams.put("name", name.replace(" ", ""));
//            String url = "/basic/api/v1.0/dictionaries";
//            HttpResponse httpResponse = HttpUtils.doJsonPut(adminInnerUrl + url, toJson(dictParams), null, username, password);
//            if (httpResponse.isSuccessFlg()) {
//                return toModel(httpResponse.getContent(), Envelop.class);
//            } else {
//                return failed(httpResponse.getContent());
//            }
//        } catch (Exception ex){
//            ex.printStackTrace();
//            return failed(ex.getMessage());
//        }
//    }
    @GetMapping("searchSysDicts")
    public Envelop searchSysDicts(String searchNm, Integer page, Integer rows) {
        String resultStr = "";
        Envelop result = new Envelop();
        Map<String, Object> params = new HashMap<>();
        StringBuffer stringBuffer = new StringBuffer();
        if (!StringUtils.isEmpty(searchNm)) {
            stringBuffer.append("name?" + searchNm + " g1;phoneticCode?" + searchNm + " g1");
        }
        String filters = stringBuffer.toString();
        params.put("filters", "");
        if (!StringUtils.isEmpty(filters)) {
            params.put("filters", filters);
        }
        params.put("page", page);
        params.put("size", rows);
        try {
            if (page != null || page > 0) {
                page = page - 1;
            }else {
                page = 1;
            }
            String url ="/dictionaries";
            page = reducePage(page);
            if (org.apache.commons.lang3.StringUtils.isEmpty(filters)) {
                Page<SystemDict> systemDictPage = dictService.getDictList(null, page, rows);
                return PageEnvelop.getSuccessListWithPage("",systemDictPage.toList(),page,rows,systemDictPage.getTotalElements());
            } else {
                List<SystemDict> systemDictList = dictService.search(null, filters, null, page, rows);
                return PageEnvelop.getSuccessListWithPage("",systemDictList,page,rows, dictService.getCount(filters));
            }
        } catch (Exception ex){
            ex.printStackTrace();
            return failed(ERR_SYSTEM_DES);
        }
    }
//    @RequestMapping("createDictEntry")
//    public Object createDictEntry(Long dictId, String code, String value, Integer sort, String catalog) {
//
//        Map<String, Object> params = new HashMap<>();
//        Envelop result = new Envelop();
//        String resultStr = "";
//
//        if(StringUtils.isEmpty(dictId)){
//            result.setSuccessFlg(false);
//            result.setErrorMsg("字典Id不能为空!");
//            return result;
//        }
//        if(StringUtils.isEmpty(code)){
//            result.setSuccessFlg(false);
//            result.setErrorMsg("字典项编码不能为空!");
//            return result;
//        }
//        if(StringUtils.isEmpty(value)){
//            result.setSuccessFlg(false);
//            result.setErrorMsg("字典项值不能为空!");
//            return result;
//        }
//
//        SystemDictEntryModel dictEntryModel = new SystemDictEntryModel();
//        dictEntryModel.setDictId(dictId);
//        dictEntryModel.setCode(code.replace(" ", ""));
//        dictEntryModel.setValue(value.replace(" ", ""));
//        dictEntryModel.setSort(sort);
//        dictEntryModel.setCatalog(catalog);
//        params.put("entry",toJson(dictEntryModel));
//
//        try {
//            String urlCheck = "/dictionaries/existence/" + dictId ;
//            Map<String, Object> paramsCheck = new HashMap<>();
//            paramsCheck.put("dict_id",dictId);
//            paramsCheck.put("code",code.replace(" ", ""));
//            String resultCheckStr = HttpClientUtil.doGet(comUrl + urlCheck, paramsCheck, username, password);
//
//            if(Boolean.parseBoolean(resultCheckStr)){
//                result.setSuccessFlg(false);
//                result.setErrorMsg("代码在该字典中已存在,请确认。");
//                return result;
//            }
//
//            String url = "/dictionaries/entries";
//            resultStr = HttpClientUtil.doPost(comUrl+url,params,username,password);
//            return resultStr;
//
//        } catch (Exception ex){
//            ex.printStackTrace();
//            return failed(ERR_SYSTEM_DES);
//        }
//    }
//
//    @RequestMapping("deleteDictEntry")
//    @ResponseBody
//    public Object deleteDictEntry(long dictId, String code) throws Exception{
//
//        Envelop result = new Envelop();
//        String resultStr = "";
//        Map<String, Object> params = new HashMap<>();
//        params.put("id",dictId);
//        params.put("code",code);
//
//        String url = "/dictionaries/"+ dictId + "/entries/"+ URLEncoder.encode(code, "UTF-8");
//
//        try {
//            resultStr = HttpClientUtil.doDelete(comUrl+url,params,username,password);
//            return resultStr;
//        } catch (Exception ex){
//            ex.printStackTrace();
//            return failed(ERR_SYSTEM_DES);
//        }
//    }
//
//    @RequestMapping("updateDictEntry")
//    @ResponseBody
//    public Object updateDictEntry(Long dictId, String code, String value, Integer sort, String catalog) {
//
//        Map<String, Object> params = new HashMap<>();
//        Envelop result = new Envelop();
//        String resultStr = "";
//
//        if(StringUtils.isEmpty(dictId)){
//            result.setSuccessFlg(false);
//            result.setErrorMsg("字典id不能为空!");
//            return result;
//        }
//        if(StringUtils.isEmpty(code)){
//            result.setSuccessFlg(false);
//            result.setErrorMsg("字典项编码code不能为空!");
//            return result;
//        }
//
//        SystemDictEntryModel dictEntryModel = new SystemDictEntryModel();
//        dictEntryModel.setDictId(dictId);
//        dictEntryModel.setCode(code.replace(" ", ""));
//        dictEntryModel.setValue(value.replace(" ", ""));
//        dictEntryModel.setSort(sort);
//        dictEntryModel.setCatalog(catalog);
//        params.put("dictionary",toJson(dictEntryModel));
//
//        try {
//            String dictEntryUrl = "/dictionaries/" + dictId + "/entries/" + URLEncoder.encode(code,"UTF-8");
//            Map<String, Object> dictEntryParams = new HashMap<>();
//            dictEntryParams.put("dict_id",dictId);
//            dictEntryParams.put("code",code);
//            String dictEntryResultStr = HttpClientUtil.doGet(comUrl + dictEntryUrl, dictEntryParams, username, password);
//            result = getEnvelop(dictEntryResultStr);
//
//            if(result.isSuccessFlg()){
//                SystemDictEntryModel systemDictEntryModel = getEnvelopModel(result.getObj(),SystemDictEntryModel.class);
//                systemDictEntryModel.setValue(value.replace(" ", ""));
//                systemDictEntryModel.setSort(sort);
//                systemDictEntryModel.setCatalog(catalog);
//                params.put("entry",toJson(systemDictEntryModel));
//
//                String urlCheckDict = "/dictionaries/entries";
//                resultStr = HttpClientUtil.doPut(comUrl + urlCheckDict, params, username, password);
//                return resultStr;
//            }
//        } catch (Exception ex){
//            ex.printStackTrace();
//            return failed(ERR_SYSTEM_DES);
//        }
//        return result;
//    }
//
//    @RequestMapping("searchDictEntryListForManage")
//    @ResponseBody
//    public Object searchDictEntryList(Long dictId, Integer page, Integer rows) {
//
//        String resultStr = "";
//        Envelop result = new Envelop();
//        Map<String, Object> params = new HashMap<>();
//
//        StringBuffer stringBuffer = new StringBuffer();
//        if (!StringUtils.isEmpty(dictId)) {
//            stringBuffer.append("dictId=" + dictId);
//        }
//        String filters = stringBuffer.toString();
//        params.put("filters", "");
//        if (!StringUtils.isEmpty(filters)) {
//            params.put("filters", filters);
//        }
//        params.put("page", page);
//        params.put("size", rows);
//
//        try {
//            String url ="/dictionaries/entries";
//            resultStr = HttpClientUtil.doGet(comUrl + url, params, username, password);
//            return resultStr;
//        } catch (Exception ex){
//            ex.printStackTrace();
//            return failed(ERR_SYSTEM_DES);
//        }
//    }
//
//    @RequestMapping("selecttags")
//    @ResponseBody
//    public Object selectTags() {
//
//        String resultStr = "";
//        Envelop result = new Envelop();
//        Map<String, Object> params = new HashMap<>();
//
//        try {
//            String url ="/dictionaries/tags";
//            resultStr = HttpClientUtil.doGet(comUrl + url, params, username, password);
//
//            ObjectMapper objectMapper = new ObjectMapper();
//            result = objectMapper.readValue(resultStr, Envelop.class);
//            result.setObj(result.getDetailModelList());
//
//            return result;
//        } catch (Exception ex){
//            ex.printStackTrace();
//            return failed(ERR_SYSTEM_DES);
//        }
//    }
    @GetMapping("searchDictEntryList")
    public Envelop searchDictEntryListForDDL(Long dictId, Integer page, Integer rows) {
        String resultStr = "";
        Envelop result = new Envelop();
        Map<String, Object> params = new HashMap<>();
        StringBuffer stringBuffer = new StringBuffer();
        if (!StringUtils.isEmpty(dictId)) {
            stringBuffer.append("dictId=" + dictId);
        }
        String filters = stringBuffer.toString();
        params.put("filters", "");
        if (!StringUtils.isEmpty(filters)) {
            params.put("filters", filters);
        }
        if(StringUtils.isEmpty(page) || page == 0){
            page = 1;
        }
        if(StringUtils.isEmpty(rows) || rows == 0){
            rows = 50;
        }
        params.put("page", page);
        params.put("size", rows);
        try {
            String url ="/dictionaries/entries";
            List<SystemDictEntry> systemDictEntryList = systemDictEntryService.search(null,filters,null,page,rows);
            return PageEnvelop.getSuccessListWithPage("",systemDictEntryList,page,rows, systemDictEntryService.getCount(filters));
        }catch (Exception ex){
            ex.printStackTrace();
            return failed(ERR_SYSTEM_DES);
        }
    }
//    @RequestMapping("searchDictForSelect")
//    @ResponseBody
//    public Object searchDictForSelect(Long dictId, String searchParm, Integer page, Integer rows) {
//
//        String resultStr = "";
//        Envelop result = new Envelop();
//        Map<String, Object> params = new HashMap<>();
//
//        StringBuffer stringBuffer = new StringBuffer();
//        if (!StringUtils.isEmpty(dictId)) {
//            stringBuffer.append("dictId=" + dictId+";");
//        }
//        if (!StringUtils.isEmpty(searchParm)){
//            stringBuffer.append("code?"+searchParm+" g1;value?"+searchParm+" g1;");
//        }
//        String filters = stringBuffer.toString();
//        params.put("filters", "");
//        if (!StringUtils.isEmpty(filters)) {
//            params.put("filters", filters);
//        }
//        if(StringUtils.isEmpty(page) || page == 0){
//            page = 1;
//        }
//        if(StringUtils.isEmpty(rows) || rows == 0){
//            rows = 50;
//        }
//        params.put("page", page);
//        params.put("size", rows);
//        params.put("sorts", "+sort");
//
//        try {
//            String url ="/dictionaries/entries";
//            resultStr = HttpClientUtil.doGet(comUrl + url, params, username, password);
//            Envelop envelopGet = objectMapper.readValue(resultStr,Envelop.class);
//            List<SystemDictEntryModel> modelList = (List<SystemDictEntryModel>)getEnvelopList(envelopGet.getDetailModelList(),new ArrayList<SystemDictEntryModel>(),SystemDictEntryModel.class);
//            List<Map> list = new ArrayList<>();
//            for (SystemDictEntryModel m:modelList){
//                Map map = new HashMap<>();
//                map.put("id", m.getCode());
//                map.put("name",m.getValue());
//                list.add(map);
//            }
//            envelopGet.setDetailModelList(list);
//            return envelopGet;
//        }catch (Exception ex){
//            ex.printStackTrace();
//            return failed(ERR_SYSTEM_DES);
//        }
//    }
//
//    @RequestMapping("validator")
//    @ResponseBody
//    public Object validator(String systemName){
//        Envelop result = new Envelop();
//        String resultStr = "";
//
//        Map<String, Object> params = new HashMap<>();
//        params.put("dict_name",systemName);
//
//        try {
//            String url ="/dictionaries/existence";
//            resultStr = HttpClientUtil.doGet(comUrl + url, params, username, password);
//            if(Boolean.parseBoolean(resultStr)){
//                result.setSuccessFlg(false);
//                result.setErrorMsg("名称重复");
//            }else{
//                result.setSuccessFlg(true);
//            }
//        } catch (Exception ex){
//            ex.printStackTrace();
//            return failed(ERR_SYSTEM_DES);
//        }
//        return result;
//    }
//
//    @RequestMapping("autoSearchDictEntryList")
//    @ResponseBody
//    public Object autoSearchDictEntryList(Long dictId,String key){
//
//        return null  ;
//    }
}

+ 177 - 0
svr/svr-basic/src/main/java/com/yihu/jw/basic/agadmin/controller/quota/QuotaCategoryController.java

@ -0,0 +1,177 @@
package com.yihu.jw.basic.agadmin.controller.quota;
import com.yihu.ehr.constants.ErrorCode;
import com.yihu.jw.basic.quota.service.TjQuotaCategoryService;
import com.yihu.jw.basic.quota.service.TjQuotaService;
import com.yihu.jw.entity.ehr.quota.TjQuotaCategory;
import com.yihu.jw.restmodel.ehr.tj.MQuotaCategory;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.ListEnvelop;
import com.yihu.jw.restmodel.web.ObjEnvelop;
import com.yihu.jw.restmodel.web.PageEnvelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * Created by wxw on 2017/8/31.
 */
@RestController
@RequestMapping("/quota")
public class QuotaCategoryController extends EnvelopRestEndpoint {
    @Autowired
    private TjQuotaCategoryService quotaCategoryService;
    @Autowired
    private TjQuotaService tjQuotaService;
    @GetMapping("/getQuotaCategoryList")
    public Object getQuotaCategoryList(String name, String searchParm,Integer id, int page, int rows){
        String url = "/quotaCategory/pageList";
        StringBuffer stringBuffer = new StringBuffer();
        if (!StringUtils.isEmpty(name)) {
            stringBuffer.append("name?" + name + " g1;code?" + name + " g1;");
        }
        if (!StringUtils.isEmpty(searchParm)) {
            stringBuffer.append("name?" + searchParm + ";");
        }
        if (!StringUtils.isEmpty(id)) {
            stringBuffer.append("id<>" + id + ";");
        }
        String filters = stringBuffer.toString();
        try {
            PageEnvelop pageEnvelop = new PageEnvelop();
            List<TjQuotaCategory> quotaCategoryList = quotaCategoryService.search(null, filters, null, page, rows);
            if (quotaCategoryList != null){
                pageEnvelop.setDetailModelList(quotaCategoryList);
                pageEnvelop.setTotalCount((int)quotaCategoryService.getCount(filters));
                pageEnvelop.setStatus(200);
                pageEnvelop.setCurrPage(page);
                pageEnvelop.setPageSize(rows);
            } else{
                pageEnvelop.setStatus(200);
                pageEnvelop.setMessage("查询无数据");
                pageEnvelop.setTotalCount(0);
            }
            return pageEnvelop;
        } catch (Exception ex) {
            ex.printStackTrace();
            return failed(ERR_SYSTEM_DES);
        }
    }
    @RequestMapping("deleteQuotaCategory")
    public Object deleteQuotaCategory(Integer id) {
        String url = "/basic/api/v1.0/quotaCategory/delete";
        Map<String, Object> params = new HashMap<>();
        params.put("id", id);
        try {
            TjQuotaCategory tjQuotaCategory = quotaCategoryService.getById(id);
            if (null == tjQuotaCategory) {
                return failed( "操作对象不存在", ErrorCode.OBJECT_NOT_FOUND.value());
            }
            if (quotaCategoryService.findByField("parentId", id).size() > 0) {
                return failed("含有子分类,不能删除");
            }
            if (tjQuotaService.findByField("quotaType", id).size() > 0) {
                return failed("含有子类,不能删除");
            }
            quotaCategoryService.deleteQuotaCategory(id);
            return success(true);
        } catch (Exception e) {
            e.printStackTrace();
            return failed(e.getMessage());
        }
    }
    @GetMapping("detailById")
    public Envelop getTjQuotaById(Integer id ) {
        String url ="/quotaCategory/detailById";
        Map<String, Object> params = new HashMap<>();
        params.put("id", id);
        MQuotaCategory detailModel = null;
        try {
            TjQuotaCategory quotaCategory = quotaCategoryService.getById(id);
            return ObjEnvelop.getSuccess("查询成功",quotaCategory);
        } catch (Exception e) {
            e.printStackTrace();
            return failed("查询失败");
        }
    }
    @RequestMapping("/addOrUpdateQuotaCategory")
    public Envelop addOrUpdateQuotaCategory(String mode, String jsonDate){
        try{
            TjQuotaCategory quotaCategory = toEntity(jsonDate, TjQuotaCategory.class);
            if("new".equals(mode)){
                if (quotaCategoryService.getCountByName(quotaCategory.getName())>0){
                    return failed("名称不唯一");
                }
                if (quotaCategoryService.getCountByCode(quotaCategory.getCode())>0){
                    return failed("编码不唯一");
                }
                quotaCategory = quotaCategoryService.saveQuotaCategory(quotaCategory);
                return ObjEnvelop.getSuccess("保存成功",quotaCategory);
            } else if("modify".equals(mode)){
                quotaCategory = quotaCategoryService.updateQuotaCategory(quotaCategory);
                return ObjEnvelop.getSuccess("保存成功",quotaCategory);
            }
        }catch (Exception ex){
            ex.printStackTrace();
            return failed(ERR_SYSTEM_DES);
        }
        return failed("查询失败");
    }
    @GetMapping("hasExistsName")
    public Envelop hasExistsName(String name) {
        try {
            return ObjEnvelop.getSuccess("查询成功",quotaCategoryService.getCountByName(name)>0);
        } catch (Exception e) {
            e.getMessage();
        }
        return failed("查询失败");
    }
    @GetMapping("hasExistsCode")
    public Envelop hasExistsCode(String code) {
        try {
            return ObjEnvelop.getSuccess("查询成功",quotaCategoryService.getCountByCode(code)>0);
        } catch (Exception e) {
            e.getMessage();
        }
        return failed("查询失败");
    }
    @GetMapping("/getAllQuotaCategoryList")
    public Object getAllQuotaCategoryList(){
        String url = "/quotaCategory/getQuotaCategoryChild";
        try {
            List<TjQuotaCategory> quotaCategories = quotaCategoryService.getQuotaCategoryChild();
            return ListEnvelop.getSuccess("查询成功",quotaCategories);
        } catch (Exception ex) {
            ex.printStackTrace();
            return failed(ERR_SYSTEM_DES);
        }
    }
    @GetMapping("/getQuotaCategoryListTree")
    public Object getQuotaCategoryListTree(){
        String url = "/quotaCategory/list";
        try {
            List<TjQuotaCategory> quotaCategories = quotaCategoryService.getAllQuotaCategory();
            return ListEnvelop.getSuccess("查询成功",quotaCategories);
        } catch (Exception ex) {
            ex.printStackTrace();
            return failed(ERR_SYSTEM_DES);
        }
    }
}

+ 191 - 0
svr/svr-basic/src/main/java/com/yihu/jw/basic/agadmin/controller/quota/TjDataSaveController.java

@ -0,0 +1,191 @@
package com.yihu.jw.basic.agadmin.controller.quota;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.jw.basic.quota.service.TjDataSaveService;
import com.yihu.jw.entity.ehr.quota.TjDataSave;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.ObjEnvelop;
import com.yihu.jw.restmodel.web.PageEnvelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import com.yihu.jw.util.http.HttpClientUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.ui.Model;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.net.URLDecoder;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * Created by llh on 2017/5/9.
 */
@RestController
@RequestMapping("/tjDataSave")
public class TjDataSaveController extends EnvelopRestEndpoint {
    @Autowired
    TjDataSaveService tjDataSaveService;
    //查询统计主维度
    @GetMapping("/getTjDataSave")
    public Envelop searchTjDataSave(String name, String searchParm,int page, int rows){
        String url = "/tj/getTjDataSaveList";
        String resultStr = "";
        Envelop envelop = new Envelop();
        Map<String, Object> params = new HashMap<>();
        StringBuffer stringBuffer = new StringBuffer();
        if (!StringUtils.isEmpty(name)) {
            stringBuffer.append("name?" + name );
        }
        if (!StringUtils.isEmpty(searchParm)) {
            stringBuffer.append("name?" + searchParm );
        }
        String filters = stringBuffer.toString();
        try {
            PageEnvelop PageEnvelop = new PageEnvelop();
            List<TjDataSave> tjDataSaveList = tjDataSaveService.search(null, filters, null, page, rows);
            if(tjDataSaveList != null){
                PageEnvelop.setDetailModelList(tjDataSaveList);
                PageEnvelop.setTotalCount((int)tjDataSaveService.getCount(filters));
                PageEnvelop.setStatus(200);
                PageEnvelop.setCurrPage(page);
                PageEnvelop.setPageSize(rows);
            }else{
                PageEnvelop.setStatus(200);
                PageEnvelop.setMessage("查询无数据");
                PageEnvelop.setTotalCount(0);
            }
            return PageEnvelop;
        } catch (Exception ex) {
            ex.printStackTrace();
            return failed(ERR_SYSTEM_DES);
        }
    }
    /**
     * 新增修改
     * @param tjDataSaveModelJsonData
     * @param request
     * @return
     * @throws IOException
     */
    @RequestMapping(value = "updateTjDataSave", produces = "text/html;charset=UTF-8")
    public Envelop updateTjDataSave(String tjDataSaveModelJsonData, HttpServletRequest request) throws IOException {
        String url = "/tj/addTjDataSave";
        String resultStr = "";
        System.out.println();
        Envelop result = new Envelop();
        String[] strings = URLDecoder.decode(tjDataSaveModelJsonData, "UTF-8").split(";");
        try {
            TjDataSave detailModel = objectMapper.readValue(strings[0], TjDataSave.class);
            if (!StringUtils.isEmpty(detailModel.getId())) {
                Long tjDataSaveId = detailModel.getId();
                TjDataSave updateTjDataSave = tjDataSaveService.getById(tjDataSaveId);
                if (updateTjDataSave !=null ) {
                    updateTjDataSave.setCode(detailModel.getCode());
                    updateTjDataSave.setName(detailModel.getName());
                    updateTjDataSave.setType(detailModel.getType());
                    updateTjDataSave.setStatus(detailModel.getStatus());
                    updateTjDataSave.setRemark(detailModel.getRemark());
                    updateTjDataSave.setUpdateTime(new Date());
                    tjDataSaveService.save(updateTjDataSave);
                    return ObjEnvelop.getSuccess("保存成功!", updateTjDataSave);
                } else {
                    return failed("参数错误");
                }
            } else {
                detailModel.setCreateTime(new Date());
                tjDataSaveService.save(detailModel);
                return ObjEnvelop.getSuccess("保存成功",detailModel);
            }
        } catch (Exception e) {
            e.printStackTrace();
            return failed(ERR_SYSTEM_DES);
        }
    }
    /**
     * 删除消息
     * @param tjDataSaveId
     * @return
     */
    @RequestMapping("deleteTjDataSave")
    public Envelop deleteTjDataSave(Long tjDataSaveId) {
        String url = "/tj/deleteTjDataSave";
        try {
            TjDataSave tjDataSave = tjDataSaveService.getById(tjDataSaveId);
            tjDataSave.setStatus(-1);
            tjDataSaveService.save(tjDataSave);
            return success("删除成功");
        } catch (Exception e) {
            e.printStackTrace();
            return failed(ERR_SYSTEM_DES);
        }
    }
    /**
     * 根据id获取消息
     * @param id
     * @return
     */
    @GetMapping("getTjDataSaveById")
    public Envelop getTjQuotaById(Long id ) {
        String url ="/tj/getTjDataSaveById/" +id;
        try {
            TjDataSave updateTjDataSave = tjDataSaveService.getById(id);
            return ObjEnvelop.getSuccess("获取成功",updateTjDataSave);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return failed("查询失败");
    }
    /**
     * 校验name是否唯一,true已存在
     * @param name
     * @return
     */
    @GetMapping("hasExistsName")
    public Envelop hasExistsName(String name) {
        String url = "/tj/dataSaveExistsName/"+ name ;
        try {
            String filter = "name=" + name;
            List<TjDataSave> list = tjDataSaveService.search(filter);
            return ObjEnvelop.getSuccess("查询成功",list.size() > 0);
        } catch (Exception e) {
            e.getMessage();
        }
        return  failed("查询失败");
    }
    /**
     * 校验code是否唯一
     * @param code
     * @return
     */
    @GetMapping("hasExistsCode")
    public Envelop hasExistsCode(String code) {
        String url = "/tj/dataSaveExistsCode/" + code ;
        try {
            String filter = "code=" + code;
            List<TjDataSave> list = tjDataSaveService.search(filter);
            return ObjEnvelop.getSuccess("查询成功",list.size() > 0);
        } catch (Exception e) {
            e.getMessage();
        }
        return  failed("查询失败");
    }
}

+ 226 - 0
svr/svr-basic/src/main/java/com/yihu/jw/basic/agadmin/controller/quota/TjDataSourceController.java

@ -0,0 +1,226 @@
//package com.yihu.jw.basic.agadmin.controller.quota;
//
//import com.fasterxml.jackson.databind.ObjectMapper;
//import com.yihu.ehr.constants.SessionAttributeKeys;
//import com.yihu.jw.restmodel.web.Envelop;
//import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
//import com.yihu.jw.util.http.HttpClientUtil;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.stereotype.Controller;
//import org.springframework.ui.Model;
//import org.springframework.util.LinkedMultiValueMap;
//import org.springframework.util.MultiValueMap;
//import org.springframework.util.StringUtils;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.ResponseBody;
//import org.springframework.web.bind.annotation.RestController;
//import org.springframework.web.bind.annotation.SessionAttributes;
//
//import javax.servlet.http.HttpServletRequest;
//import java.io.IOException;
//import java.net.URLDecoder;
//import java.util.HashMap;
//import java.util.Map;
//
///**
// * Created by llh on 2017/5/9.
// */
//@RestController
//@RequestMapping("/tjDataSource")
//public class TjDataSourceController extends EnvelopRestEndpoint {
//
//
//    //查询
//    @RequestMapping("/getTjDataSource")
//    @ResponseBody
//    public Object searchTjDataSource(String name,String searchParm, int page, int rows){
//        String url = "/tj/getTjDataSourceList";
//        String resultStr = "";
//        Envelop envelop = new Envelop();
//        Map<String, Object> params = new HashMap<>();
//        StringBuffer stringBuffer = new StringBuffer();
//        if (!StringUtils.isEmpty(name)) {
//            stringBuffer.append("name?" + name );
//        }
//        if (!StringUtils.isEmpty(searchParm)) {
//            stringBuffer.append("name?" + searchParm );
//        }
//        String filters = stringBuffer.toString();
//        if (!StringUtils.isEmpty(filters)) {
//            params.put("filters", filters);
//        }
//        params.put("page", page);
//        params.put("size", rows);
//        try {
//            resultStr = HttpClientUtil.doGet(comUrl + url, params, username, password);
//            return resultStr;
//        } catch (Exception ex) {
//            ex.printStackTrace();
//            return failed(ERR_SYSTEM_DES);
//        }
//    }
//
//
//
//    /**
//     * 新增修改
//     * @param tjDataSourceModelJsonData
//     * @param request
//     * @return
//     * @throws IOException
//     */
//    @RequestMapping(value = "updateTjDataSource", produces = "text/html;charset=UTF-8")
//    @ResponseBody
//    public Object updateTjDataSource(String tjDataSourceModelJsonData, HttpServletRequest request) throws IOException {
//
//        String url = "/tj/addTjDataSource";
//        String resultStr = "";
//        System.out.println();
//        Envelop result = new Envelop();
//        UsersModel userDetailModel = getCurrentUserRedis(request);
//        MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
//        String[] strings = URLDecoder.decode(tjDataSourceModelJsonData, "UTF-8").split(";");
//        TjDataSourceModel detailModel = toModel(strings[0], TjDataSourceModel.class);
//        RestTemplates templates = new RestTemplates();
//
//        try {
//            if (!StringUtils.isEmpty(detailModel.getId())) {
//                Long tjDataSourceId = detailModel.getId();
//                resultStr = templates.doGet(comUrl + "/tj/getTjDataSourceById/" + tjDataSourceId);
//                Envelop envelop = getEnvelop(resultStr);
//                if (envelop.isSuccessFlg()) {
//                    TjDataSourceModel updateTjDataSource = getEnvelopModel(envelop.getObj(), TjDataSourceModel.class);
//
//                    updateTjDataSource.setCode(detailModel.getCode());
//                    updateTjDataSource.setName(detailModel.getName());
//                    updateTjDataSource.setType(detailModel.getType());
//                    updateTjDataSource.setStatus(detailModel.getStatus());
//                    updateTjDataSource.setRemark(detailModel.getRemark());
//                    updateTjDataSource.setUpdateUser(userDetailModel.getId());
//                    updateTjDataSource.setUpdateUserName(userDetailModel.getRealName());
//                    params.add("model", toJson(updateTjDataSource));
//
//                    resultStr = templates.doPost(comUrl + url, params);
//                } else {
//                    result.setSuccessFlg(false);
//                    result.setErrorMsg(envelop.getErrorMsg());
//                    return result;
//                }
//            } else {
//                detailModel.setCreateUser(userDetailModel.getId());
//                detailModel.setCreateUserName(userDetailModel.getRealName());
//                params.add("model", toJson(detailModel));
//                resultStr = templates.doPost(comUrl + url, params);
//            }
//        } catch (Exception e) {
//            e.printStackTrace();
//            return failed(ERR_SYSTEM_DES);
//        }
//        return resultStr;
//    }
//
//    /**
//     * 删除消息
//     * @param tjDataSourceId
//     * @return
//     */
//    @RequestMapping("deleteTjDataSource")
//    @ResponseBody
//    public Object deleteTjDataSource(Long tjDataSourceId) {
//        String url = "/tj/deletetTjDataSource" ;
//        String resultStr = "";
//        Envelop result = new Envelop();
//        Map<String, Object> params = new HashMap<>();
//        ObjectMapper mapper = new ObjectMapper();
//        params.put("id", tjDataSourceId);
//        try {
//            resultStr = HttpClientUtil.doDelete(comUrl + url, params, username, password);
//            result = mapper.readValue(resultStr, Envelop.class);
//            if (result.isSuccessFlg()) {
//                result.setSuccessFlg(true);
//            } else {
//                result.setSuccessFlg(false);
//                result.setErrorMsg("删除失败");
//            }
//            return result;
//        } catch (Exception e) {
//            e.printStackTrace();
//            return failed(ERR_SYSTEM_DES);
//        }
//    }
//
//    /**
//     * 根据id获取消息
//     * @param model
//     * @param id
//     * @return
//     */
//    @RequestMapping("getTjDataSourceById")
//    @ResponseBody
//    public TjDataSourceModel getTjQuotaById(Model model, Long id ) {
//        String url ="/tj/getTjDataSourceById/" +id;
//        String resultStr = "";
//        Envelop envelop = new Envelop();
//        Map<String, Object> params = new HashMap<>();
//        params.put("id", id);
//        TjDataSourceModel detailModel = null;
//        try {
//            resultStr = HttpClientUtil.doGet(comUrl + url, params, username, password);
//            Envelop ep = getEnvelop(resultStr);
//            detailModel = toModel(toJson(ep.getObj()),TjDataSourceModel.class);
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//        return detailModel;
//    }
//
//    /**
//     * 校验name是否唯一,true已存在
//     * @param name
//     * @return
//     */
//    @RequestMapping("hasExistsName")
//    @ResponseBody
//    public boolean hasExistsName(String name) {
//        String url = "/tj/tjDataSourceExistsName/" + name ;
//        String resultStr = "";
//        Envelop result = new Envelop();
//        Map<String, Object> params = new HashMap<>();
//        ObjectMapper mapper = new ObjectMapper();
//        params.put("name", name);
//        try {
//            resultStr = HttpClientUtil.doGet(comUrl + url, params, username, password);
//            if (resultStr.equals("true")) {
//                return  true;
//            }
//        } catch (Exception e) {
//            e.getMessage();
//        }
//        return  false;
//    }
//
//    /**
//     * 校验code是否唯一
//     * @param code
//     * @return
//     */
//    @RequestMapping("hasExistsCode")
//    @ResponseBody
//    public boolean hasExistsCode(String code) {
//        String url = "/tj/tjDataSourceExistsCode/" + code ;
//        String resultStr = "";
//        Envelop result = new Envelop();
//        Map<String, Object> params = new HashMap<>();
//        ObjectMapper mapper = new ObjectMapper();
//        params.put("code", code);
//        try {
//            resultStr = HttpClientUtil.doGet(comUrl + url, params, username, password);
//            if (resultStr.equals("true")) {
//                return  true;
//            }
//        } catch (Exception e) {
//            e.getMessage();
//        }
//        return  false;
//    }
//}

+ 259 - 0
svr/svr-basic/src/main/java/com/yihu/jw/basic/agadmin/controller/quota/TjDimensionMainController.java

@ -0,0 +1,259 @@
package com.yihu.jw.basic.agadmin.controller.quota;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.jw.basic.quota.service.TjDimensionMainService;
import com.yihu.jw.entity.ehr.quota.TjDimensionMain;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.ObjEnvelop;
import com.yihu.jw.restmodel.web.PageEnvelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import com.yihu.jw.util.http.HttpClientUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.SessionAttributes;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.net.URLDecoder;
import java.util.*;
/**
 * Created by llh on 2017/5/9.
 */
@RestController
@RequestMapping("/tjDimensionMain")
public class TjDimensionMainController extends EnvelopRestEndpoint {
    @Autowired
    TjDimensionMainService tjDimensionMainService;
    //查询统计主维度
    @RequestMapping("/getTjDimensionMain")
    public Object searchTjDimensionMain(String name, int page, int rows){
        String url = "/tj/getTjDimensionMainList";
        String resultStr = "";
        Envelop envelop = new Envelop();
        Map<String, Object> params = new HashMap<>();
        StringBuffer stringBuffer = new StringBuffer();
        if (!StringUtils.isEmpty(name)) {
            stringBuffer.append("name?" + name );
        }
        String filters = stringBuffer.toString();
        if (!StringUtils.isEmpty(filters)) {
            params.put("filters", filters);
        }
        params.put("page", page);
        params.put("size", rows);
        try {
            PageEnvelop PageEnvelop = new PageEnvelop();
            List<TjDimensionMain> qtjDimensionMainList = tjDimensionMainService.search(null, filters, null, page, rows);
            if(qtjDimensionMainList != null){
                PageEnvelop.setDetailModelList(qtjDimensionMainList);
                PageEnvelop.setTotalCount((int)tjDimensionMainService.getCount(filters));
                PageEnvelop.setStatus(200);
                PageEnvelop.setCurrPage(page);
                PageEnvelop.setPageSize(rows);
            }else{
                PageEnvelop.setStatus(200);
                PageEnvelop.setMessage("查询无数据");
                PageEnvelop.setTotalCount(0);
            }
            return PageEnvelop;
        } catch (Exception ex) {
            ex.printStackTrace();
            return failed(ERR_SYSTEM_DES);
        }
    }
    /**
     * 新增修改
     * @param tjDimensionMainModelJsonData
     * @param request
     * @return
     * @throws IOException
     */
    @RequestMapping(value = "updateTjDimensionMain", produces = "text/html;charset=UTF-8")
    public Object updateTjDimensionMain(String tjDimensionMainModelJsonData, HttpServletRequest request) throws IOException {
        String url = "/tj/tjDimensionMain";
        String resultStr = "";
        System.out.println();
        String[] strings = URLDecoder.decode(tjDimensionMainModelJsonData, "UTF-8").split(";");
        TjDimensionMain detailModel = objectMapper.readValue(strings[0], TjDimensionMain.class);
        try {
            if (!StringUtils.isEmpty(detailModel.getId())) {
                Long id = detailModel.getId();
                TjDimensionMain updateTjDimensionMain = tjDimensionMainService.getTjDimensionMain(id);
                if (updateTjDimensionMain!=null) {
                    updateTjDimensionMain.setCode(detailModel.getCode());
                    updateTjDimensionMain.setName(detailModel.getName());
                    updateTjDimensionMain.setType(detailModel.getType());
                    updateTjDimensionMain.setStatus(detailModel.getStatus());
                    updateTjDimensionMain.setRemark(detailModel.getRemark());
                    updateTjDimensionMain.setUpdateTime(new Date());
                    tjDimensionMainService.save(updateTjDimensionMain);
                    return ObjEnvelop.getSuccess("保存成功",updateTjDimensionMain);
                } else {
                    return failed("参数错误");
                }
            } else {
                detailModel.setCreateTime(new Date());
                tjDimensionMainService.save(detailModel);
                return ObjEnvelop.getSuccess("保存成功",detailModel);
            }
        } catch (Exception e) {
            e.printStackTrace();
            return failed(ERR_SYSTEM_DES);
        }
    }
    /**
     * 删除消息
     * @param tjDimensionMainId
     * @return
     */
    @RequestMapping("deleteTjDimensionMain")
    public Object deleteTjDimensionMain(Long tjDimensionMainId) {
        String url = "/tj/tjDimensionMain";
        try {
            TjDimensionMain tjDimensionMain = tjDimensionMainService.getTjDimensionMain(tjDimensionMainId);
            tjDimensionMain.setStatus(-1);
            tjDimensionMainService.save(tjDimensionMain);
            return ObjEnvelop.getSuccess("主维度删除成功!");
        } catch (Exception e) {
            e.printStackTrace();
            return failed(ERR_SYSTEM_DES);
        }
    }
    /**
     * 根据id获取消息
     * @param id
     * @return
     */
    @RequestMapping("getTjDimensionMainByID")
    public Envelop getTjDimensionMainByID(Long id ) {
        String url ="/tj/tjDimensionMainId/" +id;
        try {
            TjDimensionMain updateTjDimensionMain = tjDimensionMainService.getTjDimensionMain(id);
            return ObjEnvelop.getSuccess("查询成功",updateTjDimensionMain);
        } catch (Exception e) {
            e.printStackTrace();
            return failed("查询失败");
        }
    }
    /**
     * 校验名称是否唯一
     * @param name
     * @return
     */
    @RequestMapping("isNameExists")
    public Envelop isNameExists(String name) {
        String url = "/tj/tjDimensionMainName" ;
        try {
            String filter = "name=" + name;
            List<TjDimensionMain> tjDimensionMains = tjDimensionMainService.search(filter);
            return ObjEnvelop.getSuccess("",tjDimensionMains.size() >0);
        } catch (Exception e) {
            e.getMessage();
        }
        return  failed("查询失败");
    }
    /**
     * 校验code是否唯一
     * @param code
     * @return
     */
    @RequestMapping("isCodeExists")
    public Envelop isCodeExists(String code) {
        String url = "/tj/tjDimensionMainCode" ;
        try {
            String filter = "code=" + code;
            List<TjDimensionMain> tjDimensionMains = tjDimensionMainService.search(filter);
            return ObjEnvelop.getSuccess("",tjDimensionMains.size() >0);
        } catch (Exception e) {
            e.getMessage();
        }
        return  failed("查询失败");
    }
//    @RequestMapping("/getTjDimensionMainInfo")
//    public Envelop getTjDimensionMainInfo(String quotaCode, String name, int page, int rows){
//        String url = "/tj/getTjDimensionMainInfoList";
//        String resultStr = "";
//        Envelop envelop = new Envelop();
//        Map<String, Object> params = new HashMap<>();
//        StringBuffer mainFilter = new StringBuffer("status=1");
//        if (!StringUtils.isEmpty(quotaCode)) {
//            params.put("filter", "quotaCode=" + quotaCode);
//        }
//        if (!StringUtils.isEmpty(name)) {
//            mainFilter.append("name?" + name + " g1;code?" + name + " g1;");
//        }
//        String filters = mainFilter.toString();
//        if (!StringUtils.isEmpty(filters)) {
//            params.put("filters", filters);
//        }
//        params.put("page", page);
//        params.put("size", rows);
//        try {
//            ListResult listResult = tjDimensionMainClient.search(fields, filters, sorts, size, page);
//
//            List<TjDimensionMainModel> mainModelList  = new ArrayList<>();
//            if(listResult.getTotalCount() != 0){
//                List<Map<String,Object>> modelList = listResult.getDetailModelList();
//                for(Map<String,Object> map : modelList){
//                    TjDimensionMainModel tjDimensionMainModel = objectMapper.convertValue(map,TjDimensionMainModel.class);
//                    mainModelList.add(tjDimensionMainModel);
//                }
//                ListResult listResult2 = tjQuotaDimensionMainClient.search(fields, filter, sorts, size, page);
//                List<TjQuotaDimensionMainModel> mainModelList2  = new ArrayList<>();
//                if(listResult2.getTotalCount() != 0) {
//                    List<Map<String, Object>> modelList2 = listResult2.getDetailModelList();
//                    for (Map<String, Object> map : modelList2) {
//                        TjQuotaDimensionMainModel tjQuotaDimensionMainModel = objectMapper.convertValue(map, TjQuotaDimensionMainModel.class);
//                        TjDimensionMain tjDimensionMain = tjDimensionMainClient.getTjDimensionMain(tjQuotaDimensionMainModel.getMainCode());
//                        if (tjDimensionMain != null) {
//                            tjQuotaDimensionMainModel.setName(tjDimensionMain.getName());
//                        }
//                        mainModelList2.add(tjQuotaDimensionMainModel);
//                    }
//                }
//                List<String> list = getTjQuotaDimensionMainOfMainCode(filter, sorts);
//                for (int i=0; i<mainModelList.size(); i++) {
//                    if (list.contains(mainModelList.get(i).getCode())) {
//                        mainModelList.get(i).setChecked(true);
//                    } else {
//                        mainModelList.get(i).setChecked(false);
//                    }
//                }
//                Envelop result = getResult(mainModelList, listResult.getTotalCount(), listResult.getCurrPage(), listResult.getPageSize());
//                result.setObj(mainModelList2);
//                return result;
//            }else{
//                Envelop envelop = new Envelop();
//                return envelop;
//            }
//        } catch (Exception ex) {
//            ex.printStackTrace();
//            return failed(ERR_SYSTEM_DES);
//        }
//    }
}

+ 258 - 0
svr/svr-basic/src/main/java/com/yihu/jw/basic/agadmin/controller/quota/TjDimensionSlaveController.java

@ -0,0 +1,258 @@
//package com.yihu.jw.basic.agadmin.controller.quota;
//
//import com.fasterxml.jackson.databind.ObjectMapper;
//import com.yihu.ehr.constants.SessionAttributeKeys;
//import com.yihu.jw.restmodel.web.Envelop;
//import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
//import com.yihu.jw.util.http.HttpClientUtil;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.stereotype.Controller;
//import org.springframework.ui.Model;
//import org.springframework.util.LinkedMultiValueMap;
//import org.springframework.util.MultiValueMap;
//import org.springframework.util.StringUtils;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.ResponseBody;
//import org.springframework.web.bind.annotation.RestController;
//import org.springframework.web.bind.annotation.SessionAttributes;
//
//import javax.servlet.http.HttpServletRequest;
//import java.io.IOException;
//import java.net.URLDecoder;
//import java.util.HashMap;
//import java.util.Map;
//
///**
// * Created by llh on 2017/5/9.
// */
//@RestController
//@RequestMapping("/tjDimensionSlave")
//public class TjDimensionSlaveController extends EnvelopRestEndpoint {
//
//
//
//    //查询
//    @RequestMapping("/getTjDimensionSlave")
//    @ResponseBody
//    public Object searchTjDimensionSlave(String name, int page, int rows){
//        String url = "/tj/getTjDimensionSlaveList";
//        String resultStr = "";
//        Envelop envelop = new Envelop();
//        Map<String, Object> params = new HashMap<>();
//        StringBuffer stringBuffer = new StringBuffer();
//        if (!StringUtils.isEmpty(name)) {
//            stringBuffer.append("name?" + name );
//        }
//        String filters = stringBuffer.toString();
//        if (!StringUtils.isEmpty(filters)) {
//            params.put("filters", filters);
//        }
//        params.put("page", page);
//        params.put("size", rows);
//        try {
//            resultStr = HttpClientUtil.doGet(comUrl + url, params, username, password);
//            return resultStr;
//        } catch (Exception ex) {
//            ex.printStackTrace();
//            return failed(ERR_SYSTEM_DES);
//        }
//    }
//
//
//
//    /**
//     * 新增修改
//     * @param tjDimensionSlaveModelJsonData
//     * @param request
//     * @return
//     * @throws IOException
//     */
//    @RequestMapping(value = "updateTjDimensionSlave", produces = "text/html;charset=UTF-8")
//    @ResponseBody
//    public Object updateTjDimensionSlave(String tjDimensionSlaveModelJsonData, HttpServletRequest request) throws IOException {
//
//        String url = "/tj/tjDimensionSlave";
//        String resultStr = "";
//        System.out.println();
//        Envelop result = new Envelop();
//        UsersModel userDetailModel = getCurrentUserRedis(request);
//        MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
//        String[] strings = URLDecoder.decode(tjDimensionSlaveModelJsonData, "UTF-8").split(";");
//        TjDimensionSlaveModel detailModel = toModel(strings[0], TjDimensionSlaveModel.class);
//        RestTemplates templates = new RestTemplates();
//
//        try {
//            if (!StringUtils.isEmpty(detailModel.getId())) {
//                Long id = detailModel.getId();
//                resultStr = templates.doGet(comUrl + "/tj/tjDimensionSlaveId/" + id);
//                Envelop envelop = getEnvelop(resultStr);
//                if (envelop.isSuccessFlg()) {
//                    TjDimensionSlaveModel updateTjDimensionSlave = getEnvelopModel(envelop.getObj(), TjDimensionSlaveModel.class);
//
//                    updateTjDimensionSlave.setCode(detailModel.getCode());
//                    updateTjDimensionSlave.setName(detailModel.getName());
//                    updateTjDimensionSlave.setType(detailModel.getType());
//                    updateTjDimensionSlave.setStatus(detailModel.getStatus());
//                    updateTjDimensionSlave.setRemark(detailModel.getRemark());
//                    updateTjDimensionSlave.setUpdateUser(userDetailModel.getId());
//                    updateTjDimensionSlave.setUpdateUserName(userDetailModel.getRealName());
//                    params.add("model", toJson(updateTjDimensionSlave));
//
//                    resultStr = templates.doPost(comUrl + url, params);
//                } else {
//                    result.setSuccessFlg(false);
//                    result.setErrorMsg(envelop.getErrorMsg());
//                    return result;
//                }
//            } else {
//                detailModel.setCreateUser(userDetailModel.getId());
//                detailModel.setCreateUserName(userDetailModel.getRealName());
//                params.add("model", toJson(detailModel));
//                resultStr = templates.doPost(comUrl + url, params);
//            }
//        } catch (Exception e) {
//            e.printStackTrace();
//            return failed(ERR_SYSTEM_DES);
//        }
//        return resultStr;
//    }
//
//    /**
//     * 删除消息
//     * @param tjDimensionSlaveId
//     * @return
//     */
//    @RequestMapping("deleteTjDimensionSlave")
//    @ResponseBody
//    public Object deleteTjDimensionSlave(Long tjDimensionSlaveId) {
//        String url = "/tj/tjDimensionSlave";
//        String resultStr = "";
//        Envelop result = new Envelop();
//        Map<String, Object> params = new HashMap<>();
//        ObjectMapper mapper = new ObjectMapper();
//
//        params.put("id", tjDimensionSlaveId);
//        try {
//            resultStr = HttpClientUtil.doDelete(comUrl + url, params, username, password);
//            result = mapper.readValue(resultStr, Envelop.class);
//            if (result.isSuccessFlg()) {
//                result.setSuccessFlg(true);
//            } else {
//                result.setSuccessFlg(false);
//                result.setErrorMsg("删除失败");
//            }
//            return result;
//        } catch (Exception e) {
//            e.printStackTrace();
//            return failed(ERR_SYSTEM_DES);
//        }
//    }
//
//
//    /**
//     * 根据id获取消息
//     * @param model
//     * @param id
//     * @return
//     */
//    @RequestMapping("getTjDimensionSlaveById")
//    @ResponseBody
//    public TjDimensionSlaveModel getTjDimensionSlaveById(Model model, Long id ) {
//        String url ="/tj/tjDimensionSlaveId/" +id;
//        String resultStr = "";
//        Envelop envelop = new Envelop();
//        Map<String, Object> params = new HashMap<>();
//        params.put("id", id);
//        try {
//            resultStr = HttpClientUtil.doGet(comUrl + url, params, username, password);
//            Envelop ep = getEnvelop(resultStr);
//            TjDimensionSlaveModel detailModel = toModel(toJson(ep.getObj()),TjDimensionSlaveModel.class);
//            return detailModel;
//        } catch (Exception e) {
//            return null;
//        }
//    }
//
//    /**
//     * 校验名称是否唯一
//     * @param name
//     * @return
//     */
//    @RequestMapping("isNameExists")
//    @ResponseBody
//    public boolean isNameExists(String name) {
//        String url = "/tj/tjDimensionSlaveName" ;
//        String resultStr = "";
//        Envelop result = new Envelop();
//        Map<String, Object> params = new HashMap<>();
//        ObjectMapper mapper = new ObjectMapper();
//        params.put("name", name);
//        try {
//            resultStr = HttpClientUtil.doGet(comUrl + url, params, username, password);
//            if (resultStr.equals("true")) {
//                return  true;
//            } else {
//
//            }
//        } catch (Exception e) {
//            e.getMessage();
//        }
//        return  false;
//    }
//
//    /**
//     * 校验code是否唯一
//     * @param code
//     * @return
//     */
//    @RequestMapping("isCodeExists")
//    @ResponseBody
//    public boolean isCodeExists(String code) {
//        String url = "/tj/tjDimensionSlaveCode" ;
//        String resultStr = "";
//        Envelop result = new Envelop();
//        Map<String, Object> params = new HashMap<>();
//        ObjectMapper mapper = new ObjectMapper();
//        params.put("code", code);
//        try {
//            resultStr = HttpClientUtil.doGet(comUrl + url, params, username, password);
//            if (resultStr.equals("true")) {
//                return  true;
//            } else {
//
//            }
//        } catch (Exception e) {
//            e.getMessage();
//        }
//        return  false;
//    }
//
//    @RequestMapping("/getTjDimensionSlaveInfo")
//    @ResponseBody
//    public Object getTjDimensionSlaveInfo(String quotaCode, String name, int page, int rows){
//        String url = "/tj/getTjDimensionSlaveInfoList";
//        String resultStr = "";
//        Envelop envelop = new Envelop();
//        Map<String, Object> params = new HashMap<>();
//        StringBuffer slaveFilter = new StringBuffer("status=1");
//        if (!StringUtils.isEmpty(quotaCode)) {
//            params.put("filter", "quotaCode=" + quotaCode);
//        }
//        if (!StringUtils.isEmpty(name)) {
//            slaveFilter.append("name?" + name + " g1;code?" + name + " g1;");
//        }
//        String filters = slaveFilter.toString();
//        if (!StringUtils.isEmpty(filters)) {
//            params.put("filters", filters);
//        }
//        params.put("page", page);
//        params.put("size", rows);
//        try {
//            resultStr = HttpClientUtil.doGet(comUrl + url, params, username, password);
//            return resultStr;
//        } catch (Exception ex) {
//            ex.printStackTrace();
//            return failed(ERR_SYSTEM_DES);
//        }
//    }
//}

+ 947 - 0
svr/svr-basic/src/main/java/com/yihu/jw/basic/agadmin/controller/quota/TjQuotaController.java

@ -0,0 +1,947 @@
//package com.yihu.jw.basic.agadmin.controller.quota;
//
//import com.fasterxml.jackson.core.type.TypeReference;
//import com.fasterxml.jackson.databind.ObjectMapper;
//
//import com.yihu.jw.restmodel.web.Envelop;
//import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
//import com.yihu.jw.util.http.HttpClientUtil;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.stereotype.Controller;
//import org.springframework.ui.Model;
//import org.springframework.util.LinkedMultiValueMap;
//import org.springframework.util.MultiValueMap;
//import org.springframework.util.StringUtils;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.ResponseBody;
//import org.springframework.web.bind.annotation.RestController;
//import org.springframework.web.bind.annotation.SessionAttributes;
//import org.springframework.web.client.RestClientException;
//import org.springframework.web.multipart.MultipartFile;
//
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//import java.io.*;
//import java.net.URLDecoder;
//import java.util.*;
//
///**
// * Created by Administrator on 2017/6/13.
// */
//@RestController
//@RequestMapping("/tjQuota")
//public class TjQuotaController extends EnvelopRestEndpoint {
//
//
//    @RequestMapping("/getTjQuota")
//    @ResponseBody
//    public Object searchTjQuota(String name, Integer quotaType, int page, int rows) {
//        String url = "/tj/getTjQuotaList";
//        String resultStr = "";
//        Envelop envelop = new Envelop();
//        Map<String, Object> params = new HashMap<>();
//        params.put("filters", "");
//        StringBuffer stringBuffer = new StringBuffer();
//        stringBuffer.append("status=1;");
//        if (!StringUtils.isEmpty(name)) {
//            stringBuffer.append("name?" + name.trim() + " g1;code?" + name.trim() + " g1;");
//        }
//        if (!StringUtils.isEmpty(quotaType)) {
//            stringBuffer.append("quotaType=" + quotaType + ";");
//        } /*else {
//            stringBuffer.append("quotaType=-1");
//        }*/
//        String filters = stringBuffer.toString();
//        if (!StringUtils.isEmpty(filters)) {
//            params.put("filters", filters);
//        }
//        params.put("page", page);
//        params.put("size", rows);
//        try {
//            resultStr = HttpClientUtil.doGet(comUrl + url, params, username, password);
//            return resultStr;
//        } catch (Exception ex) {
//            ex.printStackTrace();
//            return failed(ERR_SYSTEM_DES);
//        }
//    }
//
//    /**
//     * 新增修改
//     *
//     * @param tjQuotaModelJsonData
//     * @param request
//     * @return
//     * @throws IOException
//     */
//    @RequestMapping(value = "updateTjDataSource", produces = "text/html;charset=UTF-8")
//    @ResponseBody
//    public Object updateTjQuota(String tjQuotaModelJsonData, HttpServletRequest request) throws IOException {
//
//        String url = "/tj/addTjQuota/";
//        String resultStr = "";
//        Envelop result = new Envelop();
//        UsersModel userDetailModel = getCurrentUserRedis(request);
//        MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
//        String[] strings = URLDecoder.decode(tjQuotaModelJsonData, "UTF-8").split(";");
//        TjQuotaModel detailModel = toModel(strings[0], TjQuotaModel.class);
//        RestTemplates templates = new RestTemplates();
//
//        try {
//            if (!StringUtils.isEmpty(detailModel.getId())) {
//                Long tjQuotaId = detailModel.getId();
//                resultStr = templates.doGet(comUrl + "/tj/getTjQuotaById/" + tjQuotaId);
//                Envelop envelop = getEnvelop(resultStr);
//                if (envelop.isSuccessFlg()) {
//                    TjQuotaModel updateTjQuota = getEnvelopModel(envelop.getObj(), TjQuotaModel.class);
//
//                    updateTjQuota.setResultGetType(detailModel.getResultGetType());
//                    updateTjQuota.setCode(detailModel.getCode());
//                    updateTjQuota.setName(detailModel.getName());
//                    updateTjQuota.setCron(detailModel.getCron());
//                    updateTjQuota.setJobStatus(detailModel.getJobStatus());
//                    updateTjQuota.setExecType(detailModel.getExecType());
//                    updateTjQuota.setExecTime(detailModel.getExecTime());
//                    updateTjQuota.setJobClazz(detailModel.getJobClazz());
//                    updateTjQuota.setQuotaType(detailModel.getQuotaType());
//                    updateTjQuota.setDataLevel(detailModel.getDataLevel());
//                    updateTjQuota.setRemark(detailModel.getRemark());
//                    updateTjQuota.setUpdateUser(userDetailModel.getId());
//                    updateTjQuota.setUpdateUserName(userDetailModel.getRealName());
//                    updateTjQuota.setTjQuotaDataSaveModel(detailModel.getTjQuotaDataSaveModel());
//                    updateTjQuota.setTjQuotaDataSourceModel(detailModel.getTjQuotaDataSourceModel());
//                    updateTjQuota.setTjQuotaChartModel(detailModel.getTjQuotaChartModel());
//                    params.add("model", toJson(updateTjQuota));
//
//                    resultStr = templates.doPost(comUrl + url, params);
//                } else {
//                    result.setSuccessFlg(false);
//                    result.setErrorMsg(envelop.getErrorMsg());
//                    return result;
//                }
//            } else {
//                detailModel.setCreateUser(userDetailModel.getId());
//                detailModel.setCreateUserName(userDetailModel.getRealName());
//                params.add("model", toJson(detailModel));
//                resultStr = templates.doPost(comUrl + url, params);
//            }
//        } catch (Exception e) {
//            e.printStackTrace();
//            return failed(ERR_SYSTEM_DES);
//        }
//        return resultStr;
//    }
//
//    /**
//     * 删除
//     *
//     * @param tjQuotaId
//     * @return
//     */
//    @RequestMapping("deleteTjDataSave")
//    @ResponseBody
//    public Object deleteTjQuota(Long tjQuotaId) {
//        String url = "/tj/deleteTjQuota";
//        String resultStr = "";
//        Envelop result = new Envelop();
//        Map<String, Object> params = new HashMap<>();
//        ObjectMapper mapper = new ObjectMapper();
//
//        //判断资源视图中有没有用到此视图,有用到 不允许删除
//        String resQuotaUrl = "/resourceQuota/searchByQuotaId";
//
//        try {
//            params.put("quotaId", tjQuotaId);
//            resultStr = HttpClientUtil.doGet(comUrl + resQuotaUrl, params, username, password);
//            result = mapper.readValue(resultStr, Envelop.class);
//            if (result.getObj() != null) {
//                result.setSuccessFlg(false);
//                result.setErrorMsg("指标在视图中被使用暂时不能删除,若要删除先解除资源视图中指标关系");
//                return result;
//            }
//
//            params.clear();
//            params.put("id", tjQuotaId);
//            resultStr = HttpClientUtil.doDelete(comUrl + url, params, username, password);
//            result = mapper.readValue(resultStr, Envelop.class);
//            if (result.isSuccessFlg()) {
//                result.setSuccessFlg(true);
//            } else {
//                result.setSuccessFlg(false);
//                result.setErrorMsg("删除失败");
//            }
//            return result;
//        } catch (Exception e) {
//            e.printStackTrace();
//            return failed(ERR_SYSTEM_DES);
//        }
//    }
//
//    /**
//     * 根据id获取消息
//     *
//     * @param model
//     * @param id
//     * @return
//     */
//    @RequestMapping("getTjQuotaById")
//    @ResponseBody
//    public Object getTjQuotaById(Model model, Long id) {
//        String url = "/tj/getTjQuotaById/" + id;
//        String resultStr = "";
//        Envelop envelop = new Envelop();
//        Map<String, Object> params = new HashMap<>();
//        params.put("id", id);
//        TjQuotaModel detailModel = null;
//        try {
//            resultStr = HttpClientUtil.doGet(comUrl + url, params, username, password);
//            Envelop ep = getEnvelop(resultStr);
//            detailModel = toModel(toJson(ep.getObj()), TjQuotaModel.class);
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//        return detailModel;
//    }
//
//    /**
//     * 校验name是否唯一,true已存在
//     *
//     * @param name
//     * @return
//     */
//    @RequestMapping("hasExistsName")
//    @ResponseBody
//    public boolean hasExistsName(String name) {
//        String url = "/tj/tjQuotaExistsName/" + name;
//        String resultStr = "";
//        Envelop result = new Envelop();
//        Map<String, Object> params = new HashMap<>();
//        ObjectMapper mapper = new ObjectMapper();
//        params.put("name", name);
//        try {
//            resultStr = HttpClientUtil.doGet(comUrl + url, params, username, password);
//            if (resultStr.equals("true")) {
//                return true;
//            }
//        } catch (Exception e) {
//            e.getMessage();
//        }
//        return false;
//    }
//
//    /**
//     * 校验code是否唯一
//     *
//     * @param code
//     * @return
//     */
//    @RequestMapping("hasExistsCode")
//    @ResponseBody
//    public boolean hasExistsCode(String code) {
//        String url = "/tj/tjQuotaExistsCode/" + code;
//        String resultStr = "";
//        Envelop result = new Envelop();
//        Map<String, Object> params = new HashMap<>();
//        ObjectMapper mapper = new ObjectMapper();
//        params.put("code", code);
//        try {
//            resultStr = HttpClientUtil.doGet(comUrl + url, params, username, password);
//            if (resultStr.equals("true")) {
//                return true;
//            }
//        } catch (Exception e) {
//            e.getMessage();
//        }
//        return false;
//    }
//
//    /**
//     * 初始执行(全量统计)
//     */
//    @RequestMapping("firstExecuteQuota")
//    @ResponseBody
//    public Object firstExecuteQuota(Long tjQuotaId) {
//        Envelop envelop = new Envelop();
//        Map<String, Object> params = new HashMap<>();
//        params.put("id", tjQuotaId);
//        try {
//            String url = "/job/firstExecuteQuota";
//            String resultStr = HttpClientUtil.doPost(comUrl + url, params, username, password);
//            envelop = objectMapper.readValue(resultStr, Envelop.class);
//            return envelop;
//        } catch (Exception e) {
//            e.printStackTrace();
//            return failed(ERR_SYSTEM_DES);
//        }
//    }
//
//    /**
//     * 执行指标
//     */
//    @RequestMapping("execuQuota")
//    @ResponseBody
//    public Object execuQuota(Long tjQuotaId, String startDate, String endDate) {
//        Envelop envelop = new Envelop();
//        Map<String, Object> params = new HashMap<>();
//        params.put("id", tjQuotaId);
//        if (!StringUtils.isEmpty(startDate)) {
//            params.put("startDate", startDate);
//        }
//        if (!StringUtils.isEmpty(endDate)) {
//            params.put("endDate", endDate);
//        }
//        try {
//            String url = "/job/execuJob";
//            String resultStr = HttpClientUtil.doPost(comUrl + url, params, username, password);
//            envelop = objectMapper.readValue(resultStr, Envelop.class);
//            return envelop;
//        } catch (Exception e) {
//            e.printStackTrace();
//            return failed(ERR_SYSTEM_DES);
//        }
//    }
//
//    /**
//     * 指标结果页
//     *
//     * @param model
//     * @return
//     */
//    @RequestMapping("initialResult")
//    public String initialResult(Model model, long tjQuotaId, String quotaCode, String quotaType, String name) throws Exception {
//        model.addAttribute("contentPage", "/report/zhibiao/resultIndex");
//        model.addAttribute("id", tjQuotaId);
//        model.addAttribute("quotaType", quotaType);
//        model.addAttribute("name", name);
//        String urlSlave = "/tj/getDimensionSlaveByQuotaCode";
//        Map<String, Object> params = new HashMap<>();
//        params.put("quotaCode", quotaCode);
//        Envelop result = null;
//        try {
//            String resultStr = HttpClientUtil.doGet(comUrl + urlSlave, params, username, password);
//            result = objectMapper.readValue(resultStr, Envelop.class);
//            if (result.isSuccessFlg() && result.getDetailModelList().size() > 0) {
//                List<HashMap> slaveModelList = result.getDetailModelList();
//                if (slaveModelList != null && slaveModelList.size() > 0) {
//                    int num = 1;
//                    for (HashMap map : slaveModelList) {
//                        TjQuotaDimensionSlaveModel quotaDimensionSlaveModel = objectMapper.convertValue(map, TjQuotaDimensionSlaveModel.class);
//                        RestTemplates templates = new RestTemplates();
//                        params.clear();
//                        params.put("code", quotaDimensionSlaveModel.getSlaveCode());
//                        resultStr = HttpClientUtil.doGet(comUrl + "/tj/getTjDimensionSlaveByCode", params, username, password);
//                        result = objectMapper.readValue(resultStr, Envelop.class);
//                        if (result.isSuccessFlg()) {
//                            TjDimensionSlaveModel tjDimensionSlaveModel = objectMapper.convertValue(result.getObj(), TjDimensionSlaveModel.class);
//                            model.addAttribute("slaveKey" + num + "Name", tjDimensionSlaveModel.getName());
//                            num++;
//                        }
//                    }
//                }
//            }
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//        return "emptyView";
//    }
//
//
//    /**
//     * 指标执行结果
//     *
//     * @param tjQuotaId
//     * @return
//     */
//    @RequestMapping("selectQuotaResult")
//    @ResponseBody
//    public Object selectQuotaResult(Long tjQuotaId, int page, int rows,
//                                    String startTime, String endTime, String orgName,
//                                    String province, String city, String district,String res, HttpServletRequest request) {
//        Envelop result = new Envelop();
//        String resultStr = "";
//        String url = "/tj/tjGetQuotaResult";
//        try {
//            Map<String, Object> filters = new HashMap<>();
//            filters.put("startTime", startTime);
//            filters.put("endTime", endTime);
//            filters.put("org", orgName);
//            filters.put("province", province);
//            filters.put("town", city);
//            filters.put("district", district);
//             // 结果大于0
//            filters.put("result", res);
//            Map<String, Object> params = new HashMap<>();
//            List<String> userOrgList = getUserOrgSaasListRedis(request);
//            params.put("userOrgList", userOrgList);
//            params.put("id", tjQuotaId);
//            params.put("pageNo", page);
//            params.put("pageSize", rows);
//            params.put("filters", objectMapper.writeValueAsString(filters));
//            ObjectMapper mapper = new ObjectMapper();
//            resultStr = HttpClientUtil.doGet(comUrl + url, params, username, password);
//            result = mapper.readValue(resultStr, Envelop.class);
//            return result;
//        } catch (Exception e) {
//            e.printStackTrace();
//            return failed(ERR_SYSTEM_DES);
//        }
//    }
//
//    /**
//     * 指标日志查询
//     *
//     * @param model
//     * @return
//     */
//    @RequestMapping("initialQuotaLog")
//    public String initialQuotaLog(Model model, String quotaCode, String quotaType, String name) {
//        model.addAttribute("contentPage", "/report/zhibiao/zhiBiaoLogIndex");
//        model.addAttribute("quotaCode", quotaCode);
//        model.addAttribute("quotaType", quotaType);
//        model.addAttribute("name", name);
//        return "emptyView";
//    }
//
//    /**
//     * 获取指标日志信息
//     *
//     * @param
//     * @return
//     */
//    @RequestMapping("queryQuotaLog")
//    @ResponseBody
//    public Object queryQuotaLog(String quotaCode, String startTime, String endTime, int page, int rows) throws Exception {
//        String url = "/tj/getTjQuotaLogList";
//        String resultStr = "";
//        Envelop envelop = new Envelop();
//        Map<String, Object> params = new HashMap<>();
//
//        params.put("startTime", startTime);
//        params.put("endTime", endTime);
//        params.put("quotaCode", quotaCode);
//        params.put("fields", "");
//        params.put("sorts", "");
//        params.put("page", page);
//        params.put("size", rows);
//        try {
//            resultStr = HttpClientUtil.doGet(comUrl + url, params, username, password);
//            return resultStr;
//        } catch (Exception ex) {
//            ex.printStackTrace();
//            return failed(ERR_SYSTEM_DES);
//        }
//    }
//
//    /**
//     * 获取quotaCode查询是否配置维度
//     *
//     * @param
//     * @return
//     */
//    @RequestMapping("hasConfigDimension")
//    @ResponseBody
//    public boolean hasConfigDimension(String quotaCode) throws Exception {
//        String url = "/tj/hasConfigDimension";
//        String resultStr = "";
//        Map<String, Object> params = new HashMap<>();
//
//        params.put("quotaCode", quotaCode);
//        try {
//            resultStr = HttpClientUtil.doGet(comUrl + url, params, username, password);
//            if (resultStr.equals("true")) {
//                return true;
//            }
//        } catch (Exception e) {
//            e.getMessage();
//        }
//        return false;
//    }
//
//
//    //带检索分页的查找指标方法,用于下拉框
//    @RequestMapping("/rsQuota")
//    @ResponseBody
//    public Object searchRsQuota(String searchParm, int page, int rows) {
//        String url = "/tj/getTjQuotaList";
//        Envelop envelop = new Envelop();
//        Map<String, Object> params = new HashMap<>();
//        StringBuffer stringBuffer = new StringBuffer();
//        if (!StringUtils.isEmpty(searchParm)) {
//            stringBuffer.append("name?" + searchParm + ";");
//        }
//        params.put("filters", "");
//        String filters = stringBuffer.toString();
//        if (!StringUtils.isEmpty(filters)) {
//            params.put("filters", filters);
//        }
//        params.put("page", page);
//        params.put("size", rows);
//        try {
//            String envelopStrGet = HttpClientUtil.doGet(comUrl + url, params, username, password);
//            Envelop envelopGet = objectMapper.readValue(envelopStrGet, Envelop.class);
//            List<TjQuotaModel> tjQuotaModelList = new ArrayList<>();
//            List<Map> list = new ArrayList<>();
//            if (envelopGet.isSuccessFlg()) {
//                tjQuotaModelList = (List<TjQuotaModel>) getEnvelopList(envelopGet.getDetailModelList(), new ArrayList<TjQuotaModel>(), TjQuotaModel.class);
//                for (TjQuotaModel m : tjQuotaModelList) {
//                    Map map = new HashMap<>();
//                    map.put("id", m.getCode());
//                    map.put("name", m.getName());
//                    list.add(map);
//                }
//                envelopGet.setDetailModelList(list);
//                return envelopGet;
//            }
//            return envelop;
//        } catch (Exception ex) {
//            ex.printStackTrace();
//            return failed(ERR_SYSTEM_DES);
//        }
//    }
//
//
//    @RequestMapping("/getTjQuotaChartList")
//    @ResponseBody
//    public Object getQuotaChartList(String quotaCode, String name, int dictId, int page, int rows) {
//        String url = "/tj/getTjQuotaChartList";
//        String resultStr = "";
//        Envelop envelop = new Envelop();
//        Map<String, Object> params = new HashMap<>();
//        params.put("filters", "");
//        StringBuffer stringBuffer = new StringBuffer();
//        if (!StringUtils.isEmpty(quotaCode)) {
//            stringBuffer.append("quotaCode=" + quotaCode);
//        }
//        if (!StringUtils.isEmpty(name)) {
//            stringBuffer.append("value?" + name);
//        }
//        String filters = stringBuffer.toString();
//        if (!StringUtils.isEmpty(filters)) {
//            params.put("filters", filters);
//        }
//        String filter = "";
//        if (!StringUtils.isEmpty(dictId)) {
//            filter = "dictId=" + dictId;
//        }
//        params.put("dictfilter", filter);
//        params.put("page", page);
//        params.put("size", rows);
//        try {
//            resultStr = HttpClientUtil.doGet(comUrl + url, params, username, password);
//            return resultStr;
//        } catch (Exception ex) {
//            ex.printStackTrace();
//            return failed(ERR_SYSTEM_DES);
//        }
//    }
//
//    /**
//     * 添加主维度子表
//     *
//     * @param jsonModel 维度子表信息的json串
//     * @param request
//     * @return
//     * @throws IOException
//     */
//    @RequestMapping(value = "addTjQuotaChart", produces = "text/html;charset=UTF-8")
//    @ResponseBody
//    public Object addTjQuotaChart(String quotaCode, String jsonModel, HttpServletRequest request) throws IOException {
//        String url = "/tj/batchTjQuotaChart";
//        String resultStr = "";
//        Envelop result = new Envelop();
//        MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
//        params.add("model", jsonModel);
//        RestTemplates templates = new RestTemplates();
//        try {
//            resultStr = templates.doPost(comUrl + url, params);
//        } catch (RestClientException e) {
//            e.printStackTrace();
//            return failed(ERR_SYSTEM_DES);
//        }
//        return resultStr;
//    }
//
//    /**
//     * 指标文件导入
//     *
//     * @param file
//     * @param request
//     * @param response
//     * @return
//     * @throws IOException
//     */
//    private static final String parentFile = "tjQuotaDataSet";
//
//    @RequestMapping(value = "import")
//    @ResponseBody
//    public void importData(MultipartFile file, HttpServletRequest request, HttpServletResponse response) throws IOException {
//
//        try {
//            UsersModel user = getCurrentUserRedis(request);
//            writerResponse(response, 1 + "", "l_upd_progress");
//            request.setCharacterEncoding("UTF-8");
//            TjQuotaMsgReader excelReader = new TjQuotaMsgReader();
//            excelReader.read(file.getInputStream());
//            //指标
//            List<TjQuotaMsg> errorLs = excelReader.getErrorLs();
//            List<TjQuotaMsg> correctLs = excelReader.getCorrectLs();
//            //主维度
//            List<TjQuotaDMainMsg> quotaMainErrorLs = excelReader.getQuotaMainErrorLs();
//            List<TjQuotaDMainMsg> quotaMainCorrectLs = excelReader.getQuotaMainCorrectLs();
//            //细维度
//            List<TjQuotaDSlaveMsg> quotaSlaveErrorLs = excelReader.getQuotaSlaveErrorLs();
//            List<TjQuotaDSlaveMsg> quotaSlaveCorrectLs = excelReader.getQuotaSlaveCorrectLs();
//            writerResponse(response, 35 + "", "l_upd_progress");
//
//            Map<String, Object> LsMap = validate(user, excelReader, errorLs, correctLs, quotaMainErrorLs, quotaMainCorrectLs, quotaSlaveErrorLs, quotaSlaveCorrectLs);
//            writerResponse(response, 55 + "", "l_upd_progress");
//
//            Map rs = new HashMap<>();
//            //输出错误信息
//            if (errorLs.size() > 0 || quotaMainErrorLs.size() > 0 || quotaSlaveErrorLs.size() > 0) {
//                String eFile = TemPath.createFileName(user.getLoginCode(), "e", parentFile, ".xls");
//                new TjQuotaMsgWriter().write(new File(TemPath.getFullPath(eFile, parentFile)), errorLs, quotaMainErrorLs, quotaSlaveErrorLs);
//                rs.put("eFile", new String[]{eFile.substring(0, 10), eFile.substring(11, eFile.length())});
//            }
//            writerResponse(response, 65 + "", "l_upd_progress");
//
//            if (LsMap.size() > 0) {
//                saveData(LsMap);
//            }
//            if (errorLs.size() == 0 && quotaMainErrorLs.size() == 0 && quotaSlaveErrorLs.size() == 0){
//                writerResponse(response, 100 + ",'suc'", "l_upd_progress");
//            } else {
//                writerResponse(response, 100 + ",'" + toJson(rs) + "'", "l_upd_progress");
//            }
//        } catch (Exception e) {
//            e.printStackTrace();
//            writerResponse(response, "-1", "l_upd_progress");
//        }
//    }
//
//    protected void writerResponse(HttpServletResponse response, String body, String client_method) throws IOException {
//        StringBuffer sb = new StringBuffer();
//        sb.append("<script type=\"text/javascript\">//<![CDATA[\n");
//        sb.append("     parent.").append(client_method).append("(").append(body).append(");\n");
//        sb.append("//]]></script>");
//
//        response.setContentType("text/html;charset=UTF-8");
//        response.addHeader("Pragma", "no-cache");
//        response.setHeader("Cache-Control", "no-cache,no-store,must-revalidate");
//        response.setHeader("Cache-Control", "pre-check=0,post-check=0");
//        response.setDateHeader("Expires", 0);
//        response.getWriter().write(sb.toString());
//        response.flushBuffer();
//    }
//
//    /**
//     * 验证指标编码、名称、指标分类、主维度、细维度
//     *
//     * @param excelReader         待验证的数据
//     * @param errorLs             指标错误数据
//     * @param correctLs           指标正常数据
//     * @param quotaMainErrorLs    主维度错误数据
//     * @param quotaMainCorrectLs  主维度正常数据
//     * @param quotaSlaveErrorLs   细维度错误数据
//     * @param quotaSlaveCorrectLs 细维度正常数据
//     * @return
//     * @throws Exception
//     */
//    private Map<String,Object> validate(UsersModel user,TjQuotaMsgReader excelReader,
//                          List<TjQuotaMsg> errorLs, List<TjQuotaMsg> correctLs ,
//                           List<TjQuotaDMainMsg>  quotaMainErrorLs ,List<TjQuotaDMainMsg>  quotaMainCorrectLs ,
//                           List<TjQuotaDSlaveMsg>  quotaSlaveErrorLs ,List<TjQuotaDSlaveMsg>  quotaSlaveCorrectLs) throws Exception {
//        List saveLs = new ArrayList<>();
//        List quotaMainLs = new ArrayList<>();
//        List quotaSlaveLs = new ArrayList<>();
//        //验证指标编码是否存在
//        Set<String> quotaCodes = findExistCodeOrName("code", excelReader.getRepeat().get("code"));
//        //验证指标名称是否存在
//        Set<String> quotaNames = findExistCodeOrName("name", excelReader.getRepeat().get("name"));
//        //根据指标类型名称获取指标类型id
//        Map<String, String> quotaTypes = findExistQuotaType(excelReader.getRepeat().get("quotaType"));
//        //判断主维度编码是否存在
//        Set<String> mainCodes = findExistCodeOrName("mainCode", excelReader.getQuotaMainRepeat().get("mainCode"));
//        //判断细维度编码是否存在
//        Set<String> slaveCodes = findExistCodeOrName("slaveCode", excelReader.getQuotaSlaveRepeat().get("slaveCode"));
//
//        TjQuotaMsg model;
//        TjQuotaDMainMsg TjQuotaDMainModel;
//        TjQuotaDSlaveMsg TjQuotaDSlaveModel;
//        boolean valid;
//        for (int i = 0; i < errorLs.size(); i++) {
//            model = errorLs.get(i);
//            TjQuotaDMainModel = quotaMainErrorLs.get(i);
//            TjQuotaDSlaveModel = quotaSlaveErrorLs.get(i);
//            //验证指标编码是否存在
//            if (quotaCodes.contains(model.getCode())) {
//                model.addErrorMsg("code", "该指标编码已存在!");
//            }
//
////            //验证指标名称是否存在
////            if(quotaNames.contains(model.getName())){
////                model.addErrorMsg("name", "该指标名称已存在!");
////            }
//
//            //根据指标类型名称获取指标类型id
//            if (null == quotaTypes.get(model.getQuotaType())) {
//                model.addErrorMsg("quotaType", "该指标类型不存在!");
//            }
//
//            //判断主维度编码是否存在
//            if (mainCodes.contains(TjQuotaDMainModel.getMainCode())) {
//                TjQuotaDMainModel.addErrorMsg("mainCode", "该主维度编码不存在!");
//            }
//
//            //判断细维度编码是否存在
//            if (slaveCodes.contains(TjQuotaDSlaveModel.getSlaveCode())) {
//                TjQuotaDSlaveModel.addErrorMsg("slaveCode", "该细维度编码不存在!");
//            }
//
//            //判断主维度指标编码是否存在(包括库里存在、现导入文件的指标编码)
//            if (!excelReader.getRepeat().get("code").contains(TjQuotaDMainModel.getMainCode())) {
//                TjQuotaDMainModel.addErrorMsg("quotaCode", "导入指标中找不到该主维度的指标编码!");
//            }
//            //判断细维度指标编码是否存在(包括库里存在、现导入文件的指标编码)
//            if (excelReader.getRepeat().get("code").contains(TjQuotaDSlaveModel.getSlaveCode())) {
//                TjQuotaDSlaveModel.addErrorMsg("quotaCode", "导入指标中找不到该细维度的指标编码!");
//            }
//        }
//
//        for (int i = 0; i < correctLs.size(); i++) {
//            valid = true;
//            model = correctLs.get(i);
//            //验证指标编码是否存在
//            if (quotaCodes.contains(model.getCode())) {
//                model.addErrorMsg("code", "该指标编码已存在!");
//                valid = false;
//            }
////            //验证指标名称是否存在
////            if(quotaNames.contains(model.getName())){
////                model.addErrorMsg("name", "该指标名称已存在!");
////                valid = false;
////            }
//
//            //根据指标类型名称获取指标类型id
//            if (null == quotaTypes.get(model.getQuotaType())) {
//                model.addErrorMsg("quotaType", "该指标类型不存在!");
//                valid = false;
//            }
//            //指标错误信息
//            if (!valid) {
//                errorLs.add(model);
//            } else {
//                model.setQuotaType(quotaTypes.get(model.getQuotaType()));
//                model.setCreateUser(user.getId());
//                model.setCreateUserName(user.getRealName());
//            }
//
//            if (valid) {
//                saveLs.add(correctLs.get(i));
//            }
//        }
//        //主维度
//        for (int i = 0; i < quotaMainCorrectLs.size(); i++) {
//            valid = true;
//            TjQuotaDMainModel = quotaMainCorrectLs.get(i);
//
//            //判断主维度编码是否存在
//            if (!(mainCodes.contains(TjQuotaDMainModel.getMainCode()))) {
//                TjQuotaDMainModel.addErrorMsg("mainCode", "该主维度编码不存在!");
//                valid = false;
//            }
//            //判断主维度指标编码是否存在(包括库里存在、现导入文件的指标编码)
//            if (!(quotaCodes.contains(TjQuotaDMainModel.getQuotaCode()) || excelReader.getRepeat().get("code").contains(TjQuotaDMainModel.getQuotaCode()))) {
//                TjQuotaDMainModel.addErrorMsg("quotaCode", "导入的指标中找不到该主维度的指标编码!");
//                valid = false;
//            }
//            //主维度错误信息
//            if (!valid) {
//                quotaMainErrorLs.add(TjQuotaDMainModel);
//            }
//
//            if (valid) {
//                quotaMainLs.add(quotaMainCorrectLs.get(i));
//            }
//        }
//        //细维度
//        for (int i = 0; i < quotaSlaveCorrectLs.size(); i++) {
//            valid = true;
//            TjQuotaDSlaveModel = quotaSlaveCorrectLs.get(i);
//            //判断细维度编码是否存在
//            if (!(slaveCodes.contains(TjQuotaDSlaveModel.getSlaveCode()))) {
//                TjQuotaDSlaveModel.addErrorMsg("slaveCode", "该细维度编码不存在!");
//                valid = false;
//            }
//            //判断细维度指标编码是否存在(包括库里存在、现导入文件的指标编码)
//            if (!(quotaCodes.contains(TjQuotaDSlaveModel.getQuotaCode()) || excelReader.getRepeat().get("code").contains(TjQuotaDSlaveModel.getQuotaCode()))) {
//                TjQuotaDSlaveModel.addErrorMsg("quotaCode", "导入的指标中找不到该细维度的指标编码!");
//                valid = false;
//            }
//            //细维度错误信息
//            if (!valid) {
//                quotaSlaveErrorLs.add(TjQuotaDSlaveModel);
//            }else{
//                quotaSlaveLs.add(quotaSlaveCorrectLs.get(i));
//            }
//        }
//        Map<String, Object> map = new HashMap<>();
//        if (null != saveLs && saveLs.size() > 0) {
//            map.put("saveLs", saveLs);
//            map.put("quotaMainLs", quotaMainLs);
//            map.put("quotaSlaveLs", quotaSlaveLs);
//        }
//        return map;
//    }
//
//    /**
//     * 获取已经存在的指标编码/指标名称
//     *
//     * @param name  检索字段名称
//     * @param codes 检索列表
//     * @return
//     * @throws Exception
//     */
//    private Set<String> findExistCodeOrName(String name, Set<String> codes) throws Exception {
//
//        Map<String, Object> conditionMap = new HashMap<>();
//        String rs = "";
//        //获取存在的主维度
//        if (!StringUtils.isEmpty(name) && name.equals("mainCode")) {
//            if (null != codes && codes.size() > 0) {
//                conditionMap.put("mainCode", toJson(codes));
//                rs = HttpClientUtil.doPost(comUrl + "/quota/TjDimensionMainIsExist", conditionMap);
//            }
//        } else if (!StringUtils.isEmpty(name) && name.equals("slaveCode")) {
//            //获取存在的细维度
//            if (null != codes && codes.size() > 0) {
//                conditionMap.put("slaveCode", toJson(codes));
//                rs = HttpClientUtil.doPost(comUrl + "/quota/TjDimensionSlaveIsExist", conditionMap);
//            }
//        } else {
//            if (null != codes && codes.size() > 0) {
//                conditionMap.put("type", name);
//                conditionMap.put("json", toJson(codes));
//                rs = HttpClientUtil.doPost(comUrl + "/quota/type_isExist", conditionMap);
//            }
//        }
//
//        return objectMapper.readValue(rs, new TypeReference<Set<String>>() {
//        });
//    }
//
//    /**
//     * 根据指标分类的名称获取指标id和name
//     *
//     * @param names 指标分类名称
//     * @return
//     * @throws Exception
//     */
//    private Map<String, String> findExistQuotaType(Set<String> names) throws Exception {
//        Map map = new HashMap<>();
//        String resultStr = "";
//        if (null != names && names.size() > 0) {
//            map.put("name", toJson(names));
//            resultStr = HttpClientUtil.doPost(comUrl + "/quotaCategory/getQuotaCategoryByName", map, username, password);
//        }
//        Envelop envelopAddr = objectMapper.readValue(resultStr, Envelop.class);
//        Map<String, String> quotaCategoryMap = new HashMap<>();
//        if (null != envelopAddr && null != envelopAddr.getObj()) {
//            quotaCategoryMap = objectMapper.readValue(toJson(envelopAddr.getObj()), new TypeReference<Map<String, String>>() {
//            });
//        }
//        return quotaCategoryMap;
//    }
//
//    /**
//     * 指标、数据源、数据存储、主维度、细维度整体入库
//     *
//     * @param lsMap saveLs、quotaMainLs、quotaSlaveLs
//     * @return
//     */
//    private Envelop saveData(Map<String, Object> lsMap) {
//        Envelop ret = new Envelop();
//        Map map = new HashMap<>();
//        try {
//            map.put("lsMap", toJson(lsMap));
//            String envelopStrNew = HttpClientUtil.doPost(comUrl + "/tjQuota/batch", map, username, password);
//            ret = objectMapper.readValue(envelopStrNew,Envelop.class);
//            return ret;
//        } catch (Exception e) {
//            e.printStackTrace();
//            ret.setSuccessFlg(false);
//            ret.setErrorMsg(e.getMessage());
//            return ret;
//        }
//    }
//
//
//    @RequestMapping("/downLoadErrInfo")
//    public void downLoadErrInfo(String f, String datePath, HttpServletResponse response) throws IOException {
//
//        try {
//            f = datePath + TemPath.separator + f;
//            downLoadFile(TemPath.getFullPath(f, parentFile), response);
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//    }
//
//    public void downLoadFile(String filePath, HttpServletResponse response) throws IOException {
//
//        InputStream fis = null;
//        OutputStream toClient = null;
//        try {
//            File file = new File(filePath);
//            fis = new BufferedInputStream(new FileInputStream(file));
//            byte[] buffer = new byte[fis.available()];
//            fis.read(buffer);
//            fis.close();
//
//            response.reset();
//            response.setContentType("octets/stream");
//            response.addHeader("Content-Length", "" + file.length());
//            response.addHeader("Content-Disposition", "attachment; filename="
//                    + new String(file.getName().getBytes("gb2312"), "ISO8859-1"));
//
//            toClient = new BufferedOutputStream(response.getOutputStream());
//            toClient.write(buffer);
//            toClient.flush();
//            toClient.close();
//        } catch (Exception e) {
//            e.printStackTrace();
//            if (fis != null){
//                fis.close();
//            }
//            if (toClient != null){
//                toClient.close();
//            }
//        }
//    }
//
//    /**
//     * 停止执行指标
//     */
//    @RequestMapping("removeQuota")
//    @ResponseBody
//    public Object removeQuota(Long tjQuotaId) {
//        Envelop envelop = new Envelop();
//        Map<String, Object> params = new HashMap<>();
//        params.put("id", tjQuotaId);
//        try {
//            String url = "/quota/api/v1.0/job/removeJob";
//            String resultStr = HttpClientUtil.doPost(adminInnerUrl + url, params, username, password);
//            if(resultStr.equals("true")){
//                envelop.setSuccessFlg(true);
//            }else{
//                envelop.setSuccessFlg(false);
//            }
//            return envelop;
//        } catch (Exception e) {
//            e.printStackTrace();
//            return failed(ERR_SYSTEM_DES);
//        }
//    }
//
//}

+ 67 - 0
svr/svr-basic/src/main/java/com/yihu/jw/basic/agadmin/controller/quota/TjQuotaDimensionMainController.java

@ -0,0 +1,67 @@
//package com.yihu.jw.basic.agadmin.controller.quota;
//
//import com.yihu.ehr.constants.SessionAttributeKeys;
//
//import com.yihu.jw.restmodel.web.Envelop;
//import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
//import com.yihu.jw.util.http.HttpClientUtil;
//import org.apache.commons.lang.StringUtils;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.util.LinkedMultiValueMap;
//import org.springframework.util.MultiValueMap;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.ResponseBody;
//import org.springframework.web.bind.annotation.RestController;
//import org.springframework.web.bind.annotation.SessionAttributes;
//import org.springframework.web.client.RestClientException;
//
//import javax.servlet.http.HttpServletRequest;
//import java.io.IOException;
//import java.util.HashMap;
//import java.util.Map;
//
///**
// * Created by Administrator on 2017/6/15.
// */
//@RestController
//@RequestMapping("/tjQuotaDimensionMain")
//public class TjQuotaDimensionMainController extends EnvelopRestEndpoint {
//
//
//    /**
//     * 添加主维度子表
//     * @param jsonModel 维度子表信息的json串
//     * @param request
//     * @return
//     * @throws IOException
//     */
//    @RequestMapping(value = "addTjQuotaDimensionMain", produces = "text/html;charset=UTF-8")
//    @ResponseBody
//    public Object addTjQuotaDimensionMain(String quotaCode, String jsonModel, HttpServletRequest request) throws IOException {
//        String url = "/tj/addTjQuotaDimensionMain";
//        String resultStr = "";
//        Envelop result = new Envelop();
//        if (!StringUtils.isBlank(quotaCode)) {
//            url = "/tj/deleteMainByQuotaCode";
//            Map<String, Object> params = new HashMap<>();
//            params.put("quotaCode", quotaCode);
//            try {
//                resultStr = HttpClientUtil.doDelete(comUrl + url, params, username, password);
//            } catch (Exception e) {
//                e.printStackTrace();
//                return failed(ERR_SYSTEM_DES);
//            }
//            return resultStr;
//        }
//        MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
//        params.add("model", jsonModel);
//        RestTemplates templates = new RestTemplates();
//        try {
//            resultStr = templates.doPost(comUrl + url, params);
//        } catch (RestClientException e) {
//            e.printStackTrace();
//            return failed(ERR_SYSTEM_DES);
//        }
//        return resultStr;
//    }
//}

+ 67 - 0
svr/svr-basic/src/main/java/com/yihu/jw/basic/agadmin/controller/quota/TjQuotaDimensionSlaveController.java

@ -0,0 +1,67 @@
//package com.yihu.jw.basic.agadmin.controller.quota;
//
//import com.yihu.ehr.constants.SessionAttributeKeys;
//import com.yihu.jw.restmodel.web.Envelop;
//import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
//import com.yihu.jw.util.http.HttpClientUtil;
//import org.apache.commons.lang.StringUtils;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.stereotype.Controller;
//import org.springframework.util.LinkedMultiValueMap;
//import org.springframework.util.MultiValueMap;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.ResponseBody;
//import org.springframework.web.bind.annotation.RestController;
//import org.springframework.web.bind.annotation.SessionAttributes;
//import org.springframework.web.client.RestClientException;
//
//import javax.servlet.http.HttpServletRequest;
//import java.io.IOException;
//import java.util.HashMap;
//import java.util.Map;
//
///**
// * Created by Administrator on 2017/6/15.
// */
//@RestController
//@RequestMapping("/tjQuotaDimensionMain")
//public class TjQuotaDimensionSlaveController extends EnvelopRestEndpoint {
//
//
//    /**
//     * 添加主维度子表
//     * @param jsonModel 维度子表信息的json串
//     * @param request
//     * @return
//     * @throws IOException
//     */
//    @RequestMapping(value = "addTjQuotaDimensionSlave", produces = "text/html;charset=UTF-8")
//    @ResponseBody
//    public Object addTjQuotaDimensionSlave(String quotaCode, String jsonModel, HttpServletRequest request) throws IOException {
//        String url = "/tj/addTjQuotaDimensionSlave";
//        String resultStr = "";
//        Envelop result = new Envelop();
//        if (!StringUtils.isBlank(quotaCode)) {
//            url = "/tj/deleteSlaveByQuotaCode";
//            Map<String, Object> params = new HashMap<>();
//            params.put("quotaCode", quotaCode);
//            try {
//                resultStr = HttpClientUtil.doDelete(comUrl + url, params, username, password);
//            } catch (Exception e) {
//                e.printStackTrace();
//                return failed(ERR_SYSTEM_DES);
//            }
//            return resultStr;
//        }
//        MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
//        params.add("model", jsonModel);
//        RestTemplates templates = new RestTemplates();
//        try {
//            resultStr = templates.doPost(comUrl + url, params);
//        } catch (RestClientException e) {
//            e.printStackTrace();
//            return failed(ERR_SYSTEM_DES);
//        }
//        return resultStr;
//    }
//}

+ 664 - 0
svr/svr-basic/src/main/java/com/yihu/jw/basic/agadmin/controller/report/ReportController.java

@ -0,0 +1,664 @@
package com.yihu.jw.basic.agadmin.controller.report;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.jw.basic.report.controller.CalculatePointUtil;
import com.yihu.jw.basic.report.service.QcQuotaResultService;
import com.yihu.jw.entity.ehr.report.QcQuotaResult;
import com.yihu.jw.restmodel.ehr.report.MQcDailyReportQuotaResult;
import com.yihu.jw.restmodel.ehr.report.MQcDailyReportResultDetail;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.PageEnvelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import com.yihu.jw.util.common.LogService;
import com.yihu.jw.util.date.DateUtil;
import com.yihu.jw.util.http.HttpClientUtil;
import io.swagger.annotations.Api;
import jxl.Workbook;
import jxl.format.CellFormat;
import jxl.write.*;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletResponse;
import java.io.OutputStream;
import java.text.DecimalFormat;
import java.util.*;
/**
 * Created by llh on 2017/5/9.
 */
@RestController
@RequestMapping("/report")
@Api( tags = {"网关-报表"})
public class ReportController extends EnvelopRestEndpoint {
    @Autowired
    QcQuotaResultService qcQuotaResultService;
    CalculatePointUtil calculatePointUtil=new CalculatePointUtil();
    //所有指标统计结果查询,初始化查询
    @RequestMapping("/getQcOverAllIntegrity")
    public Envelop searchQcOverAllIntegrity(String location,String startTime,String endTime){
        PageEnvelop result = new PageEnvelop();
        List<Object> quotaList = new ArrayList<Object>();
        List<QcQuotaResult> newQuotaList = new ArrayList<QcQuotaResult>();
        Date startDate = DateUtil.formatYMDToYMDHMS(startTime);
        Date endDate = DateUtil.formatYMDToYMDHMS(endTime);
        Calendar calendar = new GregorianCalendar();
        calendar.setTime(endDate);
        calendar.add(calendar.DATE, 1);//把日期往后增加一天.整数往后推,负数往前移动
        endDate = calendar.getTime();   //日期往后推一天
        QcQuotaResult qc = null;
        //按区域查询统计结果集
        quotaList = qcQuotaResultService.getQuotaListByLocation(location, startDate, endDate);
        if(null!=quotaList&&quotaList.size() > 0){
            for (int i = 0; i < quotaList.size(); i++) {
                Object[] obj = (Object[]) quotaList.get(i);
                //json处理
                qc = new QcQuotaResult();
                //指标Id
                String quotaId = obj[0].toString();
                qc.setQuotaId(Long.parseLong(quotaId));
                //指标名称
                qc.setQuotaName(obj[1].toString());
                int realNum = 0;
                int totalNum = 0;
                int errorNum = 0;
                int timelyNum = 0;
                String value = "";
                if (obj[2] != null && obj[3] != null && obj[4] != null && obj[5] != null) {
                    //实收数 (数据元的实收为 应收 - 错误数(标识为空的错误code))
                    totalNum = Integer.valueOf(obj[2].toString());
                    qc.setTotalNum(totalNum);
                    //应收数
                    realNum = Integer.valueOf(obj[3].toString());
                    qc.setRealNum(realNum);
                    //错误数量(该字段只针对数据元的准确性统计)
                    errorNum = Integer.valueOf(obj[4].toString());
                    qc.setErrorNum(errorNum);
                    //及时采集的档案数量
                    timelyNum = Integer.valueOf(obj[5].toString());
                    qc.setTimelyNum(timelyNum);
                    value = calculatePointUtil.calculatePoint(quotaId, realNum, totalNum, errorNum, timelyNum);
                }
                qc.setValue(value + "%");
                newQuotaList.add(qc);
            }
        }
        if(newQuotaList.size() > 0){
            result.setDetailModelList(newQuotaList);
            result.setStatus(200);
        }else {
            result.setStatus(200);
            result.setMessage("查询无数据");
            result.setTotalCount(0);
        }
        return result;
    }
    //根据机构查询所有指标统计结果,初始化查询
    @RequestMapping("/getQcOverAllOrgIntegrity")
    public Envelop searchQcOverAllOrgIntegrity(String location,String orgCode,String startTime,String endTime){
        PageEnvelop result = new PageEnvelop();
        List<Object> quotaList = new ArrayList<Object>();
        List<QcQuotaResult> newQuotaList = new ArrayList<QcQuotaResult>();
        Date startDate = DateUtil.formatYMDToYMDHMS(startTime);
        Date endDate =DateUtil.formatYMDToYMDHMS(endTime);
        Calendar   calendar   =   new   GregorianCalendar();
        calendar.setTime(endDate);
        calendar.add(calendar.DATE,1);//把日期往后增加一天.整数往后推,负数往前移动
        endDate=calendar.getTime();   //日期往后推一天
        QcQuotaResult qc=null;
        //按区域查询统计结果集
        quotaList = qcQuotaResultService.getQuotaListByOrgCode(orgCode,startDate,endDate);
        if(null!=quotaList&&quotaList.size() > 0) {
            for (int i = 0; i < quotaList.size(); i++) {
                Object[] obj = (Object[]) quotaList.get(i);
                //json处理
                qc = new QcQuotaResult();
                //指标Id
                String quotaId = obj[2].toString();
                //指标名称
                qc.setQuotaName(obj[3].toString());
                qc.setOrgName(obj[1].toString());
                qc.setOrgCode(obj[0].toString());
                qc.setQuotaId(Long.parseLong(quotaId));
                int realNum = 0;
                int totalNum = 0;
                int errorNum = 0;
                int timelyNum = 0;
                String value = "";
                if (obj[4] != null && obj[5] != null && obj[6] != null && obj[7] != null) {
                    //实收数 (数据元的实收为 应收 - 错误数(标识为空的错误code))
                    totalNum = Integer.valueOf(obj[4].toString());
                    qc.setTotalNum(totalNum);
                    //应收数
                    realNum = Integer.valueOf(obj[5].toString());
                    qc.setRealNum(realNum);
                    //错误数量(该字段只针对数据元的准确性统计)
                    errorNum = Integer.valueOf(obj[6].toString());
                    qc.setErrorNum(errorNum);
                    //及时采集的档案数量
                    timelyNum = Integer.valueOf(obj[7].toString());
                    qc.setTimelyNum(timelyNum);
                    value = calculatePointUtil.calculatePoint(quotaId, realNum, totalNum, errorNum, timelyNum);
                }
                qc.setValue(value + "%");
                newQuotaList.add(qc);
            }
        }
        if(newQuotaList.size() > 0){
            result.setDetailModelList(newQuotaList);
            result.setStatus(200);
        }else {
            result.setStatus(200);
            result.setMessage("查询无数据");
            result.setTotalCount(0);
            result.setDetailModelList(newQuotaList);
        }
        return result;
    }
    //趋势分析 - 按区域列表查询,初始化查询
    @RequestMapping("/getQcQuotaIntegrity")
    public Envelop searchQcQuotaIntegrity(String location,String quotaId,String startTime,String endTime){
        PageEnvelop result = new PageEnvelop();
        List<Object> quotaList = new ArrayList<Object>();
        List<MQcDailyReportQuotaResult> newQuotaList = new ArrayList<MQcDailyReportQuotaResult>();
        Date startDate = DateUtil.formatYMDToYMDHMS(startTime);
        Date endDate =DateUtil.formatYMDToYMDHMS(endTime);
        Calendar   calendar   =   new   GregorianCalendar();
        calendar.setTime(endDate);
        calendar.add(calendar.DATE,1);//把日期往后增加一天.整数往后推,负数往前移动
        endDate=calendar.getTime();   //日期往后推一天
        MQcDailyReportQuotaResult qc=null;
        if(!StringUtils.isEmpty(quotaId)){
            //区域整体统计结果 - 按机构及指标划分
            quotaList = qcQuotaResultService.getQuotaListByLocation(location,Long.parseLong(quotaId),startDate, endDate);
            if(null!=quotaList&&quotaList.size() > 0){
                for(int i=0;i<quotaList.size();i++){
                    Object[] obj = (Object[])quotaList.get(i);
                    //json处理
                    qc=new MQcDailyReportQuotaResult();
                    String quotaIdstr = obj[0].toString();
                    //指标名称
                    qc.setQuotaName(obj[1].toString());
                    String eventTime=obj[2].toString();
                    if(null!=eventTime&&!"".equals(eventTime)){
                        //事件时间
                        qc.setEventTime(eventTime.substring(0,4)+"年"+eventTime.substring(5,7)+"月"+eventTime.substring(8,10)+"日");
                    }
                    int realNum = 0;
                    int totalNum = 0;
                    int errorNum = 0;
                    int timelyNum = 0;
                    String value="";
                    if(obj[3] != null && obj[4] != null && obj[5] != null && obj[6] != null){
                        //实收数 (数据元的实收为 应收 - 错误数(标识为空的错误code))
                        totalNum = Integer.valueOf(obj[3].toString());
                        qc.setTotalNum(totalNum);
                        //应收数
                        realNum = Integer.valueOf(obj[4].toString());
                        qc.setRealNum(realNum);
                        //错误数量(该字段只针对数据元的准确性统计)
                        errorNum = Integer.valueOf(obj[5].toString());
                        qc.setErrorNum(errorNum);
                        //及时采集的档案数量
                        timelyNum = Integer.valueOf(obj[6].toString());
                        qc.setTimelyNum(timelyNum);
                        value=calculatePointUtil.calculatePoint(quotaIdstr, realNum, totalNum , errorNum , timelyNum);
                    }
                    DecimalFormat df = new DecimalFormat("0.00");
                    if(obj[0] != null){
                        //指标ID
                        qc.setQuotaId( Long.valueOf(obj[0].toString()));
                    }
                    qc.setValue(value+"%");
                    String an=obj[7].toString();
                    if(null!=an&&an.length()>5){
                        qc.setAn(an.substring(0,6)+'%');
                    }else{
                        qc.setAn(an+'%');
                    }
                    String mom=obj[8].toString();
                    if(null!=mom&&mom.length()>5){
                        qc.setMom(mom.substring(0,6)+'%');
                    }else{
                        qc.setMom(mom+'%');
                    }
                    newQuotaList.add(qc);
                }
                result.setDetailModelList(newQuotaList);
                result.setStatus(200);
            }else {
                result.setStatus(200);
                result.setMessage("查询无数据");
                result.setTotalCount(0);
            }
        }
        return result;
    }
    //趋势分析 -按机构列表查询,初始化查询
    @RequestMapping("/getQcQuotaOrgIntegrity")
    public Envelop searchQcQuotaOrgIntegrity(String orgCode,String quotaId,String startTime,String endTime){
        PageEnvelop result = new PageEnvelop();
        List<Object> quotaList = new ArrayList<Object>();
        List<MQcDailyReportQuotaResult> newQuotaList = new ArrayList<MQcDailyReportQuotaResult>();
        Date startDate = DateUtil.formatYMDToYMDHMS(startTime);
        Date endDate =DateUtil.formatYMDToYMDHMS(endTime);
        Calendar   calendar   =   new   GregorianCalendar();
        calendar.setTime(endDate);
        calendar.add(calendar.DATE,1);//把日期往后增加一天.整数往后推,负数往前移动
        endDate=calendar.getTime();   //日期往后推一天
        MQcDailyReportQuotaResult qc = null;
        if(!StringUtils.isEmpty(quotaId)){
            quotaList = qcQuotaResultService.getQuotaListByOrg(orgCode, Long.parseLong(quotaId), startDate, endDate);
            if (null!=quotaList&&quotaList.size() > 0) {
                for (int i = 0; i < quotaList.size(); i++) {
                    Object[] obj = (Object[]) quotaList.get(i);
                    //json处理
                    qc = new MQcDailyReportQuotaResult();
                    String quotaIdstr = obj[0].toString();
                    //指标名称
                    qc.setQuotaName(obj[1].toString());
                    String eventTime=obj[2].toString();
                    if(null!=eventTime&&!"".equals(eventTime)){
                        //事件时间
                        qc.setEventTime(eventTime.substring(0,4)+"年"+eventTime.substring(5,7)+"月"+eventTime.substring(8,10)+"日");
                    }
                    int realNum = 0;
                    int totalNum = 0;
                    int errorNum = 0;
                    int timelyNum = 0;
                    String value="";
                    if (obj[3] != null && obj[4] != null && obj[5] != null && obj[6] != null) {
                        //实收数 (数据元的实收为 应收 - 错误数(标识为空的错误code))
                        totalNum = Integer.valueOf(obj[3].toString());
                        qc.setTotalNum(totalNum);
                        //应收数
                        realNum = Integer.valueOf(obj[4].toString());
                        qc.setRealNum(realNum);
                        //错误数量(该字段只针对数据元的准确性统计)
                        errorNum = Integer.valueOf(obj[5].toString());
                        qc.setErrorNum(errorNum);
                        //及时采集的档案数量
                        timelyNum = Integer.valueOf(obj[6].toString());
                        qc.setTimelyNum(timelyNum);
                        value=calculatePointUtil.calculatePoint(quotaIdstr, realNum, totalNum , errorNum , timelyNum);
                    }
                    DecimalFormat df = new DecimalFormat("0.00");
                    if (obj[0] != null) {
                        //指标ID
                        qc.setQuotaId( Long.valueOf(obj[0].toString()));
                    }
                    qc.setValue(value+ "%");
                    String an=obj[7].toString();
                    if(null!=an&&an.length()>5){
                        qc.setAn(an.substring(0,6)+'%');
                    }else{
                        qc.setAn(an+'%');
                    }
                    String mom=obj[8].toString();
                    if(null!=mom&&mom.length()>5){
                        qc.setMom(mom.substring(0,6)+'%');
                    }else{
                        qc.setMom(mom+'%');
                    }
                    newQuotaList.add(qc);
                }
                result.setDetailModelList(newQuotaList);
                result.setStatus(200);
            } else {
                result.setStatus(200);
                result.setMessage("查询无数据");
                result.setTotalCount(0);
            }
        }
        return result;
    }
    //分析明细列表
    @RequestMapping("/getQcQuotaDailyIntegrity")
    public Envelop searchQcQuotaDailyIntegrity(String location,String startTime,String endTime){
        PageEnvelop result = new PageEnvelop();
        List<Object> quotaList = new ArrayList<Object>();
        List<Object> detailQuotaList = new ArrayList<Object>();
//        int firstDate=(page-1)*size;
        Date startDate = DateUtil.formatYMDToYMDHMS(startTime);
        Date endDate = DateUtil.formatYMDToYMDHMS(endTime);
        Calendar calendar = new GregorianCalendar();
        calendar.setTime(endDate);
        calendar.add(calendar.DATE, 1);//把日期往后增加一天.整数往后推,负数往前移动
        endDate = calendar.getTime();   //日期往后推一天
        Map<String, String> QcQuotaResultAnalyseMap = new TreeMap();
        //获取区域名称和事件时间
        quotaList = qcQuotaResultService.getfindQcListByLocationAndTime(location, startDate, endDate);
        if (null!=quotaList&&quotaList.size() > 0) {
            for (int i = 0; i < quotaList.size(); i++) {
                Object[] obj = (Object[]) quotaList.get(i);
                String eventTime = obj[2].toString();
                String newEventTime = "";
                if (null != eventTime && !"".equals(eventTime)) {
                    //事件时间
                    newEventTime = eventTime.substring(0,4)+"年"+eventTime.substring(5,7)+"月"+eventTime.substring(8,10)+"日";
                }
                String qcKey = obj[2].toString().substring(0, 10) + obj[3].toString();
                QcQuotaResultAnalyseMap.put(qcKey, newEventTime);
            }
        }
        //区域整体统计结果
        detailQuotaList = qcQuotaResultService.getQuotaListByLocationAndTime(location, startDate, endDate);
        Map<String, MQcDailyReportResultDetail> detailMap = new TreeMap();
        Map<String, MQcDailyReportResultDetail> detailAnMap = new TreeMap();
        Map<String, MQcDailyReportResultDetail> detailMonMap = new TreeMap();
        MQcDailyReportResultDetail qrd = null;
        if(null!=detailQuotaList&&detailQuotaList.size() > 0){
            for (int i = 0; i < detailQuotaList.size(); i++) {
                Object[] obj = (Object[]) detailQuotaList.get(i);
                String qcKey = obj[0].toString().substring(0, 10) + obj[2].toString();
                if (null != QcQuotaResultAnalyseMap.get(qcKey)) {
                    String resultQuotaId = obj[3].toString();
                    //总比
                    String detailMapKey = qcKey + "总比";
                    Map<String, String> map = calculatePointUtil.reportDetailData("1", obj);
                    //,map.get("1standard")
                    detailMap = calculatePointUtil.detailValueModel(resultQuotaId, i, detailMap, detailMapKey, QcQuotaResultAnalyseMap.get(qcKey), obj[2].toString(), obj[1].toString(), "总比", map.get("1"),map.get("1standard"));
                    //同比
                    String detailAnMapKey = qcKey + "同比";
                    map = calculatePointUtil.reportDetailData("2", obj);
                    detailAnMap = calculatePointUtil.detailValueModel(resultQuotaId, i, detailAnMap, detailAnMapKey, QcQuotaResultAnalyseMap.get(qcKey), obj[2].toString(), obj[1].toString(), "同比", map.get("2"),"");
                    //环比
                    String detailMonMapKey = qcKey + "环比";
                    map = calculatePointUtil.reportDetailData("3", obj);
                    detailMonMap = calculatePointUtil.detailValueModel(resultQuotaId, i, detailMonMap, detailMonMapKey, QcQuotaResultAnalyseMap.get(qcKey), obj[2].toString(), obj[1].toString(), "环比", map.get("3"),"");
                }
            }
        }
        List<MQcDailyReportResultDetail>  objectList=new ArrayList<MQcDailyReportResultDetail>();
        for (String key : detailMap.keySet()) {
            String mapKey=key.substring(0,key.length()-2);
            objectList.add(detailMap.get(key));
            objectList.add(detailAnMap.get(mapKey+"同比"));
            objectList.add(detailMonMap.get(mapKey+"环比"));
        }
        if(objectList.size() > 0){
            result.setDetailModelList(objectList);
            result.setStatus(200);
        }else {
            result.setStatus(200);
            result.setMessage("查询无数据");
            result.setTotalCount(0);
        }
        return result;
    }
    //根据地区、期间查询各机构某项指标的值
    @RequestMapping("/getQcQuotaByLocation")
    public Envelop searchQcQuotaByLocation(String location,String quotaId,String startTime,String endTime){
        PageEnvelop result = new PageEnvelop();
        List<Object> quotaList = new ArrayList<Object>();
        List<QcQuotaResult> newQuotaList = new ArrayList<QcQuotaResult>();
        Date startDate = DateUtil.formatYMDToYMDHMS(startTime);
        Date endDate =DateUtil.formatYMDToYMDHMS(endTime);
        Calendar   calendar   =   new   GregorianCalendar();
        calendar.setTime(endDate);
        calendar.add(calendar.DATE,1);//把日期往后增加一天.整数往后推,负数往前移动
        endDate=calendar.getTime();   //日期往后推一天
        QcQuotaResult qc=null;
        if(!StringUtils.isEmpty(quotaId)){
            //区域整体统计结果 - 按机构及指标划分
            //@Query("select qc.orgCode,qc.orgName,qc.quotaId,qc.quotaName,sum(qc.totalNum) as totalNum,sum(qc.realNum) as realNum,sum(qc.errorNum) as errorNum,sum(qc.timelyNum) as timelyNum
            quotaList = qcQuotaResultService.getQuotaListByLocationGBOrg(location,Long.parseLong(quotaId),startDate, endDate);
            if(null!=quotaList&&quotaList.size() > 0){
                for(int i=0;i<quotaList.size();i++){
                    Object[] obj = (Object[])quotaList.get(i);
                    //json处理
                    qc=new QcQuotaResult();
                    qc.setOrgCode(obj[0].toString());
                    qc.setOrgName(obj[1].toString());
                    String quotaIdstr = obj[2].toString();
                    //指标名称
                    qc.setQuotaName(obj[3].toString());
                    int realNum = 0;
                    int totalNum = 0;
                    int errorNum = 0;
                    int timelyNum = 0;
                    String value="";
                    if(obj[4] != null && obj[5] != null && obj[6] != null && obj[7] != null){
                        //实收数 (数据元的实收为 应收 - 错误数(标识为空的错误code))
                        totalNum = Integer.valueOf(obj[4].toString());
                        qc.setTotalNum(totalNum);
                        //应收数
                        realNum = Integer.valueOf(obj[5].toString());
                        qc.setRealNum(realNum);
                        //错误数量(该字段只针对数据元的准确性统计)
                        errorNum = Integer.valueOf(obj[6].toString());
                        qc.setErrorNum(errorNum);
                        //及时采集的档案数量
                        timelyNum = Integer.valueOf(obj[7].toString());
                        qc.setTimelyNum(timelyNum);
                        value=calculatePointUtil.calculatePoint(quotaIdstr, realNum, totalNum , errorNum , timelyNum);
                    }
                    DecimalFormat df = new DecimalFormat("0.00");
                    if(obj[2] != null){
                        //指标ID
                        qc.setQuotaId( Long.valueOf(obj[2].toString()));
                    }
                    qc.setValue(value+"%");
                    newQuotaList.add(qc);
                }
                result.setDetailModelList(newQuotaList);
                result.setStatus(200);
            }else {
                result.setStatus(200);
                result.setMessage("查询无数据");
                result.setTotalCount(0);
            }
        }
        return result;
    }
    //根据地区、期间查询分析明细列表,并导出
    @RequestMapping("/exportToExcel")
    public void exportToExcel(HttpServletResponse response,String location,String startTime,String endTime){
        try {
            String fileName = "分析列表明细";
            String url="";
            String envelopStr = "";
            //设置下载
            response.setContentType("octets/stream");
            response.setHeader("Content-Disposition", "attachment; filename="
                    + new String( fileName.getBytes("gb2312"), "ISO8859-1" )+".xls");
            OutputStream os = response.getOutputStream();
            //获取导出字典
            Map<String,Object> params = new HashMap<>();
            url = "/report/getQcQuotaDailyIntegrity";
            params.put("location",location);
            params.put("startTime",startTime);
            params.put("endTime",endTime);
            List<Object> quotaList = new ArrayList<Object>();
            List<Object> detailQuotaList = new ArrayList<Object>();
//        int firstDate=(page-1)*size;
            Date startDate = DateUtil.formatYMDToYMDHMS(startTime);
            Date endDate = DateUtil.formatYMDToYMDHMS(endTime);
            Calendar calendar = new GregorianCalendar();
            calendar.setTime(endDate);
            calendar.add(calendar.DATE, 1);//把日期往后增加一天.整数往后推,负数往前移动
            endDate = calendar.getTime();   //日期往后推一天
            Map<String, String> QcQuotaResultAnalyseMap = new TreeMap();
            //获取区域名称和事件时间
            quotaList = qcQuotaResultService.getfindQcListByLocationAndTime(location, startDate, endDate);
            if (null!=quotaList&&quotaList.size() > 0) {
                for (int i = 0; i < quotaList.size(); i++) {
                    Object[] obj = (Object[]) quotaList.get(i);
                    String eventTime = obj[2].toString();
                    String newEventTime = "";
                    if (null != eventTime && !"".equals(eventTime)) {
                        //事件时间
                        newEventTime = eventTime.substring(0,4)+"年"+eventTime.substring(5,7)+"月"+eventTime.substring(8,10)+"日";
                    }
                    String qcKey = obj[2].toString().substring(0, 10) + obj[3].toString();
                    QcQuotaResultAnalyseMap.put(qcKey, newEventTime);
                }
            }
            //区域整体统计结果
            detailQuotaList = qcQuotaResultService.getQuotaListByLocationAndTime(location, startDate, endDate);
            Map<String, MQcDailyReportResultDetail> detailMap = new TreeMap();
            Map<String, MQcDailyReportResultDetail> detailAnMap = new TreeMap();
            Map<String, MQcDailyReportResultDetail> detailMonMap = new TreeMap();
            MQcDailyReportResultDetail qrd = null;
            if(null!=detailQuotaList&&detailQuotaList.size() > 0){
                for (int i = 0; i < detailQuotaList.size(); i++) {
                    Object[] obj = (Object[]) detailQuotaList.get(i);
                    String qcKey = obj[0].toString().substring(0, 10) + obj[2].toString();
                    if (null != QcQuotaResultAnalyseMap.get(qcKey)) {
                        String resultQuotaId = obj[3].toString();
                        //总比
                        String detailMapKey = qcKey + "总比";
                        Map<String, String> map = calculatePointUtil.reportDetailData("1", obj);
                        //,map.get("1standard")
                        detailMap = calculatePointUtil.detailValueModel(resultQuotaId, i, detailMap, detailMapKey, QcQuotaResultAnalyseMap.get(qcKey), obj[2].toString(), obj[1].toString(), "总比", map.get("1"),map.get("1standard"));
                        //同比
                        String detailAnMapKey = qcKey + "同比";
                        map = calculatePointUtil.reportDetailData("2", obj);
                        detailAnMap = calculatePointUtil.detailValueModel(resultQuotaId, i, detailAnMap, detailAnMapKey, QcQuotaResultAnalyseMap.get(qcKey), obj[2].toString(), obj[1].toString(), "同比", map.get("2"),"");
                        //环比
                        String detailMonMapKey = qcKey + "环比";
                        map = calculatePointUtil.reportDetailData("3", obj);
                        detailMonMap = calculatePointUtil.detailValueModel(resultQuotaId, i, detailMonMap, detailMonMapKey, QcQuotaResultAnalyseMap.get(qcKey), obj[2].toString(), obj[1].toString(), "环比", map.get("3"),"");
                    }
                }
            }
            List<MQcDailyReportResultDetail>  qcModelList=new ArrayList<MQcDailyReportResultDetail>();
            for (String key : detailMap.keySet()) {
                String mapKey=key.substring(0,key.length()-2);
                qcModelList.add(detailMap.get(key));
                qcModelList.add(detailAnMap.get(mapKey+"同比"));
                qcModelList.add(detailMonMap.get(mapKey+"环比"));
            }
            //写excel
            WritableWorkbook wwb = Workbook.createWorkbook(os);
            //创建Excel工作表 指定名称和位置
            WritableSheet ws = wwb.createSheet("质控分析明细",0);
            addStaticCell(ws);//添加固定信息,题头等
            //添加字典项信息
            WritableCellFormat wc = new WritableCellFormat();
            wc.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THIN, Colour.SKY_BLUE);//边框
            MQcDailyReportResultDetail qc=null;
            for(int i=0;i<qcModelList.size();i++) {
                int j=i+1;
                qc = qcModelList.get(i);
                //添加列表明细
                addCell(ws,0,j,qc.getEventTime(),wc);//时间
                addCell(ws,1,j,qc.getOrgName(),wc);//机构名称
                addCell(ws,2,j,qc.getScaleType(),wc);//比例名称
                addCell(ws,3,j,qc.getArIntegrity(),wc);//整体数量完整性
                addCell(ws,4,j,qc.getDsIntegrity(),wc);//数据集完整性
                addCell(ws,5,j,qc.getMdIntegrity(),wc);//数据元完整性
                addCell(ws,6,j,qc.getMdAccuracy(),wc);//准确性
                addCell(ws,7,j,qc.getArTimely(),wc);//全部及时性
                addCell(ws,8,j,qc.getHpTimely(),wc);//住院病人及时性
                addCell(ws,9,j,qc.getOpTimely(),wc);//门诊病人及时性
            }
            //写入工作表
            wwb.write();
            wwb.close();
            os.flush();
            os.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    //excel中添加固定内容
    private void addStaticCell(WritableSheet ws){
        try {
            addCell(ws,0,0,"时间");
            addCell(ws,1,0,"对象");
            addCell(ws,2,0," ");
            addCell(ws,3,0,"整体数量完整性");
            addCell(ws,4,0,"数据集完整性");
            addCell(ws,5,0,"数据元完整性");
            addCell(ws,6,0,"准确性");
            addCell(ws,7,0,"全部及时性");
            addCell(ws,8,0,"住院病人及时性");
            addCell(ws,9,0,"门诊病人及时性");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    //添加单元格内容
    private void addCell(WritableSheet ws,int column,int row,String data){
        try {
            Label label = new Label(column,row,data);
            ws.addCell(label);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    //添加单元格内容带样式
    private void addCell(WritableSheet ws,int column,int row,String data,CellFormat cellFormat){
        try {
            Label label = new Label(column,row,data,cellFormat);
            ws.addCell(label);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    /**
     * 档案入库状况数据
     * @param model
     * @return
     */
//    @RequestMapping("rukuData")
//    public Object rukuData(Model model,String orgCode,String startDate,String endDate) {
//        String url = "/report/qcDailyStatisticsStorageByDate";
//        String resultStr = "";
//        Map<String, Object> params = new HashMap<>();
//        Envelop result = new Envelop();
//        try {
//            params.put("orgCode",orgCode);
//            params.put("startDate",startDate);
//            params.put("endDate",endDate);
//            resultStr = HttpClientUtil.doGet(comUrl + url, params, username, password);
//            ObjectMapper mapper = new ObjectMapper();
//            Envelop envelop = mapper.readValue(resultStr, Envelop.class);
//            if (!envelop.isSuccessFlg()) {
//                result.setSuccessFlg(true);
//                result.setDetailModelList(envelop.getDetailModelList());
//                result.setObj(envelop.getObj());
//                return result;
//            } else {
//                result.setSuccessFlg(false);
//                return result;
//            }
//        } catch (Exception e) {
//            e.printStackTrace();
//            return failed(ERR_SYSTEM_DES);
//        }
//    }
}

+ 63 - 0
svr/svr-basic/src/main/java/com/yihu/jw/basic/agadmin/controller/resource/DictController.java

@ -0,0 +1,63 @@
package com.yihu.jw.basic.agadmin.controller.resource;
import com.yihu.jw.basic.resource.service.RsDictionaryService;
import com.yihu.jw.entity.ehr.resource.RsDictionary;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.PageEnvelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import java.util.*;
/**
 * @author lincl
 * @version 1.0
 * @created 2016/5/20
 */
@RestController("resource-dict")
@RequestMapping("/resource/dict")
public class DictController extends EnvelopRestEndpoint {
    @Autowired
    private RsDictionaryService dictionaryService;
    final String parentFile = "dict";
    Map<String, Integer> dictExcel;
    Map<String, Integer> dictEntryExcel;
    Map<Integer, String> headerMap ;
    public DictController() {
        dictExcel = new HashMap<>();
        dictExcel.put("code", 0);
        dictExcel.put("name", 1);
        dictExcel.put("description", 2);
        dictEntryExcel = new HashMap<>();
        dictEntryExcel.put("code", 3);
        dictEntryExcel.put("name", 4);
        dictEntryExcel.put("description", 5);
        headerMap = new HashMap<>();
        headerMap.put(0, "代码");
        headerMap.put(1, "名称");
        headerMap.put(2, "说明");
    }
    @RequestMapping("/searchCombo")
    @ResponseBody
    public Envelop comboSearch(String searchParm, int page, int rows){
        try{
            String filters =  "code?"+searchParm+" g1;name?"+searchParm+";";
            List<RsDictionary> dictionaries = dictionaryService.search(null, filters, null, page, rows);
            return PageEnvelop.getSuccessListWithPage("查询成功",dictionaries,page,rows,dictionaryService.getCount(filters));
        } catch (Exception e) {
            e.printStackTrace();
            return failed("查询失败");
        }
    }
}

+ 325 - 0
svr/svr-basic/src/main/java/com/yihu/jw/basic/agadmin/controller/resource/MetaController.java

@ -0,0 +1,325 @@
//package com.yihu.jw.basic.agadmin.controller.resource;
//
//import com.fasterxml.jackson.core.type.TypeReference;
//
//import com.yihu.jw.restmodel.web.Envelop;
//import com.yihu.jw.util.excel.poi.AExcelReader;
//import org.springframework.stereotype.Controller;
//import org.springframework.ui.Model;
//import org.springframework.util.LinkedMultiValueMap;
//import org.springframework.util.MultiValueMap;
//import org.springframework.util.StringUtils;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.ResponseBody;
//import org.springframework.web.multipart.MultipartFile;
//
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//import java.io.File;
//import java.io.IOException;
//import java.io.OutputStream;
//import java.util.*;
//
///**
// * @author lincl
// * @version 1.0
// * @created 2016/5/19
// */
//@RestController
//@RequestMapping("/resource/meta")
//public class MetaController extends ExtendController<MetaService> {
//    static final String parentFile = "meta";
//
//    public MetaController() {
//        this.init(
//                "/resource/meta/grid",        //列表页面url
//                "/resource/meta/dialog"      //编辑页面url
//        );
//        comboKv = new HashMap<>();
//        comboKv.put("code", "id");
//        comboKv.put("value", "name");
//        comboKv.put("domainName", "domainName");
//        comboKv.put("domain", "domain");
//    }
//
//    @RequestMapping("dataInitial")
//    public String gridInitial(Model model) {
//        model.addAttribute("contentPage","/resource/meta/grid");
//        return "pageView";
//    }
//
//    @RequestMapping("/gotoImportLs")
//    public String gotoImportLs(EnvelopRestEndpointString result){
//        try {
//            model.addAttribute("domainData", service.searchSysDictEntries(31));
//            model.addAttribute("columnTypeData", service.searchSysDictEntries(30));
//            model.addAttribute("ynData", service.searchSysDictEntries(18));
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//        model.addAttribute("files", result);
//        model.addAttribute("contentPage", "/resource/meta/impGrid");
//        return "pageView";
//    }
//
//    @RequestMapping("/downLoadErrInfo")
//    public void downLoadErrInfo(String f, String datePath,  HttpServletResponse response) throws IOException {
//
//        OutputStream toClient = response.getOutputStream();
//        try{
//            f = datePath + TemPath.separator + f;
//            File file = new File( TemPath.getFullPath(f, parentFile) );
//            response.reset();
//            response.setContentType("octets/stream");
//            response.addHeader("Content-Disposition", "attachment; filename="
//                    + new String((f.substring(0, f.length()-4)+".xls").getBytes("gb2312"), "ISO8859-1"));
//
////            toClient = new BufferedOutputStream(response.getOutputStream());
//            new RsMetaMsgModelWriter().write(toClient, (List) ObjectFileRW.read(file));
//            toClient.flush();
//            toClient.close();
//        } catch (Exception e) {
//            e.printStackTrace();
////            if(toClient!=null) toClient.close();
//        }
//    }
//
//    @RequestMapping("/batchSave")
//    @ResponseBody
//    public Object batchSave(String metas, String eFile, String tFile, String datePath){
//
//        try{
//            eFile = datePath + TemPath.separator + eFile;
//            File file = new File(TemPath.getFullPath(eFile, parentFile));
//            List<RsMetaMsgModel> all = (List<RsMetaMsgModel>) ObjectFileRW.read(file);
//            List<RsMetaMsgModel> rsMetaMsgModels = objectMapper.readValue(metas, new TypeReference<List<RsMetaMsgModel>>() {});
//
//
//            Map<String, Set> repeat = new HashMap<>();
//            repeat.put("id", new HashSet<String>());
//            repeat.put("dictCode", new HashSet<String>());
//            for(RsMetaMsgModel model : rsMetaMsgModels){
//                model.validate(repeat);
//            }
//
//            Set<String> existIds = findExistId(toJson(repeat.get("id")));
//            String domains = getSysDictEntries(31);
//            String columnTypes = getSysDictEntries(30);
//            String nullAbles = "[0,1]";
//
//            RsMetaMsgModel model;
//            List saveLs = new ArrayList<>();
//            for(int i=0; i<rsMetaMsgModels.size(); i++){
//                model = rsMetaMsgModels.get(i);
//                if(validate(model, existIds, domains, columnTypes, null, nullAbles, 0)==0
//                        || model.errorMsg.size()>0)
//                    all.set(all.indexOf(model), model);
//                else{
//                    saveLs.add(model);
//                    all.remove(model);
//                }
//
//            }
//            saveMeta(toJson(saveLs));
//            ObjectFileRW.write(file, all);
//
//            return success("");
//        } catch (Exception e) {
//            e.printStackTrace();
//            return systemError();
//        }
//    }
//
//    @RequestMapping("/importLs")
//    @ResponseBody
//    public Object importLs(int page, int rows, String filenName, String datePath){
//        try{
//            File file = new File( TemPath.getFullPath(datePath + TemPath.separator + filenName, parentFile) );
//            List ls = (List) ObjectFileRW.read(file);
//
//            int start = (page-1) * rows;
//            int total = ls.size();
//            int end = start + rows;
//            end = end > total ? total : end;
//
//            List g = new ArrayList<>();
//            for(int i=start; i<end; i++){
//                g.add( ls.get(i) );
//            }
//
//            Envelop envelop = new Envelop();
//            envelop.setDetailModelList(g);
//            envelop.setTotalCount(total);
//            envelop.setSuccessFlg(true);
//            return envelop;
//        } catch (Exception e) {
//            e.printStackTrace();
//            return systemError();
//        }
//    }
//
//    @RequestMapping(value = "import")
//    @ResponseBody
//    public void importMeta(MultipartFile file, HttpServletRequest request, HttpServletResponse response) throws IOException {
//
//        UsersModel user = getCurrentUserRedis(request);
//        try {
//            writerResponse(response, 1+"", "l_upd_progress");
//            request.setCharacterEncoding("UTF-8");
//            AExcelReader excelReader = new RsMetaMsgModelReader();
//            excelReader.read(file.getInputStream());
//            List<RsMetaMsgModel> errorLs = excelReader.getErrorLs();
//            List<RsMetaMsgModel> correctLs = excelReader.getCorrectLs();
//            writerResponse(response, 20+"", "l_upd_progress");
//
//            Set<String> dictCodeSet = excelReader.getRepeat().get("dictCode");
//            String dictCodes = "";
//            for(String code :dictCodeSet){
//                dictCodes += "," + code;
//            }
//            List saveLs = new ArrayList<>();
//
//            Set<String> ids = findExistId(toJson(excelReader.getRepeat().get("id")));
//            String domains = getSysDictEntries(31);
//            String columnTypes = getSysDictEntries(30);
//            String nullAbles = "[0,1]";
//            Map dictIds = null;
//            if(dictCodes.length()>0)
//                dictIds = getDictIds(dictCodes.substring(1));
//            writerResponse(response, 35+"", "l_upd_progress");
//            RsMetaMsgModel model;
//            for(int i=0; i<correctLs.size(); i++){
//                model = correctLs.get(i);
//                if(validate(model, ids, domains, columnTypes, dictIds, nullAbles, 1)==0)
//                    errorLs.add(model);
//                else
//                    saveLs.add(model);
//            }
//            for(int i=0; i<errorLs.size(); i++){
//                model = errorLs.get(i);
//                validate(model, ids, domains, columnTypes, dictIds, nullAbles, 1);
//            }
//            writerResponse(response, 55+"", "l_upd_progress");
//
//            Map rs = new HashMap<>();
//            if(errorLs.size()>0){
//                String eFile = TemPath.createFileName(user.getLoginCode(), "e", parentFile, ".dat");
//                ObjectFileRW.write(new File(TemPath.getFullPath(eFile, parentFile)),errorLs);
//                rs.put("eFile", new String[]{eFile.substring(0, 10), eFile.substring(11, eFile.length())});
//                writerResponse(response, 75 + "", "l_upd_progress");
//            }
//            if(saveLs.size()>0)
//                saveMeta(toJson(saveLs));
//
//            if(rs.size()>0)
//                writerResponse(response, 100 + ",'" + toJson(rs) + "'", "l_upd_progress");
//            else
//                writerResponse(response, 100 + "", "l_upd_progress");
//        } catch (Exception e) {
//            e.printStackTrace();
//            writerResponse(response, "-1", "l_upd_progress");
//        }
//    }
//
//    @RequestMapping("/active")
//    @ResponseBody
//    public Object delete(String ids){
//
//        try {
//            Map<String, Object> params = new HashMap<>();
//            params.put("id", nullToSpace(ids));
//            String rs = service.doPut(service.comUrl+ "/resources/metadata/active", params);
//            return rs;
//        } catch (Exception e) {
//            e.printStackTrace();
//            return systemError();
//        }
//    }
//
//
//    private int validate(RsMetaMsgModel model, Set<String> ids, String domains,
//                         String columnTypes, Map dictIds, String nullAbles, int type){
//        int rs = 1;
//        if(ids.contains(model.getId())){
//            model.addErrorMsg("id", "该资源标准编码已存在!");
//            rs = 0;
//        }
//        int i = 0;
//        if((i=domains.indexOf(model.getDomain()))==0 || i==-1){
//            model.addErrorMsg("domain", "只能是"+ domains +"里的值!");
//            rs = 0;
//        }
//
//        if( (i=columnTypes.indexOf(model.getColumnType()))==0 || i==-1 ){
//            model.addErrorMsg("columnType", "只能是"+ columnTypes +"里的值!");
//            rs = 0;
//        }
//
//        if( (i=nullAbles.indexOf(model.getNullAble()))==0 || i==-1 ){
//            model.addErrorMsg("nullAble", "只能是"+ nullAbles +"里的值!");
//            rs = 0;
//        }
//
//        if(type==1 && !StringUtils.isEmpty(model.getDictCode())){
//            if(dictIds==null){
//                model.addErrorMsg("dictCode", "该字典代码不存在!");
//                rs = 0;
//            }else {
//                Integer dictId = (Integer) dictIds.get(model.getDictCode());
//                if(dictId==null || dictId==0){
//                    model.addErrorMsg("dictCode", "该字典代码不存在!");
//                    rs = 0;
//                }else
//                    model.setDictId(dictId);
//            }
//        }
//        return rs;
//    }
//
//    private Map getDictIds( String dictCodes) throws Exception {
//        PageParms pageParms = new PageParms(5000,1)
//                .addGroupNotNull("code", dictCodes, "g1")
//                .setFields("id,code");
//        Envelop rs = getEnvelop(service.search("/resources/dict", pageParms));
//        if(rs.isSuccessFlg()){
//            Map dictIds = new HashMap<>();
//            List<Map> maps = rs.getDetailModelList();
//            for (Map map : maps){
//                dictIds.put(map.get("code"), map.get("id"));
//            }
//            return dictIds;
//        }
//        throw new Exception("获取字典数据出错");
//    }
//
//
//    private String getSysDictEntries(int dictId) throws Exception {
//        Envelop envelop = getEnvelop(service.searchSysDictEntries(dictId));
//        if(!envelop.isSuccessFlg())
//            throw new Exception("预加载字典失败!");
//        String str = "[";
//        for(Map map: (List<Map>)envelop.getDetailModelList()){
//            str += String.valueOf(map.get("code")) +",";
//        }
//        return str.substring(0, str.length()-1) + "]";
//    }
//
//    private List saveMeta(String metas) throws Exception {
//        Map map = new HashMap<>();
//        map.put("metadatas", metas);
//        EnvelopExt<RsMetaMsgModel> envelop = getEnvelopExt(service.doPost(service.comUrl + "/resources/metadata/batch", map), RsMetaMsgModel.class);
//        if(envelop.isSuccessFlg())
//            return envelop.getDetailModelList();
//        throw new Exception("保存失败!");
//    }
//
//    private Set<String> findExistId(String ids) throws Exception {
//        MultiValueMap<String,String> conditionMap = new LinkedMultiValueMap<String, String>();
//        conditionMap.add("ids", ids);
//
//        RestTemplates template = new RestTemplates();
//        String rs = template.doPost(service.comUrl + "/resources/metadata/id/existence", conditionMap);
//
//        return objectMapper.readValue(rs, new TypeReference<Set<String>>() {});
//    }
//}

+ 44 - 0
svr/svr-basic/src/main/java/com/yihu/jw/basic/agadmin/controller/resource/ReportCategoryAppRelationController.java

@ -0,0 +1,44 @@
package com.yihu.jw.basic.agadmin.controller.resource;
import com.yihu.jw.basic.resource.service.RsReportCategoryAppService;
import com.yihu.jw.entity.ehr.report.ReportCategoryAppRelation;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.ObjEnvelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
 * Created by wxw on 2017/11/24.
 */
@RestController
@RequestMapping("/resource/reportCategoryApp")
public class ReportCategoryAppRelationController extends EnvelopRestEndpoint {
    @Autowired
    private RsReportCategoryAppService rsReportCategoryAppService;
    @RequestMapping("/saveInfo")
    public Envelop save(String categoryId, String appId) {
        try {
            ReportCategoryAppRelation reportCategoryAppRelation = rsReportCategoryAppService.saveInfo(categoryId, appId);
            return ObjEnvelop.getSuccess("保存成功",reportCategoryAppRelation);
        } catch (Exception e) {
            e.printStackTrace();
            return failed("保存失败");
        }
    }
    @RequestMapping("/deleteInfo")
    public Envelop delete(String categoryId, String appId) {
        try {
            rsReportCategoryAppService.deleteByCategoryIdAndAppId(categoryId, appId);
            return success("");
        } catch (Exception e) {
            e.printStackTrace();
            return failed("删除失败");
        }
    }
}

+ 274 - 0
svr/svr-basic/src/main/java/com/yihu/jw/basic/agadmin/controller/resource/ReportCategoryController.java

@ -0,0 +1,274 @@
package com.yihu.jw.basic.agadmin.controller.resource;
import com.yihu.ehr.constants.ServiceApi;
import com.yihu.jw.basic.apps.service.AppService;
import com.yihu.jw.basic.resource.service.RsReportCategoryAppService;
import com.yihu.jw.basic.resource.service.RsReportCategoryService;
import com.yihu.jw.entity.ehr.apps.App;
import com.yihu.jw.entity.ehr.resource.RsReportCategory;
import com.yihu.jw.restmodel.ehr.app.MApp;
import com.yihu.jw.restmodel.ehr.resource.MRsReportCategory;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.ListEnvelop;
import com.yihu.jw.restmodel.web.ObjEnvelop;
import com.yihu.jw.restmodel.web.PageEnvelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import com.yihu.jw.util.common.LogService;
import com.yihu.jw.util.http.HttpClientUtil;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * 资源报表分类 controller
 *
 * @author 张进军
 * @date 2017/8/8 13:53
 */
@RestController
@RequestMapping("/resource/reportCategory")
public class ReportCategoryController extends EnvelopRestEndpoint {
    @Autowired
    private RsReportCategoryAppService rsReportCategoryAppService;
    @Autowired
    private RsReportCategoryService rsReportCategoryService;
    @Autowired
    private AppService appService;
    @RequestMapping("/configDialog")
    public Envelop configDialog(String id) {
        try {
            String appIds = rsReportCategoryAppService.getAppIdByCategory(id);
            return ObjEnvelop.getSuccess("获取成功",appIds);
        } catch (Exception e) {
            e.printStackTrace();
            return failed("获取成功");
        }
    }
    @RequestMapping("/appConfig")
    public Envelop appConfig(String id, String dialogType, Model model) {
        try {
            String appIds = rsReportCategoryAppService.getAppIdByCategory(id);
            return ObjEnvelop.getSuccess("获取成功",appIds);
        } catch (Exception e) {
            e.printStackTrace();
            return failed("获取成功");
        }
    }
    @RequestMapping(value = "detail")
    public Envelop detail(Integer id) {
        try {
            if (id != null) {
                return ObjEnvelop.getSuccess("查询成功",rsReportCategoryService.getById(id));
            }
            return success("查询成功");
        } catch (Exception e) {
            e.printStackTrace();
            return failed("查询失败");
        }
    }
    /**
     * 根据条件,获取资源报表分类(树形结构)
     */
    @RequestMapping("/getTreeData")
    public Envelop getTreeData(String codeName) {
        try {
            List<MRsReportCategory> resultList = new ArrayList<>();
            // 获取最顶层的资源报表分类集合
            List<RsReportCategory> topNodeList = rsReportCategoryService.getChildrenByPid(0);
            if (topNodeList.size() == 0) {
                return success("查询成功");
            }
            // 暂存最顶层资源报表分类中,满足条件的集合
            List<RsReportCategory> topNodeListIn = new ArrayList<>();
            // 暂存最顶层资源报表分类中,不满足条件的集合
            List<RsReportCategory> topNodeListOut = new ArrayList<>();
            if (StringUtils.isEmpty(codeName)) {
                List<RsReportCategory> treeList = rsReportCategoryService.getTreeByParents(topNodeList);
                return ListEnvelop.getSuccess("查询成功",convertToModels(treeList, resultList, MRsReportCategory.class, ""));
            }
            for (RsReportCategory reportCategory : topNodeList) {
                if (reportCategory.getCode().contains(codeName) || reportCategory.getName().contains(codeName)) {
                    topNodeListIn.add(reportCategory);
                    continue;
                }
                topNodeListOut.add(reportCategory);
            }
            if (topNodeListIn.size() != 0) {
                List<RsReportCategory> inList = rsReportCategoryService.getTreeByParents(topNodeListIn);
                resultList.addAll(convertToModels(inList, new ArrayList<>(), MRsReportCategory.class, ""));
            }
            List<RsReportCategory> outList = rsReportCategoryService.getTreeByParentsAndCodeName(topNodeListOut, codeName);
            resultList.addAll(convertToModels(outList, new ArrayList<>(), MRsReportCategory.class, ""));
            return ListEnvelop.getSuccess("查询成功",resultList);
        } catch (Exception ex) {
            ex.printStackTrace();
            return failed("查询失败");
        }
    }
    /**
     * 获取资源报表分类下拉框数据
     */
    @RequestMapping("/getComboTreeData")
    public Envelop getComboTreeData() {
        try {
            List<RsReportCategory> list = rsReportCategoryService.getAllTreeData();
            return ListEnvelop.getSuccess ("查询成功",convertToModels(list, new ArrayList<>(list.size()), MRsReportCategory.class, ""));
        } catch (Exception e) {
            e.printStackTrace();
            return failed("查询失败");
        }
    }
    /**
     * 保存
     */
    @RequestMapping("/save")
    public Envelop save(String data) {
        Envelop envelop = new Envelop();
        Map<String, Object> params = new HashMap<>();
        try {
            String rsReportCategory = data;
            RsReportCategory newRsReportCategory = toEntity(rsReportCategory, RsReportCategory.class);
            if (StringUtils.isEmpty(newRsReportCategory.getCode())) {
                return failed("编码不能为空!");
            }
            if (StringUtils.isEmpty(newRsReportCategory.getName())) {
                return failed("名称不能为空!");
            }
            if (newRsReportCategory.getId() == null) {
                // 新增
                if (null == newRsReportCategory.getPid()) {
                    newRsReportCategory.setPid(0);
                }
                if (null == newRsReportCategory.getSortNo()) {
                    newRsReportCategory.setSortNo(99);
                }
                if(newRsReportCategory.getId()==null){
                    //新增判断名称和code 是否唯一
                    if(!rsReportCategoryService.isUniqueName(0, newRsReportCategory.getName())){
                        return ObjEnvelop.getError("名称已存在",-1);
                    }
                    if(!rsReportCategoryService.isUniqueCode(0, newRsReportCategory.getCode())){
                        return ObjEnvelop.getError("编码已存在",-1);
                    }
                }else{
                    //修改 如果有修改name和code要判断是否唯一
                    RsReportCategory oldRsReportCategory = rsReportCategoryService.getById(newRsReportCategory.getId());
                    if(!oldRsReportCategory.getName().equals(newRsReportCategory.getName())){
                        if(!rsReportCategoryService.isUniqueName(newRsReportCategory.getId(), newRsReportCategory.getName())){
                            return ObjEnvelop.getError("名称已存在",-1);
                        }
                    }
                    if(!oldRsReportCategory.getCode().equals(newRsReportCategory.getCode())){
                        if(!rsReportCategoryService.isUniqueCode(newRsReportCategory.getId(), newRsReportCategory.getCode())){
                            return ObjEnvelop.getError("编码已存在",-1);
                        }
                    }
                }
                newRsReportCategory = rsReportCategoryService.save(newRsReportCategory);
                MRsReportCategory mRsReportCategory = convertToModel(newRsReportCategory, MRsReportCategory.class);
                return ObjEnvelop.getSuccess("操作成功",mRsReportCategory);
            } else {
                // 修改
                RsReportCategory updateModel = rsReportCategoryService.getById(newRsReportCategory.getId());
                updateModel.setCode(newRsReportCategory.getCode());
                updateModel.setName(newRsReportCategory.getName());
                updateModel.setPid(newRsReportCategory.getPid());
                updateModel.setSortNo(null == newRsReportCategory.getSortNo() ? 99 : newRsReportCategory.getSortNo());
                updateModel.setRemark(newRsReportCategory.getRemark());
                params.put("rsReportCategory", objectMapper.writeValueAsString(updateModel));
                newRsReportCategory = rsReportCategoryService.save(updateModel);
                MRsReportCategory mRsReportCategory = convertToModel(newRsReportCategory, MRsReportCategory.class);
                return ObjEnvelop.getSuccess("操作成功",mRsReportCategory);
            }
        } catch (Exception e) {
            e.printStackTrace();
            return failed("操作失败");
        }
    }
    /**
     * 删除
     */
    @RequestMapping("/delete")
    public Envelop delete(String id) {
        try {
            rsReportCategoryService.delete(id);
            return success("删除成功");
        } catch (Exception e) {
            e.printStackTrace();
            return failed("删除失败");
        }
    }
    /**
     * 验证资源报表分类编码是否唯一
     */
    @RequestMapping("/isUniqueCode")
    public Envelop isUniqueCode(@RequestParam Integer id, @RequestParam String code) {
        try {
            return ObjEnvelop.getSuccess("查询成功",rsReportCategoryService.isUniqueCode(id, code));
        } catch (Exception e) {
            e.printStackTrace();
            return failed("查询失败");
        }
    }
    /**
     * 验证资源报表分类名称是否唯一
     */
    @RequestMapping("/isUniqueName")
    public Envelop isUniqueName(@RequestParam Integer id, @RequestParam String name) {
        try {
            return ObjEnvelop.getSuccess("查询成功",rsReportCategoryService.isUniqueName(id, name));
        } catch (Exception e) {
            e.printStackTrace();
            return failed("查询失败");
        }
    }
    @RequestMapping("/selectAppList")
    public Envelop getSelectAppList(String searchNm,int page,int rows){
        if(StringUtils.isEmpty(searchNm)){
            return failed("id不能为空");
        }
        try {
            String filters = "id="+searchNm;
            List<App> appList = appService.search(null, filters, null, page, rows);
            return PageEnvelop.getSuccessListWithPage("",appList,page,rows,appService.getCount(filters));
        } catch (Exception e){
            e.printStackTrace();
            return failed("查询失败");
        }
    }
}

+ 914 - 0
svr/svr-basic/src/main/java/com/yihu/jw/basic/agadmin/controller/resource/ReportController.java

@ -0,0 +1,914 @@
//package com.yihu.jw.basic.agadmin.controller.resource;
//
//
//import com.fasterxml.jackson.core.type.TypeReference;
//import com.yihu.ehr.constants.ErrorCode;
//import com.yihu.ehr.constants.ServiceApi;
//
//import com.yihu.fastdfs.FastDFSUtil;
//import com.yihu.jw.basic.quota.service.TjDimensionMainService;
//import com.yihu.jw.basic.quota.service.TjDimensionSlaveService;
//import com.yihu.jw.basic.quota.service.TjQuotaDimensionMainService;
//import com.yihu.jw.basic.quota.service.TjQuotaDimensionSlaveService;
//import com.yihu.jw.basic.resource.model.RsCategoryTypeTreeModel;
//import com.yihu.jw.basic.resource.model.RsResourcesModel;
//import com.yihu.jw.basic.resource.service.*;
//import com.yihu.jw.entity.ehr.quota.TjDimensionMain;
//import com.yihu.jw.entity.ehr.quota.TjDimensionSlave;
//import com.yihu.jw.entity.ehr.quota.TjQuotaDimensionMain;
//import com.yihu.jw.entity.ehr.quota.TjQuotaDimensionSlave;
//import com.yihu.jw.entity.ehr.resource.*;
//import com.yihu.jw.exception.ApiException;
//import com.yihu.jw.restmodel.ehr.resource.MChartInfoModel;
//import com.yihu.jw.restmodel.ehr.resource.MRsColumnsModel;
//import com.yihu.jw.restmodel.ehr.resource.MRsReport;
//import com.yihu.jw.restmodel.ehr.resource.MRsResources;
//import com.yihu.jw.restmodel.web.Envelop;
//import com.yihu.jw.restmodel.web.ListEnvelop;
//import com.yihu.jw.restmodel.web.ObjEnvelop;
//import com.yihu.jw.restmodel.web.PageEnvelop;
//import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
//import com.yihu.jw.util.common.LogService;
//import com.yihu.jw.util.date.DateTimeUtil;
//import com.yihu.jw.util.http.HttpClientUtil;
//import io.swagger.annotations.ApiParam;
//import org.apache.commons.lang3.StringUtils;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.RequestParam;
//import org.springframework.web.bind.annotation.RestController;
//
//import javax.servlet.http.HttpServletRequest;
//import java.io.FileInputStream;
//import java.io.IOException;
//import java.text.ParseException;
//import java.util.*;
//
//
///**
// * 资源报表管理 controller
// *
// * @author 张进军
// * @created 2017.8.15 19:18
// */
//@RestController("RsReportController")
//@RequestMapping("/resource/report")
//public class ReportController extends EnvelopRestEndpoint {
//
//    @Autowired
//    private RsResourceService rsResourceService;
//    @Autowired
//    private RsReportService rsReportService;
//    @Autowired
//    private RsResourceCategoryService rsCategoryService;
//    @Autowired
//    private RsReportViewService rsReportViewService;
//    @Autowired
//    private FastDFSUtil fastDFSUtil;
//    @Autowired
//    private RsResourceDefaultParamService resourceDefaultParamService;
//    @Autowired
//    private ResourceBrowseService resourceBrowseService;
//    @Autowired
//    private RsResourceQuotaService resourceQuotaService;
//    @Autowired
//    private TjQuotaDimensionMainService tjQuotaDimensionMainService;
//    @Autowired
//    private TjQuotaDimensionSlaveService tjQuotaDimensionSlaveService;
//    @Autowired
//    private TjDimensionMainService tjDimensionMainService;
//    @Autowired
//    private TjDimensionSlaveService tjDimensionSlaveService;
//
//    /**
//     * 展示明细
//     */
//    @RequestMapping(value = "detail")
//    public Envelop detail(Integer id) {
//        try {
//            if (id != null) {
//                RsReport rsReport = rsReportService.getById(id);
//                return ObjEnvelop.getSuccess("查询成功",rsReport);
//            }
//            return success("查询成功");
//        } catch (Exception e) {
//            e.printStackTrace();
//            return failed("查询失败");
//        }
//    }
//
//    /**
//     * 分页查询
//     */
//    @RequestMapping("/search")
//    public Envelop search(String codeName, String reportCategoryId, int page, int rows) {
//        Map<String, Object> params = new HashMap<>();
//        StringBuffer filters = new StringBuffer();
//
//        if (!StringUtils.isEmpty(codeName)) {
//            filters.append("code?" + codeName + " g1;name?" + codeName + " g1;");
//        }
//        if (!StringUtils.isEmpty(reportCategoryId)) {
//            filters.append("reportCategoryId=" + reportCategoryId + ";");
//        } else {
//            return success("查询成功");
//        }
//
//        try {
//            List<RsReport> rsReports = rsReportService.search(null, filters.toString(), null, page, rows);
//            return PageEnvelop.getSuccessListWithPage("",rsReports,page,rows,rsReportService.getCount(filters.toString()));
//        } catch (Exception e) {
//            e.printStackTrace();
//            return failed("查询失败");
//        }
//    }
//
//    /**
//     * 根据条件,获取视图树形数据(视图类别树下展示视图)
//     */
//    @RequestMapping("/getViewsTreeData")
//    public Envelop getViewsTreeData(String codeName, Integer reportId, HttpServletRequest request) {
//        try {
//            ListEnvelop envelop = new ListEnvelop();
//            //获取到的顶级cda类别集合
//            List<RsResourceCategory> categoryList = rsCategoryService.getRsCategoryByPid("");
//            //顶级类别中符合条件的类别集合
//            List<RsResourceCategory> mRsCategoriesSome = new ArrayList<>();
//            //顶级类别中不符合条件的类别集合
//            List<RsResourceCategory> mRsCategoriesOthers = new ArrayList<>();
//            if (categoryList == null || categoryList.size() == 0){
//                envelop.setStatus(-1);
//                envelop.setMessage("没有匹配条件的资源类别!");
//                return envelop;
//            }
//            List<RsCategoryTypeTreeModel> treeList = new ArrayList<>();
//            if(StringUtils.isEmpty(codeName)){
//                treeList = getRsCategoryTreeModelChild(categoryList);
//                envelop.setDetailModelList(treeList);
//                return envelop;
//            }
//            for(RsResourceCategory mRsCategory : categoryList){
//                if(mRsCategory.getName().contains(codeName)){
//                    mRsCategoriesSome.add(mRsCategory);
//                    continue;
//                }
//                mRsCategoriesOthers.add(mRsCategory);
//            }
//            if (mRsCategoriesSome.size() != 0){
//                treeList.addAll(getRsCategoryTreeModelChild(mRsCategoriesSome));
//            }
//            treeList .addAll(getRsCategoryTreeModelByName(mRsCategoriesOthers, codeName));
//            this.setRsCategoryViews(treeList, reportId);
//
//            envelop.setDetailModelList(treeList);
//            return envelop;
//        } catch (Exception e) {
//            e.printStackTrace();
//            LogService.getLogger(ReportController.class).error(e.getMessage());
//            return failed("查询失败");
//        }
//    }
//
//    // 设置视图类别拥有的视图
//    private void setRsCategoryViews(List<RsCategoryTypeTreeModel> rsCategoryTypeTreeModelList, Integer reportId) throws Exception {
//        RsCategoryTypeTreeModel rsCategoryTypeTreeModel;
//        for (RsCategoryTypeTreeModel rsCategory : rsCategoryTypeTreeModelList) {
//            List<RsResource> rsResourcesModelList = rsResourceService.search("categoryId=" + rsCategory.getId());
//            for (RsResource rsResources : rsResourcesModelList) {
//                if ((rsResources.getGrantType().equals("0"))) {
//                    rsCategoryTypeTreeModel = new RsCategoryTypeTreeModel();
//                    rsCategoryTypeTreeModel.setId(rsResources.getId());
//                    rsCategoryTypeTreeModel.setName(rsResources.getName());
//                    rsCategoryTypeTreeModel.setPid(rsCategory.getId());
//                    RsReportView rsReportView = rsReportViewService.findByReportIdAndResourceId(reportId, rsResources.getId());
//                    rsCategoryTypeTreeModel.setIschecked(rsReportView!=null);
//                    rsCategory.getChildren().add(rsCategoryTypeTreeModel);
//                }
//            }
//            if (rsCategory.getChildren() != null && rsCategory.getChildren().size() != 0) {
//                setRsCategoryViews(rsCategory.getChildren(), reportId);
//            }
//        }
//    }
//
//    /**
//     * 获取选择的报表视图
//     */
//    @RequestMapping("/getSelectedViews")
//    public Envelop getSelectedViews(Integer reportId) {
//        Map<String, Object> params = new HashMap<>();
//        params.put("reportId", reportId);
//        try {
//            List<RsReportView> rsReportViews = rsReportViewService.findByReportId(reportId);
//            return ListEnvelop.getSuccess("查询成功",rsReportViews);
//        } catch (Exception e) {
//            e.printStackTrace();
//            return failed("查询失败");
//        }
//    }
//
//    /**
//     * 保存
//     */
//    @RequestMapping("/save")
//    public Envelop save(String data) {
//        try {
//            RsReport newRsReport = toEntity(data, RsReport.class);
//            if (StringUtils.isEmpty(newRsReport.getCode())) {
//                return failed("编码不能为空!");
//            }
//            if (StringUtils.isEmpty(newRsReport.getName())) {
//                return failed("名称不能为空!");
//            }
//
//            if (newRsReport.getId() == null) {
//                // 新增
//                newRsReport = rsReportService.save(newRsReport);
//                return ObjEnvelop.getSuccess("保存成功",newRsReport);
//            } else {
//                // 修改
//                RsReport updateModel = rsReportService.getById(newRsReport.getId());
//                updateModel.setCode(newRsReport.getCode());
//                updateModel.setName(newRsReport.getName());
//                updateModel.setReportCategoryId(newRsReport.getReportCategoryId());
//                updateModel.setStatus(newRsReport.getStatus());
//                updateModel.setRemark(newRsReport.getRemark());
//                updateModel.setTemplatePath(newRsReport.getTemplatePath());
//                updateModel.setShowType(newRsReport.getShowType());
//
//                return ObjEnvelop.getSuccess("保存成功",updateModel);
//            }
//        } catch (Exception e) {
//            e.printStackTrace();
//            return failed("保存失败");
//        }
//    }
//
//    /**
//     * 删除
//     */
//    @RequestMapping("/delete")
//    public Envelop delete(String id) {
//        try {
//            rsReportService.delete(id);
//            return success("删除成功");
//        } catch (Exception e) {
//            e.printStackTrace();
//            return failed("删除失败");
//        }
//    }
//
//    /**
//     * 验证资源报表编码是否唯一
//     */
//    @RequestMapping("/isUniqueCode")
//    public Envelop isUniqueCode(@RequestParam Integer id, @RequestParam String code) {
//        try {
//            return ObjEnvelop.getSuccess("查询成功",rsReportService.isUniqueCode(id, code));
//        } catch (Exception e) {
//            e.printStackTrace();
//            return failed("查询失败");
//        }
//    }
//
//    /**
//     * 验证资源报表名称是否唯一
//     */
//    @RequestMapping("/isUniqueName")
//    public Envelop isUniqueName(@RequestParam Integer id, @RequestParam String name) {
//        try {
//            return ObjEnvelop.getSuccess("查询成功",rsReportService.isUniqueName(id, name));
//        } catch (Exception e) {
//            e.printStackTrace();
//            return failed("查询失败");
//        }
//    }
//
//    /**
//     * 列表:模版导入
//     */
////    @RequestMapping("upload")
////    public Envelop upload(Integer id, String name, HttpServletRequest request) {
////        try {
////            Envelop result = new Envelop();
////
////            Map<String, Object> uploadFileParams = FileUploadUtil.getParams(request.getInputStream(), name);
////            String storagePath = uploadFileParams.size() == 0 ? "" : HttpClientUtil.doPost(comUrl + "/filesReturnUrl", uploadFileParams, username, password);
////
////            String urlGet = comUrl + ServiceApi.Resources.RsReportPrefix + id;
////            String envelopGetStr = HttpClientUtil.doGet(urlGet, username, password);
////            Envelop envelopGet = objectMapper.readValue(envelopGetStr, Envelop.class);
////            RsReportModel updateModel = getEnvelopModel(envelopGet.getObj(), RsReportModel.class);
////            updateModel.setTemplatePath(storagePath);
////
////            Map<String, Object> params = new HashMap<>();
////            params.put("rsReport", objectMapper.writeValueAsString(updateModel));
////            String envelopUpdateStr = HttpClientUtil.doPut(comUrl + ServiceApi.Resources.RsReportSave, params, username, password);
////
////            Envelop envelopUpdate = objectMapper.readValue(envelopUpdateStr, Envelop.class);
////            if (envelopUpdate.isSuccessFlg()) {
////                result.setSuccessFlg(true);
////                result.setObj(storagePath);
////            } else {
////                result.setSuccessFlg(false);
////                result.setErrorMsg("文件保存失败!");
////            }
////            return result;
////        } catch (Exception e) {
////            e.printStackTrace();
////            return failed("导入模版发生异常");
////        }
////    }
//
//    /**
//     * 保存资源配置
//     */
//    @RequestMapping("saveSetting")
//    public Envelop saveSetting(@RequestParam Integer reportId, @RequestParam String data) {
//        try {
//            List<RsReportView> rsReportViewList = objectMapper.readValue(data, new TypeReference<List<RsReportView>>(){});
//            rsReportViewService.save(reportId, rsReportViewList);
//            return success("保存成功");
//        } catch (Exception e) {
//            e.printStackTrace();
//            return failed("保存发生异常");
//        }
//    }
//
//    /**
//     * 获取报表模版内容及其各个图形数据
//     */
//    @RequestMapping("getTemplateData")
//    public Envelop getTemplateData(@RequestParam String reportCode, HttpServletRequest request) {
//        Envelop envelop = new Envelop();
//        Map<String, Object> resultMap = new HashMap<>();
//        List<Map<String, Object>> viewInfos = new ArrayList<>();
//        try {
//            // 获取报表模版内容
//            RsReport rsReport = rsReportService.getByCode(reportCode);
//            if (rsReport == null || StringUtils.isEmpty(rsReport.getTemplatePath())) {
//                return failed("模版未找到");
//            }
//            String[] paths = rsReport.getTemplatePath().split(":");
//            byte[] bytes = fastDFSUtil.download(paths[0], paths[1]);
//            String templateContent = new String(bytes, "UTF-8");
//            resultMap.put("templateContent", templateContent);
//
//            // 获取报表视图
//            RsReport report = rsReportService.getByCode(reportCode);
//            List<RsReportView> rsReportViews = rsReportViewService.findByReportId(report.getId());
//
//            // 获取图形配置
//            for (RsReportView view : rsReportViews) {
//                RsResource rsResource = rsResourceService.getResourceById(view.getResourceId());
//                if (rsResource.getEchartType().equals("twoDimensional")){//特殊二维表报表
//                    //数据另外查询
//                } else {
//                    List<RsResourceDefaultParam> rsDefaultParams = resourceDefaultParamService.search("resourcesId=" + view.getResourceId() + ";paramKey=q");
//                    Map<String, Object> conditions = translateViewCondition(rsResource.getDataSource(), rsDefaultParams);
//                    Map<String, Object> viewInfo = new HashMap<>();
//                    viewInfo.put("conditions", conditions); // 视图数据过滤条件。
//                    List<Map<String, Object>> options = new ArrayList<>();
//                    if (rsResource.getDataSource() == 1) {
//                        // 档案视图场合
//                        viewInfo.put("type", "record");
//                        viewInfo.put("resourceCode", rsResource.getCode());
//                        viewInfo.put("searchParams", rsDefaultParams.size() > 0 ? rsDefaultParams.get(0).getParamValue() : "[]");
//                        // 获取展示的列名
//                        List<MRsColumnsModel>  mRsColumnsModelList = resourceBrowseService.getResourceMetadata(rsResource.getCode(), "*");
//                        if (mRsColumnsModelList != null&&mRsColumnsModelList.size()>0) {
//                            viewInfo.put("columns", mRsColumnsModelList);
//                        }
//                        viewInfos.add(viewInfo);
//                    } else if (rsResource.getDataSource() == 2) {
//                        // 指标视图场合
//                        viewInfo.put("type", "quota");
//                        viewInfo.put("resourceId", view.getResourceId());
//                        String quotaFilter = "";
//                        String dimension = "";
//
//                        List<RsResourceQuota> list = resourceQuotaService.search("resourceId=" + rsResource.getId());
//                        if(list != null && list.size() > 0){
//                            String quotaCodestr  = "";
//                            String quotaIdstr  = "";
//                            String charstr = "";
//                            int charTypeNum = 0;
//                            boolean lineOrBarFlag = true;
//                            boolean pieFlag = true;
//                            for (RsResourceQuota m : list) {
//                                quotaCodestr = quotaCodestr + m.getQuotaCode() +",";
//                                quotaIdstr = quotaIdstr + m.getQuotaId() +",";
//                                charstr = charstr + m.getQuotaChart() +",";
//                                if(lineOrBarFlag && (m.getQuotaChart() == 1 || m.getQuotaChart() == 2)){
//                                    charTypeNum ++;
//                                    lineOrBarFlag = false;
//                                }else if(pieFlag && m.getQuotaChart() == 3) {
//                                    charTypeNum ++;
//                                    pieFlag = false;
//                                }
//                            }
//
//                            List<Map<String, String>> synthesiseDimensionMap = getTjQuotaSynthesiseDimension(quotaCodestr);
//                            Map<String, String> dimensionMap = new LinkedHashMap<>();
//                            String firstDimension = "";
//                            boolean firstFlag = true;
//                            for(Map<String, String> map :synthesiseDimensionMap){
//                                String name = "";
//                                String code = "";
//                                for(String key :map.keySet()){
//                                    if(key.equals("name")){
//                                        name = map.get(key);
//                                    }else{
//                                        code = map.get(key);
//                                    }
//                                }
//                                dimensionMap.put(code,name);
//                                if(firstFlag){
//                                    firstDimension = code;
//                                    firstFlag =  false;
//                                }
//                            }
//                            if(StringUtils.isEmpty(dimension) || dimension.equals(" ")){
//                                String defaultDimension = rsResource.getDimension();
//                                if (!org.apache.commons.lang.StringUtils.isEmpty(defaultDimension)) {
//                                    dimension = rsResource.getDimension();
//                                } else {
//                                    dimension = firstDimension;
//                                }
//                            }
//
//                            if(charTypeNum > 1){
//                                return failed("视图由多个指标组成时,预览图形支持 多指标都属于同一类型,混合型目前支持‘柱状+柱状’,请确认图表展示类型!");
//                            }else {
//                                if(StringUtils.isNotEmpty(rsResource.getEchartType()) && rsResource.getEchartType().equals("radar")){
//                                    chartInfoModel = getQuotaRadarGraphicReports(quotaIdstr, filter, dimension, rsResource.getName());
//                                }else if(StringUtils.isNotEmpty(rsResource.getEchartType()) && rsResource.getEchartType().equals("nestedPie")){
//                                    chartInfoModel = tjQuotaJobClient.getQuotaNestedPieGraphicReports(resourceId, quotaIdstr, filter, dimension, rsResource.getName());
//                                }else {
//                                    //修改后
//                                    String chart = "";
//                                    if(org.apache.commons.lang.StringUtils.isNotEmpty(rsResource.getEchartType())){
//                                        chart = rsResource.getEchartType();
//                                        if(chart.equals("bar")){
//                                            chart ="1";
//                                        }else if(chart.equals("line")){
//                                            chart ="2";
//                                        }else if(chart.equals("pie")){
//                                            chart ="3";
//                                        } else if ("mixed".equals(chart)) {
//                                            chart = charstr;
//                                        }
//                                    }else{
//                                        chart = charstr;
//                                    }
//                                    if(org.apache.commons.lang.StringUtils.isEmpty(dimension) && org.apache.commons.lang.StringUtils.isNotEmpty(rsResource.getDimension())){
//                                        dimension = rsResource.getDimension();
//                                    }else if (org.apache.commons.lang.StringUtils.isEmpty(dimension)) {
//                                        dimension =  firstDimension;
//                                    }
//                                    chartInfoModel = tjQuotaJobClient.getMoreQuotaGraphicReportPreviews(quotaIdstr, chart, filter, dimension , mRsResources.getName(), top, objectMapper.writeValueAsString(mRsResources));
//                                }
//                                if(chartInfoModel != null){
//                                    chartInfoModel.setResourceId(resourceId);
//                                    chartInfoModel.setDimensionMap(dimensionMap);
//                                    chartInfoModel.setFirstDimension(firstDimension);
//                                    envelop.setObj(chartInfoModel);
//                                    envelop.setSuccessFlg(true);
//                                }else {
//                                    envelop.setSuccessFlg(false);
//                                    envelop.setErrorMsg("视图数据查询错误");
//                                }
//                            }
//                        }else{
//                            envelop.setErrorMsg("视图中无指标,请确认!");
//                        }
//                        Map<String, Object> option = new HashMap<>();
//                        option.put("resourceCode", chartInfoModel.getResourceCode());
//                        option.put("resourceId", chartInfoModel.getResourceId());
//                        option.put("dimensionList", chartInfoModel.getDimensionMap());
//                        option.put("option", chartInfoModel.getOption());
//                        options.add(option);
//                        viewInfo.put("options", options); // 视图包含的指标echart图形的option。
//                        viewInfos.add(viewInfo);
//                    }
//                }
//            }
//            resultMap.put("viewInfos", viewInfos);
//            envelop.setObj(resultMap);
//            envelop.setSuccessFlg(true);
//            return envelop;
//        } catch (Exception e) {
//            e.printStackTrace();
//            return failed("获取报表数据发生异常");
//        }
//    }
//
//    public Envelop getQuotaRadarGraphicReports(String resourceId,String quotaFilter,String dimension,
//            @ApiParam(name = "title", value = "名称", defaultValue = "")String title) {
//        String filter = filterHandle(quotaFilter);
//        Envelop envelop = new Envelop();
//        MChartInfoModel chartInfoModel = new MChartInfoModel();
//        chartInfoModel.setResourceId(resourceId);
//        try {
//            RsResource rsResource = rsResourceService.getResourceById(resourceId);
//            if(rsResource==null){
//                return failed("视图不存在,请确认!");
//            }
//            List<RsResourceQuota> list = resourceQuotaService.search("resourceId=" + rsResource.getId());
//            String quotaIdStr = "";
//            if (null != list && list.size() > 0) {
//                for (RsResourceQuota rsResourceQuota : list) {
//                    quotaIdStr += rsResourceQuota.getQuotaId() + ",";
//                }
//            }
//            chartInfoModel = tjQuotaJobClient.getQuotaRadarGraphicReports(quotaIdStr, filter, dimension, title);
//            chartInfoModel.setFirstDimension(dimension);
//            chartInfoModel.setResourceId(resourceId);
//            envelop.setObj(chartInfoModel);
//            envelop.setSuccessFlg(true);
//        } catch (Exception e) {
//            envelop.setErrorMsg("获取图表出错!");
//        }
//        return envelop;
//    }
//
//    public Envelop getQuotaNestedPieGraphicReports(String resourceId, String filter,String dimension,String title) {
//        Envelop envelop = new Envelop();
//        MChartInfoModel chartInfoModel = new MChartInfoModel();
//        chartInfoModel.setResourceId(resourceId);
//        envelop.setObj(chartInfoModel);
//        envelop.setSuccessFlg(false);
//        String filters = filterHandle(filter);
//        try {
//            RsResource rsResource = rsResourceService.getResourceById(resourceId);
//            if(rsResource==null){
//                return failed("视图不存在,请确认!");
//            }
//            List<RsResourceQuota> list = resourceQuotaService.search("resourceId=" + resourceId);
//            String quotaIdStr = "";
//            if (null != list && list.size() > 0) {
//                for (RsResourceQuota ResourceQuota : list) {
//                    quotaIdStr += ResourceQuota.getQuotaId() + ",";
//                }
//            }
//            chartInfoModel = tjQuotaJobClient.getQuotaNestedPieGraphicReports(resourceId, quotaIdStr, filters, dimension, title);
//            chartInfoModel.setFirstDimension(dimension);
//            chartInfoModel.setResourceId(resourceId);
//            envelop.setObj(chartInfoModel);
//            envelop.setSuccessFlg(true);
//        } catch (Exception e) {
//            envelop.setErrorMsg("获取图表出错!");
//        }
//        return envelop;
//    }
//
//    private String filterHandle(String quotaFilter) {
//        String filter = "";
//        if(org.apache.commons.lang.StringUtils.isNotEmpty(quotaFilter)){
//            String [] quotaFilters = quotaFilter.split(";");
//            for(int i = 0;i < quotaFilters.length; i++){
//                String [] keyVal = quotaFilters[i].split("=");
//                if(keyVal[i].length()>1){
//                    if(i==0){
//                        filter = keyVal[0] + "='" + keyVal[1] +"' ";
//                    }else {
//                        filter = filter + " and "  + keyVal[0] + "='" + keyVal[1] +"' ";
//                    }
//                }
//            }
//        }
//        return filter;
//    }
//
//    private List<Map<String,String>>  getTjQuotaSynthesiseDimension(String quotaCodes) {
//        List<TjQuotaDimensionMain> tjQuotaDimensionMains = null;
//        List<TjQuotaDimensionSlave> tjQuotaDimensionSlaves = null;
//        //保存指标的 ID 和 所有维度的集合
//        Map<String,Map<String,String>> dimensionMap = new LinkedHashMap();
//        String [] quotaCode = quotaCodes.split(",");
//        for(int i=0 ; i < quotaCode.length ;i++){
//            Map<String,String> map = new LinkedHashMap<>();
//            tjQuotaDimensionMains = tjQuotaDimensionMainService.getTjQuotaDimensionMainByCode(quotaCode[i]);
////            int main = 1;
//            for(TjQuotaDimensionMain tjQuotaDimensionMain : tjQuotaDimensionMains){
//                TjDimensionMain tjDimensionMain = tjDimensionMainService.getTjDimensionMainByCode(tjQuotaDimensionMain.getMainCode());
//                if(tjDimensionMain !=null){
//                    map.put(tjDimensionMain.getCode(),tjDimensionMain.getName() + "-" + tjDimensionMain.getCode());
//                }
////                main ++;
//            }
//            tjQuotaDimensionSlaves = tjQuotaDimensionSlaveService.getTjQuotaDimensionSlaveByCode(quotaCode[i]);
//
//            int slave = 1;
//            for(TjQuotaDimensionSlave tjQuotaDimensionSlave : tjQuotaDimensionSlaves){
//                TjDimensionSlave tjDimensionSlave =  tjDimensionSlaveService.getTjDimensionSlaveByCode(tjQuotaDimensionSlave.getSlaveCode());
//                if(tjDimensionSlave != null){
//                    map.put(tjDimensionSlave.getCode(), tjDimensionSlave.getName()+"-slaveKey" + slave);//第几个维度
//                }
//                slave ++;
//            }
//            dimensionMap.put(quotaCode[i],map);
//        }
//
//        //取出第一个指标的所有维度
//        Map<String,String> tempMap = new LinkedHashMap();
//        for(String quotaCodeKey:dimensionMap.keySet() ){
//            Map<String,String> codeMap = dimensionMap.get(quotaCodeKey);
//            for(String dimenCode: codeMap.keySet()){
//                tempMap.put(dimenCode, codeMap.get(dimenCode));
//            }
//            break;
//        }
//
//        //用于保存共同交集的指标 key 保存交集的维度code
//        //value 保存 此维度在每个指标统计的结果集中对应的字段名称
//        Map<String,Map<String,String>> synthesiseMap = new LinkedHashMap<>();
//
//        Map<String,String> saveModelMap = new LinkedHashMap();
//        //其他指标与第一个指标维度对比,如果在第一个指标中都存在 交集维度
//        for(String tempDimenCode:tempMap.keySet() ){
//            int num = 0;
//            String quotaCodeStr = "";
//            for(String keyCode:dimensionMap.keySet() ){
//                quotaCodeStr = keyCode;
//                Map<String,String> codeMap = dimensionMap.get(keyCode);
//                for(String code: codeMap.keySet()){
//                    if( code.equals(tempDimenCode) &&  tempMap.get(tempDimenCode).equals(codeMap.get(code))){
//                        saveModelMap.put(quotaCodeStr + "-"+ tempDimenCode ,  tempMap.get(tempDimenCode) );
//                        //指标code + 维度编码 ->  科室-slaveKey2
//                        num ++;
//                    }
//                }
//            }
//            if(num == dimensionMap.size()){
//                Map<String,String> modelCloumnMap = new LinkedHashMap();
//                modelCloumnMap.put("name",tempMap.get(tempDimenCode).split("-")[0]);
//                for(String keyCode:dimensionMap.keySet() ){
//                    if(saveModelMap.containsKey(keyCode+"-"+ tempDimenCode)) {
//                        String str = keyCode+"-"+ tempDimenCode;
//                        if(saveModelMap.get(str).contains(tempDimenCode)){
//                            modelCloumnMap.put(keyCode,tempDimenCode);
//                        }
//                        if(saveModelMap.get(str).contains("slaveKey")){
//                            modelCloumnMap.put(keyCode,saveModelMap.get(str).split("-")[1]);
//                        }
//                    }
//                }
//                synthesiseMap.put(tempDimenCode,modelCloumnMap);
//            }
//        }
//
//        List<Map<String,String>> resultList = new ArrayList<>();
//        for(String key : synthesiseMap.keySet()){
//            resultList.add(synthesiseMap.get(key));
//        }
//        return  resultList;
//    }
//
//    @RequestMapping("getRsQuotaPreview")
//    public Envelop getRsQuotaPreview(@RequestParam String resourceId, HttpServletRequest request) {
//        Envelop envelop = new Envelop();
//        List<Map<String, Object>> options = new ArrayList<>();
//        try {
//            Map<String, Object> params = new HashMap<>();
//            params.clear();
//            params.put("resourceId", resourceId);
//            List<String> userOrgList  = getUserOrgSaasListRedis(request);
//            params.put("userOrgList", userOrgList);
//            params.put("quotaFilter", "");
//            String chartInfoStr = HttpClientUtil.doGet(comUrl + ServiceApi.Resources.GetRsQuotaPreview, params, username, password);
//            Envelop envelop1 = objectMapper.readValue(chartInfoStr, Envelop.class);
//            String s = objectMapper.writeValueAsString((HashMap<String,String>)envelop1.getObj());
//            MChartInfoModel chartInfoModel = objectMapper.readValue(s,MChartInfoModel.class);
//
//            Map<String, Object> option = new HashMap<>();
//            option.put("resourceCode", chartInfoModel.getResourceCode());
//            option.put("resourceId", chartInfoModel.getResourceId());
//            option.put("option", chartInfoModel.getOption());
//            options.add(option);
//            envelop.setSuccessFlg(true);
//            envelop.setDetailModelList(options);
//        }catch (Exception e){
//            e.printStackTrace();
//            return failed("获取报表数据发生异常");
//        }
//        return envelop;
//    }
//
//    /**
//     * 获取报表 联动图形数据
//     * @param reportCode 报表code
//     * @param linkageResourceIdStr 联动视图Id串,多个用;拼接    改为只用于一个视图查询
//     * @param linkageFilter  联动视图条件,多个用;拼接 town=361102;quotaDate >= '2018-03-01' and quotaDate <= '2018-03-31'
//     * @param linkageDimension  联动维度
//     */
//    @RequestMapping("/getLinkageTemplateData")
//    public Envelop getLinkageTemplateData(@RequestParam(name="reportCode",required=false) String reportCode,
//                                         @RequestParam(name="linkageResourceIdStr",required=true) String linkageResourceIdStr,
//                                         @RequestParam(name="linkageFilter",required=false) String linkageFilter,
//                                         @RequestParam(name="linkageDimension",required=false)String linkageDimension,
//                                         @RequestParam(name="limitCondition",required=false)String limitCondition) {
//        String filter = "";
//
//        if(StringUtils.isNotEmpty(linkageFilter)){
//            String [] quotaFilters = linkageFilter.split(";");
//            for(int i = 0;i < quotaFilters.length; i++){
//                if(i == 0){
//                    filter = quotaFilters[0];
//                }else{
//                    filter += " and " + quotaFilters[i];
//                }
//            }
//        }
//        return reportService.getTemplateData(reportCode,linkageResourceIdStr,filter,linkageDimension, limitCondition);
//    }
//
//    /**
//     * 转换视图数据筛选条件
//     */
//    private Map<String, Object> translateViewCondition(Integer type, List<RsResourceDefaultParam> queryList) throws IOException, ParseException {
//        Map<String, Object> conditions = new HashMap<>();
//        if (type == 1) {
//            // 档案视图场合
//            for (int i = 0; i < queryList.size(); i++) {
//                List<Map<String, String>> paramList = objectMapper.readValue(queryList.get(i).getParamValue(), List.class);
//                for (Map<String, String> filter : paramList) {
//                    String field = filter.get("field").toString();
//                    String condition = filter.get("condition").toString();
//                    String value = filter.get("value").toString();
//                    if ("event_date".equals(field)) {
//                        // 期间
//                        String date = DateTimeUtil.simpleDateFormat(DateTimeUtil.simpleDateParse(value));
//                        if (condition.contains(">")) {
//                            conditions.put("startDate", date);
//                        } else if (condition.contains("<")) {
//                            conditions.put("endDate", date);
//                        }
//                    }
//                    if ("EHR_000241".equals(field)) {
//                        // 地区
//                        conditions.put("area", value);
//                    }
//                }
//            }
//        } else if (type == 2) {
//            // 指标视图场合
//            for (int i = 0; i < queryList.size(); i ++) {
//                Map<String, String> filter = objectMapper.readValue(queryList.get(i).getParamValue(), Map.class);
//                if (filter.get("startTime") != null) {
//                    // 起始日期
//                    String date = filter.get("startTime").toString();
//                    conditions.put("startDate", DateTimeUtil.simpleDateFormat(DateTimeUtil.simpleDateParse(date)));
//                }
//                if (filter.get("endTime") != null) {
//                    // 终止日期
//                    String date = filter.get("endTime").toString();
//                    conditions.put("endDate", DateTimeUtil.simpleDateFormat(DateTimeUtil.simpleDateParse(date)));
//                }
//                // 地区
//                String area = "";
//                if (filter.get("province") != null) {
//                    area += filter.get("province").toString();
//                }
//                if (filter.get("city") != null) {
//                    area += filter.get("city").toString();
//                }
//                if (filter.get("town") != null) {
//                    area += filter.get("town").toString();
//                }
//                conditions.put("area", area);
//            }
//        }
//        return conditions;
//    }
//
//    /**
//     * 生成模板
//     * @param id
//     * @param content
//     * @return
//     */
//    @RequestMapping("/uploadTemplate")
//    public Envelop uploadTemplate(Integer id, String content, String reportData, String position) {
//        try {
//            saveSetting(id, reportData);
//            Envelop result = new Envelop();
//            String filePath = this.getClass().getResource("/").getPath() + "temp/";
//            String fileName = System.currentTimeMillis() + "template.js";
//            // 生成模板
//            FileUploadUtil.createFile(filePath, fileName, content);
//            FileInputStream inputStream = new FileInputStream(filePath + fileName);
//            Map<String, Object> uploadFileParams = FileUploadUtil.getParams(inputStream, fileName);
//            String storagePath = uploadFileParams.size() == 0 ? "" : HttpClientUtil.doPost(comUrl + "/filesReturnUrl", uploadFileParams, username, password);
//
//            String urlGet = comUrl + ServiceApi.Resources.RsReportPrefix + id;
//            String envelopGetStr = HttpClientUtil.doGet(urlGet, username, password);
//            Envelop envelopGet = objectMapper.readValue(envelopGetStr, Envelop.class);
//            RsReportModel updateModel = getEnvelopModel(envelopGet.getObj(), RsReportModel.class);
//            updateModel.setTemplatePath(storagePath);
//            // 设置报表中视图和位置的关系
//            updateModel.setPosition(position);
//
//            Map<String, Object> params = new HashMap<>();
//            params.put("rsReport", objectMapper.writeValueAsString(updateModel));
//            String envelopUpdateStr = HttpClientUtil.doPut(comUrl + ServiceApi.Resources.RsReportSave, params, username, password);
//            // 删除临时文件
//            FileUploadUtil.delDir(filePath);
//
//            Envelop envelopUpdate = objectMapper.readValue(envelopUpdateStr, Envelop.class);
//            if (envelopUpdate.isSuccessFlg()) {
//                result.setSuccessFlg(true);
//                result.setObj(storagePath);
//            } else {
//                result.setSuccessFlg(false);
//                result.setErrorMsg("保存失败!");
//            }
//            return result;
//        } catch (Exception e) {
//            e.printStackTrace();
//            return failed("生成模版发生异常");
//        }
//    }
//
//    @RequestMapping("/getPositionMapByCode")
//    public Envelop getPositionByCode(String code) throws Exception {
//        Map<String, Object> params = new HashMap<>();
//        params.put("code", code);
//        String chartInfoStr = HttpClientUtil.doGet(comUrl + "/resources/report/getPositionMapByCode", params, username, password);
//        return chartInfoStr;
//    }
//
//    @RequestMapping("/getTemplateContent")
//    public Envelop getTemplateContent(String reportCode) {
//        Map<String, Object> params = new HashMap<>();
//        try {
//            // 获取报表模版内容
//            params.put("reportCode", reportCode);
//            String templateContent = HttpClientUtil.doGet(comUrl + ServiceApi.Resources.RsReportTemplateContent, params, username, password);
//            return templateContent ;
//        } catch (Exception e) {
//            e.printStackTrace();
//            return "";
//        }
//    }
//
//
//    /**
//     *
//     * 根据父级信息获取全部的子级信息(树形model)
//     * @param info 父级信息
//     * @return 全部子级信息
//     */
//    private List<RsCategoryTypeTreeModel> getRsCategoryTreeModelChild(List<RsResourceCategory> info) {
//        List<RsCategoryTypeTreeModel> treeInfo = new ArrayList<>();
//        for (int i = 0; i < info.size(); i++) {
//            RsResourceCategory typeInfo = info.get(i);
//            RsCategoryTypeTreeModel tree = convertToModel(typeInfo, RsCategoryTypeTreeModel.class);
//            List<RsResourceCategory> categoryListChild = rsCategoryService.getRsCategoryByPid(typeInfo.getId());
//            List<RsCategoryTypeTreeModel> listChildTree = getRsCategoryTreeModelChild(categoryListChild);
//            tree.setChildren(listChildTree);
//            treeInfo.add(tree);
//        }
//        return treeInfo;
//    }
//
//    /**
//     * 递归不满足的父级类别集合的子集中满足条件TreeModel集合的方法
//     * @param mRsCategories 不符合的父级类别的集合
//     * @param name
//     * @return
//     */
//    private List<RsCategoryTypeTreeModel> getRsCategoryTreeModelByName(List<RsResourceCategory> mRsCategories, String name) throws ParseException {
//        //结构:treeList 包含treeModel,treeModel包含listOfParent
//        List<RsCategoryTypeTreeModel> treeList = new ArrayList<>();
//        for(RsResourceCategory mRsCategory:mRsCategories){
//            List<RsCategoryTypeTreeModel> childList = new ArrayList<>();
//            RsCategoryTypeTreeModel treeModel = convertToModel(mRsCategory,RsCategoryTypeTreeModel.class);
//            String pid = mRsCategory.getId();
//            //获取所有下一级cda类别
//            List<RsResourceCategory> listAll = rsCategoryService.getRsCategoryByPid(pid);
//            if(listAll.size() == 0){
//                continue;
//            }
//            //获取所有下一级符合要求的资源类别
//            String filters ="pid="+pid+";name?"+name;
//
//            //modify by cws
//            List<RsResourceCategory> listSome = rsCategoryService.search(filters);
//            //List<MRsCategory> listSome = (List<MRsCategory>)responseEntity.getBody();
//            if(listSome.size()!=0){
//                childList.addAll(getRsCategoryTreeModelChild(listSome));
//            }
//            //取剩下不符合要求的进行递归
//            listAll.removeAll(listSome);
//            if(listAll.size() != 0){
//                childList.addAll(getRsCategoryTreeModelByName(listAll, name));
//            }
//            if(childList.size() != 0){
//                treeModel.setChildren(childList);
//                treeList.add(treeModel);
//            }
//        }
//        return treeList;
//    }
//}

+ 641 - 0
svr/svr-basic/src/main/java/com/yihu/jw/basic/agadmin/controller/resource/ResourceBrowseController.java

@ -0,0 +1,641 @@
package com.yihu.jw.basic.agadmin.controller.resource;
import com.yihu.jw.basic.agadmin.service.ResourceBrowseControllerService;
import com.yihu.jw.restmodel.ehr.resource.MRsColumnsModel;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.ListEnvelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import com.yihu.jw.util.http.HttpClientUtil;
import com.yihu.jw.util.network.HttpResponse;
import com.yihu.jw.util.network.HttpUtils;
import io.swagger.annotations.Api;
import jxl.Cell;
import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.ui.Model;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.OutputStream;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
 * 资源浏览服务控制器
 * Created by wq on 2016/5/17.
 */
@RestController
@RequestMapping("/resourceBrowse")
@Api( tags = {"网关-资源浏览"})
public class ResourceBrowseController extends EnvelopRestEndpoint {
    private static final Logger logger = LoggerFactory.getLogger(ResourceBrowseController.class);
    private static final Integer SINGLE_REQUEST_SIZE = 5000; //导出Excel时的单次请求量
    private static final Integer SINGLE_EXCEL_SIZE = 50000; //导出Excel时的单个文件数据量
    @Autowired
    ResourceBrowseControllerService resourceBrowseControllerService;
    @Autowired
    private ResourceIntegratedController resourceIntegratedController;
//    @RequestMapping("/searchResourceList")
//    public Object searchResourceList() throws Exception {
//        Map<String, Object> params = new HashMap<>();
//        String url = "/resources/categories/all";
//        String resultStr = "";
//        resultStr = HttpClientUtil.doGet(comUrl + url, params, username, password);
//        Envelop envelop = toModel(resultStr, Envelop.class);
//        return envelop;
//    }
//
//    @RequestMapping("/searchResource")
//    @ResponseBody
//    public Object searchResource(String ids) {
//        Envelop envelop = new Envelop();
//        Map<String, Object> params = new HashMap<>();
//        String url = "/resources/ResourceBrowses/categories";
//        String resultStr = "";
//        params.put("id", ids);
//        try {
//            resultStr = HttpClientUtil.doGet(comUrl + url, params, username, password);
//            envelop = toModel(resultStr, Envelop.class);
//        } catch (Exception e) {
//            e.printStackTrace();
//            envelop.setSuccessFlg(false);
//            envelop.setErrorMsg(e.getMessage());
//        }
//        return envelop.getDetailModelList();
//    }
//
//    /**
//     * 动态获取GRID的列名
//     * @param dictId 资源编码
//     * @param request
//     * @return
//     */
//    @RequestMapping("/getGridCloumnNames")
//    @ResponseBody
//    public List<MRsColumnsModel> getGridColumnNames(String dictId, HttpServletRequest request) throws Exception {
//        return getColumns(dictId, request);
//    }
//
//    /**
//     * zuul
//     * @param resourceCode
//     * @param request
//     * @return
//     * @throws Exception
//     */
//    public  List<MRsColumnsModel> getColumns(String resourceCode, HttpServletRequest request) throws Exception {
//        List<MRsColumnsModel> result = new ArrayList<>();
//        //从Session中获取用户的角色信息作为查询参数
//        // 获取资源拥着信息
//        String urlGet = "/resource/api/v1.0/resources/byCode";
//        Map<String, Object> getParams = new HashMap<>();
//        getParams.put("code", resourceCode);
//        HttpResponse response = HttpUtils.doGet(adminInnerUrl + urlGet, getParams);
//        if (!response.isSuccessFlg()) {
//            return result;
//        }
//        Map<String, Object> rsObj = objectMapper.readValue(response.getContent(), Map.class);
//        String url = "/resource/api/v1.0/resources/query/getResourceMetadata";
//        Map<String, Object> params = new HashMap<>();
//        String userId = String.valueOf(request.getSession().getAttribute("userId"));
//        String creator = String.valueOf(rsObj.get("creator"));
//        params.put("roleId", "*");
//        params.put("resourcesCode", resourceCode);
//        response = HttpUtils.doGet(adminInnerUrl + url, params);
//        return toModel(response.getContent(), List.class);
//    }
//
//    /**
//     * 获取字典值
//     * @param dictId
//     * @return
//     */
//    @RequestMapping("/getRsDictEntryList")
//    @ResponseBody
//    public Object getRsDictEntryList(String dictId) throws Exception {
//        Envelop envelop = new Envelop();
//        Map<String, Object> params = new HashMap<>();
//        String resultStr = "";
//        String dictEntryUrl = "/resources/noPageDictEntries";
//        params.put("filters", "dictCode=" + dictId + " g0");
//        if (!StringUtils.isEmpty(dictId)) {
//            resultStr = HttpClientUtil.doGet(comUrl + dictEntryUrl, params, username, password);
//            return resultStr;
//        }
//        return envelop;
//    }
    /**
     * 档案资源浏览
     * @param resourcesCode
     * @param searchParams
     * @param page
     * @param rows
     * @param request
     * @return
     */
    @GetMapping("/searchResourceData")
    public Envelop searchResourceData(String resourcesCode, String searchParams, int page, int rows, HttpServletRequest request) throws Exception {
        String url = "/resources/ResourceBrowses/getResourceData";
        Map<String, Object> params = new HashMap<>();
        params.put("resourcesCode", resourcesCode);
        params.put("roleId", "*");
        params.put("orgCode", "*");
        params.put("areaCode", "*");
        String queryCondition = "";
        if(!StringUtils.isEmpty(searchParams)){
            Pattern pattern = Pattern.compile("\\[.+?\\]");
            Matcher matcher = pattern.matcher(searchParams);
            if (matcher.find()) {
                if (searchParams.contains("{") || searchParams.contains("}")) {
                    queryCondition = searchParams;
                }
            }
        }
        Envelop envelop = resourceBrowseControllerService.getResourceData(resourcesCode,"*","*","*",queryCondition,page,rows,null);
        if (envelop.getStatus()==200) {
            ListEnvelop listEnvelop = (ListEnvelop) envelop;
            List<Map<String, Object>> envelopList = listEnvelop.getDetailModelList();
            List<Map<String, Object>> middleList = new ArrayList<>();
            for (Map<String, Object> envelopMap : envelopList) {
                Map<String, Object> resultMap = new HashMap<String, Object>();
                for (String key : envelopMap.keySet()) {
                    String value = envelopMap.get(key) == null? "" : String.valueOf(envelopMap.get(key));
                    if (key.equals("event_type")) {
                        String eventType = envelopMap.get(key).toString();
                        if (eventType.equals("0")) {
                            resultMap.put(key, "门诊");
                        } else if (eventType.equals("1")) {
                            resultMap.put(key, "住院");
                        } else if (eventType.equals("2")) {
                            resultMap.put(key, "体检");
                        } else {
                            resultMap.put(key, "未知");
                        }
                    } else if (value.contains("T") && value.contains("Z")) {
                        String newDateStr = value.replace("T", " ").replace("Z", "");
                        resultMap.put(key, newDateStr);
                    } else {
                        resultMap.put(key, value);
                    }
                }
                middleList.add(resultMap);
            }
            List<Map<String, Object>> finalList = resourceIntegratedController.changeIdCardNo(middleList, request);
            return ListEnvelop.getSuccess("查询成功",finalList);
        }
        return envelop;
    }
    /**
     * 档案资源浏览细表数据 zuul
     * @param rowKey
     * @param version
     * @return
     */
//    @RequestMapping("/searchResourceSubData")
//    @ResponseBody
//    public Object getRsDictEntryList(String rowKey, String version) throws Exception {
//        Envelop envelop = new Envelop();
//        if (rowKey.contains("$")) {
//            envelop.setSuccessFlg(false);
//            envelop.setErrorMsg("该列数据已为详细数据");
//            return envelop;
//        }
//        String url = "/resource/api/v1.0/resources/query/getResourceSubData";
//        Map<String, Object> params = new HashMap<>();
//        params.put("rowKey", rowKey);
//        params.put("version", version);
//        String resultStr = HttpClientUtil.doGet(adminInnerUrl + url, params, username, password);
//        envelop = toModel(resultStr, Envelop.class);
//        return envelop;
//    }
//
//    /**
//     * 指标资源检索条件获取
//     * @param resourcesId
//     * @return
//     */
//    @RequestMapping("/searchQuotaResourceParam")
//    @ResponseBody
//    public Envelop searchQuotaDataParam(String resourcesId) throws Exception {
//        String url = "/resources/ResourceBrowses/getQuotaResourceParam";
//        Map<String, Object> params = new HashMap<String, Object>();
//        params.put("resourcesId", resourcesId);
//        String resultStr = HttpClientUtil.doGet(comUrl + url, params, username, password);
//        Envelop envelop = toModel(resultStr, Envelop.class);
//        return envelop;
//    }
//
//    /**
//     * 指标资源浏览
//     * @param resourcesId
//     * @param searchParams
//     * @param page
//     * @param rows
//     * @param request
//     * @return
//     */
//    @RequestMapping("/searchQuotaResourceData")
//    @ResponseBody
//    public Object searchQuotaResourceData(String resourcesId, String searchParams, int page, int rows, HttpServletRequest request) throws Exception {
//        Map<String, Object> params = new HashMap<>();
//        String resultStr = "";
//        String url = "/resources/ResourceBrowses/getQuotaResourceData";
//        List<String> userOrgList  = getUserOrgSaasListRedis(request);
//        params.put("userOrgList", userOrgList);
//        params.put("resourcesId", resourcesId);
//        if(searchParams != null) {
//            if (searchParams.contains("{") || searchParams.contains("}")) {
//                params.put("queryCondition", searchParams);
//            } else {
//                params.put("queryCondition", "");
//            }
//        }
//        params.put("page", page);
//        params.put("size", rows);
//        resultStr = HttpClientUtil.doGet(comUrl + url, params, username, password);
//        return resultStr;
//    }
//
//    /**
//     * 档案资源数据导出
//     * @param response
//     * @param request
//     * @param resourcesCode
//     * @param searchParams
//     * @param size
//     */
//    @RequestMapping("/outExcel")
//    public void outExcel(HttpServletResponse response, HttpServletRequest request, String resourcesCode, String searchParams, Integer size) throws Exception {
//        //权限控制
//        List<String> userRolesList  = getUserRolesListRedis(request);
//        List<String> userOrgSaasList  = getUserOrgSaasListRedis(request);
//        List<String> userAreaSaasList  = getUserAreaSaasListRedis(request);
//        boolean isAccessAll = getIsAccessAllRedis(request);
//        if (!isAccessAll) {
//            if ((null == userOrgSaasList || userOrgSaasList.size() <= 0) && (null == userAreaSaasList || userAreaSaasList.size() <= 0)) {
//                logger.warn("无权访问");
//                response.setStatus(403);
//                return;
//            }
//        }
//        //基本设置
//        response.setContentType("application/vnd.ms-excel");
//        String fileName = "档案资源数据";
//        Long current = System.currentTimeMillis();
//        response.setHeader("Content-Disposition", "attachment; filename="
//                + new String(fileName.getBytes("UTF-8"), "ISO8859-1") + current.toString() + ".xls");
//        OutputStream os = response.getOutputStream();
//        Map<String, Object> params = new HashMap<>();
//        //基本参数
//        String url = "/resources/ResourceBrowses/getResourceData";
//        params.put("resourcesCode", resourcesCode);
//        if (isAccessAll) {
//            params.put("roleId", "*");
//            params.put("orgCode", "*");
//            params.put("areaCode", "*");
//        } else {
//            // 获取资源拥着信息
//            String urlGet = "/resources/byCode";
//            Map<String, Object> getParams = new HashMap<>();
//            getParams.put("code", resourcesCode);
//            String result1 = HttpClientUtil.doGet(comUrl + urlGet, getParams, username, password);
//            Envelop getEnvelop = objectMapper.readValue(result1, Envelop.class);
//            if (!getEnvelop.isSuccessFlg()) {
//                logger.warn("原资源信息获取失败");
//                return;
//            }
//            Map<String, Object> rsObj = (Map<String, Object>) getEnvelop.getObj();
//            String userId = String.valueOf(request.getSession().getAttribute("userId"));
//            String creator = String.valueOf(rsObj.get("creator"));
//            // 判断视图是否由用户生成
//            if (userId.equals(creator)) {
//                params.put("roleId", "*");
//            } else {
//                params.put("roleId", objectMapper.writeValueAsString(userRolesList));
//            }
//            params.put("roleId", objectMapper.writeValueAsString(userRolesList));
//            params.put("orgCode", objectMapper.writeValueAsString(userOrgSaasList));
//            params.put("areaCode", objectMapper.writeValueAsString(userAreaSaasList));
//        }
//        params.put("queryCondition", searchParams);
//        params.put("size", SINGLE_REQUEST_SIZE);
//        List<MRsColumnsModel> mRsColumnsModels = getColumns(resourcesCode, request);
//        if (size < SINGLE_EXCEL_SIZE) {
//            WritableWorkbook book = Workbook.createWorkbook(os);
//            WritableSheet sheet = book.createSheet("page1", 0);
//            //初始化表格基础数据
//            sheet = resourceIntegratedController.initBaseInfo(sheet);
//            for (int i = 0; i < mRsColumnsModels.size(); i++) {
//                sheet.addCell(new Label(i + 6, 0, mRsColumnsModels.get(i).getCode()));
//                sheet.addCell(new Label(i + 6, 1, mRsColumnsModels.get(i).getValue()));
//            }
//            //循环获取数据
//            int totalPage;
//            if (size % SINGLE_REQUEST_SIZE > 0) {
//                totalPage = size / SINGLE_REQUEST_SIZE + 1;
//            } else {
//                totalPage = size / SINGLE_REQUEST_SIZE;
//            }
//            for (int page = 1; page <= totalPage; page ++) {
//                params.put("page", page);
//                String httpResponse = HttpClientUtil.doGet(comUrl + url, params);
//                Envelop envelop = toModel(httpResponse, Envelop.class);
//                List<Object> dataList = envelop.getDetailModelList();
//                Cell[] cells = sheet.getRow(0);
//                //填充数据
//                sheet = inputData(sheet, dataList, cells, sheet.getRows());
//            }
//            sheet.mergeCells(0, 2, 0, sheet.getRows() - 1);
//            sheet.addCell(new Label(0, 2, "值"));
//            sheet.removeRow(0);
//            book.write();
//            book.close();
//        } else {
//            int fileCount;
//            if (size % SINGLE_EXCEL_SIZE > 0) {
//                fileCount = size / SINGLE_EXCEL_SIZE + 1;
//            } else {
//                fileCount = size / SINGLE_EXCEL_SIZE;
//            }
//            int totalPage;
//            if (size % SINGLE_REQUEST_SIZE > 0) {
//                totalPage = size / SINGLE_REQUEST_SIZE + 1;
//            } else {
//                totalPage = size / SINGLE_REQUEST_SIZE;
//            }
//            WritableWorkbook book = Workbook.createWorkbook(os);
//            for (int fileIndex = 1; fileIndex <= fileCount; fileIndex ++) {
//                WritableSheet sheet = book.createSheet("page" + fileIndex, fileIndex - 1);
//                //初始化表格基础数据
//                sheet = resourceIntegratedController.initBaseInfo(sheet);
//                for (int i = 0; i < mRsColumnsModels.size(); i++) {
//                    sheet.addCell(new Label(i + 6, 0, mRsColumnsModels.get(i).getCode()));
//                    sheet.addCell(new Label(i + 6, 1, mRsColumnsModels.get(i).getValue()));
//                }
//                //循环获取数据
//                int currentPage = (fileIndex - 1) * (SINGLE_EXCEL_SIZE / SINGLE_REQUEST_SIZE) + 1;
//                int cycPage;
//                if (fileIndex == fileCount) {
//                    int beforePage = (fileIndex - 1) * (SINGLE_EXCEL_SIZE / SINGLE_REQUEST_SIZE);
//                    int lastPage = totalPage - beforePage;
//                    cycPage = beforePage + lastPage;
//                } else {
//                    cycPage = fileIndex * (SINGLE_EXCEL_SIZE / SINGLE_REQUEST_SIZE);
//                }
//                for (int page = currentPage; page <= cycPage; page ++) {
//                    params.put("page", page);
//                    String httpResponse = HttpClientUtil.doGet(comUrl + url, params);
//                    Envelop envelop = toModel(httpResponse, Envelop.class);
//                    List<Object> dataList = envelop.getDetailModelList();
//                    Cell[] cells = sheet.getRow(0);
//                    //填充数据
//                    sheet = inputData(sheet, dataList, cells, sheet.getRows());
//                }
//                sheet.mergeCells(0, 2, 0, sheet.getRows() - 1);
//                sheet.addCell(new Label(0, 2, "值"));
//                sheet.removeRow(0);
//            }
//            book.write();
//            book.close();
//        }
//        os.flush();
//        os.close();
//    }
//
//    /**
//     * 指标资源数据导出
//     * @param response
//     * @param request
//     * @param resourcesId
//     * @param searchParams
//     * @throws Exception
//     */
//    @RequestMapping("/outQuotaExcel")
//    public void outQuotaExcel(HttpServletResponse response, HttpServletRequest request, String resourcesId, String searchParams) throws Exception {
//        //基本数据
//        response.setContentType("application/vnd.ms-excel");
//        String fileName = "指标资源数据";
//        Long current = System.currentTimeMillis();
//        response.setHeader("Content-Disposition", "attachment; filename="
//                + new String(fileName.getBytes("UTF-8"), "ISO8859-1") + current.toString() + ".xls");
//        OutputStream os = response.getOutputStream();
//        //请求数据
//        String url = "/resources/ResourceBrowses/getQuotaResourceData";
//        Map<String, Object> params = new HashMap<String, Object>();
//        params.put("resourcesId", resourcesId);
//        params.put("queryCondition", searchParams);
//        List<String> userOrgList  = getUserOrgSaasListRedis(request);
//        params.put("userOrgList", userOrgList);
//        String resultStr = HttpClientUtil.doGet(comUrl + url, params, username, password);
//        Envelop envelop = toModel(resultStr, Envelop.class);
//        //处理Excel
//        WritableWorkbook book = Workbook.createWorkbook(os);
//        WritableSheet sheet = book.createSheet("page1", 0);
//        sheet.addCell(new Label(0, 0, "代码"));
//        sheet.addCell(new Label(0, 1, "名称"));
//        List<Map<String, String>> objList = (List<Map<String, String>>)envelop.getObj();
//        for(int i = 0; i< objList.size(); i ++) {
//            Map<String, String> objMap = objList.get(i);
//            sheet.addCell(new Label(i + 1, 0, String.valueOf(objMap.get("key"))));
//            sheet.addCell(new Label(i + 1, 1, String.valueOf(objMap.get("name"))));
//        }
//        Cell [] cells = sheet.getRow(0);
//        sheet = inputData(sheet, envelop.getDetailModelList(), cells, sheet.getRows());
//        sheet.mergeCells(0, 2, 0, sheet.getRows() - 1);
//        sheet.addCell(new Label(0, 2, "值"));
//        sheet.removeRow(0);
//        book.write();
//        book.close();
//        os.flush();
//        os.close();
//    }
//
//    /**
//     * 填充数据
//     * @param sheet
//     * @param dataList
//     * @param cells
//     * @return
//     * @throws Exception
//     */
//    public WritableSheet inputData(WritableSheet sheet, List<Object> dataList, Cell[] cells, int rowNum) throws Exception{
//        for (int i = 0; i < dataList.size(); i++) {
//            Map<String, String> map = toModel(toJson(dataList.get(i)), Map.class);
//            for (String key : map.keySet()) {
//                for (Cell cell : cells) {
//                    if (cell.getContents().equals(key)) {
//                        sheet.addCell(new Label(cell.getColumn(), i + rowNum, String.valueOf(map.get(key))));
//                    }
//                }
//            }
//        }
//        return sheet;
//    }
//
//    @RequestMapping("/searchDictEntryList")
//    @ResponseBody
//    public Object getDictEntryList(String dictId, String conditions) throws Exception {
//        Envelop envelop = new Envelop();
//        Map<String, Object> params = new HashMap<>();
//        List<RsBrowseModel> rsBrowseModelList = new ArrayList<>();
//        String resultStr = "";
//        String url = "";
//        if (!StringUtils.isEmpty(dictId)) {
//            switch (dictId) {
//                case "34":
//                    params.put("filters", "dictId=" + dictId);
//                    params.put("page", 1);
//                    params.put("size", 500);
//                    params.put("fields", "");
//                    params.put("sorts", "");
//                    String con = changeConditions(conditions);
//                    if (!StringUtils.isEmpty(con)) {
//                        params.put("filters", "dictId=" + dictId + " g0;value=" + con + " g1");
//                    }
//                    url = "/dictionaries/entries";
//                    resultStr = HttpClientUtil.doGet(comUrl + url, params, username, password);
//                    break;
//                case "andOr":
//                    rsBrowseModelList.add(new RsBrowseModel("AND", "并且"));
//                    rsBrowseModelList.add(new RsBrowseModel("OR", "或者"));
//                    envelop.setDetailModelList(rsBrowseModelList);
//                    return envelop;
//                default:
//                    url = "/resources/ResourceBrowses";
//                    params.put("category_id", dictId);
//                    resultStr = HttpClientUtil.doGet(comUrl + url, params, username, password);
//                    break;
//            }
//        }
//        return resultStr;
//    }
//
//    @RequestMapping("/browseBefore")
//    public String resourceBrowseBefore(Model model) {
//        Envelop envelop = new Envelop();
//        String resultStr = "";
//        List<RsCategoryModel> list=new ArrayList<RsCategoryModel>();
//        try {
//            RsCategoryModel rsModel=new RsCategoryModel();
//            rsModel.setId("0dae002159535497b3865e129433e933");
//            rsModel.setName("全员人口个案库");
//            list.add(rsModel);
//            rsModel=new RsCategoryModel();
//            rsModel.setId("0dae0021595354a8b3865e129433e934");
//            rsModel.setName("医疗资源库");
//            list.add(rsModel);
//            rsModel=new RsCategoryModel();
//            rsModel.setId("0dae0021595354c4b3865e129433e935");
//            rsModel.setName("健康档案库");
//            list.add(rsModel);
//            rsModel=new RsCategoryModel();
//            rsModel.setId("0dae0021595354cfb3865e129433e936");
//            rsModel.setName("电子病历库");
//            list.add(rsModel);
//            rsModel=new RsCategoryModel();
//            rsModel.setId("0dae0021595354d6b3865e129433e937");
//            rsModel.setName("生命体征库");
//            list.add(rsModel);
//            envelop.setDetailModelList(list);
//            envelop.setSuccessFlg(true);
//            resultStr =  toJson(envelop);
//            model.addAttribute("list",list);
//            model.addAttribute("resultStr",resultStr);
//            model.addAttribute("contentPage", "/resource/browse/resourceBrowseBefore");
//
//            return "pageView";
//        } catch (Exception e) {
//            e.printStackTrace();
//            envelop.setSuccessFlg(false);
//            envelop.setErrorMsg("字典查询失败");
//        }
//        model.addAttribute("contentPage", "/resource/browse/resourceBrowseBefore");
//        return "pageView";
//    }
//
//    //获取所有平台应用下的角色组用于下拉框
//    @RequestMapping("/resourceBrowseTree")
//    @ResponseBody
//    public Object getResourceBrowseTree(){
//        try {
//            String url = "/resourceBrowseTree";
//            Map<String,Object> params = new HashMap<>();
//            String envelopStr = HttpClientUtil.doGet(comUrl+url,params,username,password);
//            //Envelop envelop = objectMapper.readValue(envelopStr,Envelop.class);
//            return envelopStr;
//        } catch (Exception ex){
//            ex.printStackTrace();
//            return failed(ERR_SYSTEM_DES);
//        }
//    }
//
//    //根据视图分类的id-CategoryId获取数据集
//    @RequestMapping("/getResourceByCategoryId")
//    @ResponseBody
//    public Object getResourceByCategoryId(String categoryId){
//        try {
//            String url = "/getResourceByCategoryId";
//            Map<String,Object> params = new HashMap<>();
//            params.put("categoryId",categoryId);
//            String envelopStr = HttpClientUtil.doGet(comUrl+url,params,username,password);
//            return envelopStr;
//        } catch (Exception ex){
//            ex.printStackTrace();
//            return failed(ERR_SYSTEM_DES);
//        }
//    }
//
//    public String changeConditions(String conditions) {
//        String value = "";
//        if (StringUtils.isEmpty(conditions)) {
//            return value;
//        }
//        Map<String, Object> params = new HashMap<>();
//        String condition = "";
//        String conditionAll = "";
//        String url = "/dictionaries/entries";
//        params.put("filters", "dictId=30 g0;code=" + conditions + " g1");
//        params.put("page", 1);
//        params.put("size", 999);
//        params.put("fields", "");
//        params.put("sorts", "");
//        try {
//            condition = HttpClientUtil.doGet(comUrl + url, params, username, password);
//            params.put("filters", "dictId=34");
//            conditionAll = HttpClientUtil.doGet(comUrl + url, params, username, password);
//            SystemDictEntryModel systemDictEntryModel = toModel(toJson(toModel(condition, Envelop.class).getDetailModelList().get(0)), SystemDictEntryModel.class);
//            List<SystemDictEntryModel> systemDictEntryModelAll = toModel(conditionAll, Envelop.class).getDetailModelList();
//            String[] cs = systemDictEntryModel.getCatalog().split(",");
//            for (int i = 0; i < systemDictEntryModelAll.size(); i++) {
//                SystemDictEntryModel sde = toModel(toJson(systemDictEntryModelAll.get(i)), SystemDictEntryModel.class);
//                if (Arrays.asList(cs).contains(sde.getCode())) {
//                    value += sde.getValue() + ",";
//                }
//            }
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//        return value;
//    }
}

+ 503 - 0
svr/svr-basic/src/main/java/com/yihu/jw/basic/agadmin/controller/resource/ResourceCenterController.java

@ -0,0 +1,503 @@
//package com.yihu.jw.basic.agadmin.controller.resource;
//
//import com.yihu.jw.restmodel.web.Envelop;
//import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
//import com.yihu.jw.util.http.HttpClientUtil;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.ResponseBody;
//import org.springframework.web.bind.annotation.RestController;
//
///**
// * Controller - 资源中心首页
// * Created by progr1mmer on 2018/1/9.
// */
//
//@RestController
//@RequestMapping("/resourceCenter")
//public class ResourceCenterController extends EnvelopRestEndpoint {
//
//    // ------------------------------- 统计相关 start ------------------------------------
//    /**
//     * 顶部栏 - 居民建档数
//     * @return
//     */
//    @ResponseBody
//    @RequestMapping("/getPatientArchiveCount")
//    public Envelop getPatientArchiveCount() {
//        Envelop envelop = new Envelop();
//        String url = "/resource/center/getPatientArchiveCount";
//        try {
//            String resultStr = HttpClientUtil.doGet(comUrl + url, username, password);
//            envelop = toModel(resultStr, Envelop.class);
//            return envelop;
//        } catch (Exception e) {
//            e.printStackTrace();
//            envelop.setSuccessFlg(false);
//            envelop.setErrorMsg(e.getMessage());
//        }
//        return envelop;
//    }
//
//    /**
//     * 顶部栏 - 医疗资源建档数
//     * @return
//     */
//    @ResponseBody
//    @RequestMapping("/getMedicalResourcesCount")
//    public Envelop getMedicalResourcesCount() {
//        Envelop envelop = new Envelop();
//        String url = "/resource/center/getMedicalResourcesCount";
//        try {
//            String resultStr = HttpClientUtil.doGet(comUrl + url, username, password);
//            envelop = toModel(resultStr, Envelop.class);
//            return envelop;
//        }catch (Exception e) {
//            e.printStackTrace();
//            envelop.setSuccessFlg(false);
//            envelop.setErrorMsg(e.getMessage());
//        }
//        return envelop;
//    }
//
//    /**
//     * 顶部栏 - 健康档案建档数
//     * @return
//     */
//    @ResponseBody
//    @RequestMapping("/getHealthArchiveCount")
//    public Envelop getHealthArchiveCount() {
//        Envelop envelop = new Envelop();
//        String url = "/resource/center/getHealthArchiveCount";
//        try {
//            String resultStr = HttpClientUtil.doGet(comUrl + url, username, password);
//            envelop = toModel(resultStr, Envelop.class);
//            return envelop;
//        }catch (Exception e) {
//            e.printStackTrace();
//            envelop.setSuccessFlg(false);
//            envelop.setErrorMsg(e.getMessage());
//        }
//        return envelop;
//    }
//
//    /**
//     * 顶部栏 - 电子病例建档数
//     * @return
//     */
//    @ResponseBody
//    @RequestMapping("/getElectronicCasesCount")
//    public Envelop getElectronicCasesCount() {
//        Envelop envelop = new Envelop();
//        String url = "/resource/center/getElectronicCasesCount";
//        try {
//            String resultStr = HttpClientUtil.doGet(comUrl + url, username, password);
//            envelop = toModel(resultStr, Envelop.class);
//            return envelop;
//        }catch (Exception e) {
//            e.printStackTrace();
//            envelop.setSuccessFlg(false);
//            envelop.setErrorMsg(e.getMessage());
//        }
//        return envelop;
//    }
//
//    /**
//     * 全员人口个案库 - 健康卡绑定量
//     * @return
//     */
//    @ResponseBody
//    @RequestMapping("/getHealthCardBindingAmount")
//    public Envelop getHealthCardBindingAmount() {
//        Envelop envelop = new Envelop();
//        String url = "/resource/center/getHealthCardBindingAmount";
//        try {
//            String resultStr = HttpClientUtil.doGet(comUrl + url, username, password);
//            envelop = toModel(resultStr, Envelop.class);
//            return envelop;
//        }catch (Exception e) {
//            e.printStackTrace();
//            envelop.setSuccessFlg(false);
//            envelop.setErrorMsg(e.getMessage());
//        }
//        return envelop;
//    }
//
//    /**
//     * 全员人口个案库 - 信息分布
//     * @return
//     */
//    @ResponseBody
//    @RequestMapping("/getInfoDistribution")
//    public Envelop getInfoDistribution() {
//        Envelop envelop = new Envelop();
//        String url = "/resource/center/getInfoDistribution";
//        try {
//            String resultStr = HttpClientUtil.doGet(comUrl + url, username, password);
//            envelop = toModel(resultStr, Envelop.class);
//            return envelop;
//        }catch (Exception e) {
//            e.printStackTrace();
//            envelop.setSuccessFlg(false);
//            envelop.setErrorMsg(e.getMessage());
//        }
//        return envelop;
//    }
//
//    /**
//     * 全员人口个案库 - 新增情况
//     * @return
//     */
//    @ResponseBody
//    @RequestMapping("/getNewSituation")
//    public Envelop getNewSituation() {
//        Envelop envelop = new Envelop();
//        String url = "/resource/center/getNewSituation";
//        try {
//            String resultStr = HttpClientUtil.doGet(comUrl + url, username, password);
//            envelop = toModel(resultStr, Envelop.class);
//            return envelop;
//        }catch (Exception e) {
//            e.printStackTrace();
//            envelop.setSuccessFlg(false);
//            envelop.setErrorMsg(e.getMessage());
//        }
//        return envelop;
//    }
//
//    /**
//     * 医疗资源库 - 医疗机构建档分布
//     * @return
//     */
//    @ResponseBody
//    @RequestMapping("/getOrgArchives")
//    public Envelop getOrgArchives() {
//        Envelop envelop = new Envelop();
//        String url = "/resource/center/getOrgArchives";
//        try {
//            String resultStr = HttpClientUtil.doGet(comUrl + url, username, password);
//            envelop = toModel(resultStr, Envelop.class);
//            return envelop;
//        }catch (Exception e) {
//            e.printStackTrace();
//            envelop.setSuccessFlg(false);
//            envelop.setErrorMsg(e.getMessage());
//        }
//        return envelop;
//    }
//
//    /**
//     * 医疗资源库 - 医疗人员分布
//     * @return
//     */
//    @ResponseBody
//    @RequestMapping("/getMedicalStaffDistribution")
//    public Envelop getMedicalStaffDistribution() {
//        Envelop envelop = new Envelop();
//        String url = "/resource/center/getMedicalStaffDistribution";
//        try {
//            String resultStr = HttpClientUtil.doGet(comUrl + url, username, password);
//            envelop = toModel(resultStr, Envelop.class);
//            return envelop;
//        }catch (Exception e) {
//            e.printStackTrace();
//            envelop.setSuccessFlg(false);
//            envelop.setErrorMsg(e.getMessage());
//        }
//        return envelop;
//    }
//
//    /**
//     * 医疗资源库 - 医护人员比例
//     * @return
//     */
//    @ResponseBody
//    @RequestMapping("/getMedicalStaffRatio")
//    public Envelop getMedicalStaffRatio() {
//        Envelop envelop = new Envelop();
//        String url = "/resource/center/getMedicalStaffRatio";
//        try {
//            String resultStr = HttpClientUtil.doGet(comUrl + url, username, password);
//            envelop = toModel(resultStr, Envelop.class);
//            return envelop;
//        }catch (Exception e) {
//            e.printStackTrace();
//            envelop.setSuccessFlg(false);
//            envelop.setErrorMsg(e.getMessage());
//        }
//        return envelop;
//    }
//
//    /**
//     * 健康档案 - 累计整合档案数
//     * @return
//     */
//    @ResponseBody
//    @RequestMapping("/getCumulativeIntegration")
//    public Envelop getCumulativeIntegration() {
//        Envelop envelop = new Envelop();
//        String url = "/resource/center/getCumulativeIntegration";
//        try {
//            String resultStr = HttpClientUtil.doGet(comUrl + url, username, password);
//            envelop = toModel(resultStr, Envelop.class);
//            return envelop;
//        }catch (Exception e) {
//            e.printStackTrace();
//            envelop.setSuccessFlg(false);
//            envelop.setErrorMsg(e.getMessage());
//        }
//        return envelop;
//    }
//
//    /**
//     * 健康档案 - 累计待整合档案数
//     * @return
//     */
//    @ResponseBody
//    @RequestMapping("/gteTotallyToBeIntegrated")
//    public Envelop gteTotallyToBeIntegrated() {
//        Envelop envelop = new Envelop();
//        String url = "/resource/center/gteTotallyToBeIntegrated";
//        try {
//            String resultStr = HttpClientUtil.doGet(comUrl + url, username, password);
//            envelop = toModel(resultStr, Envelop.class);
//            return envelop;
//        }catch (Exception e) {
//            e.printStackTrace();
//            envelop.setSuccessFlg(false);
//            envelop.setErrorMsg(e.getMessage());
//        }
//        return envelop;
//    }
//
//    /**
//     * 健康档案 - 档案来源分布情况
//     * @return
//     */
//    @ResponseBody
//    @RequestMapping("/getArchiveSource")
//    public Envelop getArchiveSource() {
//        Envelop envelop = new Envelop();
//        String url = "/resource/center/getArchiveSource";
//        try {
//            String resultStr = HttpClientUtil.doGet(comUrl + url, username, password);
//            envelop = toModel(resultStr, Envelop.class);
//            return envelop;
//        }catch (Exception e) {
//            e.printStackTrace();
//            envelop.setSuccessFlg(false);
//            envelop.setErrorMsg(e.getMessage());
//        }
//        return envelop;
//    }
//
//    /**
//     * 健康档案 - 健康档案分布情况
//     * @return
//     */
//    @ResponseBody
//    @RequestMapping("/getArchiveDistribution")
//    public Envelop getArchiveDistribution() {
//        Envelop envelop = new Envelop();
//        String url = "/resource/center/getArchiveDistribution";
//        try {
//            String resultStr = HttpClientUtil.doGet(comUrl + url, username, password);
//            envelop = toModel(resultStr, Envelop.class);
//            return envelop;
//        }catch (Exception e) {
//            e.printStackTrace();
//            envelop.setSuccessFlg(false);
//            envelop.setErrorMsg(e.getMessage());
//        }
//        return envelop;
//    }
//
//    /**
//     * 健康档案 - 健康档案入库情况分析
//     * @return
//     */
//    @ResponseBody
//    @RequestMapping("/getStorageAnalysis")
//    public Envelop getStorageAnalysis() {
//        Envelop envelop = new Envelop();
//        String url = "/resource/center/getStorageAnalysis";
//        try {
//            String resultStr = HttpClientUtil.doGet(comUrl + url, username, password);
//            envelop = toModel(resultStr, Envelop.class);
//            return envelop;
//        }catch (Exception e) {
//            e.printStackTrace();
//            envelop.setSuccessFlg(false);
//            envelop.setErrorMsg(e.getMessage());
//        }
//        return envelop;
//    }
//
//    /**
//     * 电子病例 - 电子病例来源分布情况
//     * @return
//     */
//    @ResponseBody
//    @RequestMapping("/getElectronicMedicalSource")
//    public Envelop getElectronicMedicalSource() {
//        Envelop envelop = new Envelop();
//        String url = "/resource/center/getElectronicMedicalSource";
//        try {
//            String resultStr = HttpClientUtil.doGet(comUrl + url, username, password);
//            envelop = toModel(resultStr, Envelop.class);
//            return envelop;
//        }catch (Exception e) {
//            e.printStackTrace();
//            envelop.setSuccessFlg(false);
//            envelop.setErrorMsg(e.getMessage());
//        }
//        return envelop;
//    }
//
//    /**
//     * 电子病例 - 电子病历采集医院分布
//     * @return
//     */
//    @ResponseBody
//    @RequestMapping("/getElectronicMedicalOrgDistributed")
//    public Envelop getElectronicMedicalOrgDistributed() {
//        Envelop envelop = new Envelop();
//        String url = "/resource/center/getElectronicMedicalOrgDistributed";
//        try {
//            String resultStr = HttpClientUtil.doGet(comUrl + url, username, password);
//            envelop = toModel(resultStr, Envelop.class);
//            return envelop;
//        }catch (Exception e) {
//            e.printStackTrace();
//            envelop.setSuccessFlg(false);
//            envelop.setErrorMsg(e.getMessage());
//        }
//        return envelop;
//    }
//
//    /**
//     * 电子病例 - 电子病历采集科室分布
//     * @return
//     */
//    @ResponseBody
//    @RequestMapping("/getElectronicMedicalDeptDistributed")
//    public Envelop getElectronicMedicalDeptDistributed() {
//        Envelop envelop = new Envelop();
//        String url = "/resource/center/getElectronicMedicalDeptDistributed";
//        try {
//            String resultStr = HttpClientUtil.doGet(comUrl + url, username, password);
//            envelop = toModel(resultStr, Envelop.class);
//            return envelop;
//        }catch (Exception e) {
//            e.printStackTrace();
//            envelop.setSuccessFlg(false);
//            envelop.setErrorMsg(e.getMessage());
//        }
//        return envelop;
//    }
//
//    /**
//     * 电子病例 - 电子病历采集采集情况
//     * @return
//     */
//    @ResponseBody
//    @RequestMapping("/getElectronicMedicalAcquisitionSituation")
//    public Envelop getElectronicMedicalAcquisitionSituation() {
//        Envelop envelop = new Envelop();
//        String url = "/resource/center/getElectronicMedicalAcquisitionSituation";
//        try {
//            String resultStr = HttpClientUtil.doGet(comUrl + url, username, password);
//            envelop = toModel(resultStr, Envelop.class);
//            return envelop;
//        } catch (Exception e) {
//            e.printStackTrace();
//            envelop.setSuccessFlg(false);
//            envelop.setErrorMsg(e.getMessage());
//        }
//        return envelop;
//    }
//    // ------------------------------- 统计相关 end ------------------------------------
//
//    // ------------------------------- 大数据展示相关 start ------------------------------------
//    /**
//     * 成果展示
//     * @return
//     */
//    @ResponseBody
//    @RequestMapping("/achievements")
//    public Envelop achievements() {
//        Envelop envelop = new Envelop();
//        String url = "/resource/api/v1.0/resource/center/achievements";
//        try {
//            String resultStr = HttpClientUtil.doGet(adminInnerUrl + url, username, password);
//            envelop = toModel(resultStr, Envelop.class);
//            return envelop;
//        } catch (Exception e) {
//            e.printStackTrace();
//            envelop.setSuccessFlg(false);
//            envelop.setErrorMsg(e.getMessage());
//        }
//        return envelop;
//    }
//
//    /**
//     * 可视化
//     * @return
//     */
//    @ResponseBody
//    @RequestMapping("/visualization")
//    public Envelop visualization() {
//        Envelop envelop = new Envelop();
//        String url = "/resource/api/v1.0/resource/center/visualization";
//        try {
//            String resultStr = HttpClientUtil.doGet(adminInnerUrl + url, username, password);
//            envelop = toModel(resultStr, Envelop.class);
//            return envelop;
//        } catch (Exception e) {
//            e.printStackTrace();
//            envelop.setSuccessFlg(false);
//            envelop.setErrorMsg(e.getMessage());
//        }
//        return envelop;
//    }
//
//    /**
//     * 数据分析
//     * @return
//     */
//    @ResponseBody
//    @RequestMapping("/dataAnalysis")
//    public Envelop dataAnalysis() {
//        Envelop envelop = new Envelop();
//        String url = "/resource/api/v1.0/resource/center/dataAnalysis";
//        try {
//            String resultStr = HttpClientUtil.doGet(adminInnerUrl + url, username, password);
//            envelop = toModel(resultStr, Envelop.class);
//            return envelop;
//        } catch (Exception e) {
//            e.printStackTrace();
//            envelop.setSuccessFlg(false);
//            envelop.setErrorMsg(e.getMessage());
//        }
//        return envelop;
//    }
//
//    /**
//     * 分级管理
//     * @return
//     */
//    @ResponseBody
//    @RequestMapping("/hierarchicalManagement")
//    public Envelop hierarchicalManagement() {
//        String url = "/resource/api/v1.0/resource/center/hierarchicalManagement";
//        try {
//            String resultStr = HttpClientUtil.doGet(adminInnerUrl + url, username, password);
//            Envelop envelop = toModel(resultStr, Envelop.class);
//            return envelop;
//        } catch (Exception e) {
//            return failed(e.getMessage());
//        }
//    }
//
//    // ------------------------------- 大数据展示相关 end ------------------------------------
//
//}

+ 144 - 0
svr/svr-basic/src/main/java/com/yihu/jw/basic/agadmin/controller/resource/ResourceConfigurationController.java

@ -0,0 +1,144 @@
package com.yihu.jw.basic.agadmin.controller.resource;
import com.yihu.jw.basic.resource.service.RsMetadataService;
import com.yihu.jw.basic.resource.service.RsResourceMetadataService;
import com.yihu.jw.entity.ehr.id.BizObject;
import com.yihu.jw.entity.ehr.resource.RsMetadata;
import com.yihu.jw.entity.ehr.resource.RsResourceMetadata;
import com.yihu.jw.restmodel.ehr.resource.MRsMetadata;
import com.yihu.jw.restmodel.ehr.resource.MRsResourceMetadata;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.PageEnvelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import com.yihu.jw.util.http.HttpClientUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.domain.Page;
import org.springframework.ui.Model;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import java.util.*;
/**
 * 资源配置服务控制器
 * Created by wq on 2016/5/23.
 */
@RestController
@RequestMapping("/resourceConfiguration")
public class ResourceConfigurationController extends EnvelopRestEndpoint {
    @Autowired
    private RsResourceMetadataService rsMetadataService;
    @Autowired
    private RsMetadataService metadataService;
    @RequestMapping("searchResourceConfiguration")
    public Object searchResourceConfiguration(String searchNm, int page, int rows) {
        Map<String, Object> params = new HashMap<>();
        String metaDataUrl = "/resources/metadata";
        String resultStr = "";
        params.put("filters", "");
        String filters ="valid=1";
        if (!StringUtils.isEmpty(searchNm)){
            filters += ";name?" + searchNm + " g1;id?" + searchNm + " g1";
        }
        params.put("filters",filters);
        params.put("page", page);
        params.put("size", rows);
        params.put("fields", "");
        params.put("sorts", "");
        try {
            long total = 0;
            List<MRsMetadata> metaList;
            //过滤条件为空
            if(StringUtils.isEmpty(filters))
            {
                Page<RsMetadata> metadataPage = metadataService.getMetadata(null,reducePage(page),rows);
                total = metadataPage.getTotalElements();
                return PageEnvelop.getSuccessListWithPage("查询成功",metadataPage.toList(),page,rows,total);
            }
            else
            {
                List<RsMetadata> metadata = metadataService.search(null,filters,null,page,rows);
                total = metadataService.getCount(filters);
                return PageEnvelop.getSuccessListWithPage("查询成功",metadata,page,rows,total);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return failed("查询失败");
    }
    @RequestMapping("searchSelResourceConfiguration")
    public Object searchSelResourceConfiguration(String searchNm, String resourcesId, int page, int rows) {
        Map<String, Object> params = new HashMap<>();
        String ResourceMetadataUrl = "/resources/rs_metadata";
        String selResourceMetadataListUrl = "/resources/" + resourcesId + "/metadata_list";
        String resultStr = "";
        try {
            if (searchNm.equals("selAll")) {
//                resultStr = HttpClientUtil.doGet(comUrl + selResourceMetadataListUrl, params, username, password);
            } else {
                String filters = "";
                params.put("filters", "");
                if (!StringUtils.isEmpty(searchNm)) {
                    filters = "name?" + searchNm + " g1;id?" + searchNm + " g1";
                }
                params.put("resources_id", "");
                if (!StringUtils.isEmpty(resourcesId)) {
                    params.put("resources_id", resourcesId);
                }
                params.put("page", page);
                params.put("size", rows);
                params.put("fields", "");
                params.put("sorts", "");
                long total = 0;
                //过滤条件为空
                if (StringUtils.isEmpty(filters)) {
                    Page<RsResourceMetadata> dimensions = rsMetadataService.getResourceMetadata(null, reducePage(page), rows);
                    total = dimensions.getTotalElements();
                    return PageEnvelop.getSuccessListWithPage("查询成功",dimensions.toList(),page,rows,total);
                } else {
                    List<RsResourceMetadata> dimensions = rsMetadataService.search(null, filters, null, page, rows);
                    total = rsMetadataService.getCount(filters);
                    return PageEnvelop.getSuccessListWithPage("查询成功",dimensions,page,rows,total);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return resultStr;
    }
    @RequestMapping("/saveResourcConfiguration")
    public Envelop saveResourceConfiguration(String addRowDatas, String delRowDatas) {
        Map<String, Object> params = new HashMap<>();
        String resultStr = "";
        String metaDataUrl = "/resources/rs_metadata/batch";
        try {
            if (!StringUtils.isEmpty(delRowDatas)) {
                //执行删除操作
                rsMetadataService.delete(delRowDatas);
                return success("删除成功");
            }
            if (!StringUtils.isEmpty(addRowDatas)) {
                //执行新增操作
                RsResourceMetadata[] rsMetadata = toEntity(addRowDatas, RsResourceMetadata[].class);
                for (RsResourceMetadata metadata : rsMetadata) {
                    metadata.setId(getObjectId(BizObject.ResourceMetadata));
                }
                List<RsResourceMetadata> metadataList = rsMetadataService.saveMetadataBatch(rsMetadata);
                return success("新增成功");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return failed("操作失败");
    }
}

+ 144 - 0
svr/svr-basic/src/main/java/com/yihu/jw/basic/agadmin/controller/resource/ResourceDefaultParamController.java

@ -0,0 +1,144 @@
package com.yihu.jw.basic.agadmin.controller.resource;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.ehr.constants.ServiceApi;
import com.yihu.jw.basic.resource.dao.RsResourceDefaultParamDao;
import com.yihu.jw.basic.resource.service.RsResourceDefaultParamService;
import com.yihu.jw.entity.ehr.resource.RsResourceDefaultParam;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.ListEnvelop;
import com.yihu.jw.restmodel.web.ObjEnvelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import com.yihu.jw.util.common.LogService;
import com.yihu.jw.util.http.HttpClientUtil;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * Created by yww on 2016/7/20.
 */
@RestController
@RequestMapping("/resource/rsDefaultParam")
public class ResourceDefaultParamController extends EnvelopRestEndpoint {
    @Autowired
    private RsResourceDefaultParamService resourceDefaultParamService;
    @Autowired
    private RsResourceDefaultParamDao resourceDefaultParamDao;
    @RequestMapping("/infoInitial")
    public Envelop rsDefaultParamInfoInitial(String id,String resourcesId,String resourcesCode,String mode,String rowIndex){
        Envelop envelop = new Envelop();
        try {
            if(StringUtils.equals(mode,"new")){
                return success();
            }
            String url = "/resources/param/"+id;
            RsResourceDefaultParam resourceDefaultParam = resourceDefaultParamService.findById(id);
            return ObjEnvelop.getSuccess("",resourceDefaultParam);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return failed("查询失败");
    }
    //新增、修改
    @RequestMapping("/update")
    public Envelop addOrUpdate(String dataJson,String mode){
        if(StringUtils.isEmpty(mode)){
            return failed("操作类别不能为空!");
        }
        if(StringUtils.isEmpty(dataJson)){
            return failed("空数据!");
        }
        try{
            RsResourceDefaultParam model = toEntity(dataJson, RsResourceDefaultParam.class);
            if(StringUtils.isEmpty(model.getResourcesId())){
                return failed("资源id不能为空!");
            }
            if(StringUtils.isEmpty(model.getResourcesCode())){
                return failed("资源编码不能为空!");
            }
            if(StringUtils.isEmpty(model.getParamKey())){
                return failed("默认参数名不能为空!");
            }
            if(StringUtils.isEmpty(model.getParamValue())){
                return failed("默认参数值不能为空!");
            }
            String url = ServiceApi.Resources.Param;
            Map<String,Object> params = new HashMap<>();
            params.put("json_data",dataJson);
            if(StringUtils.equalsIgnoreCase(mode,"new")){
                RsResourceDefaultParam resourceDefaultParamNew = resourceDefaultParamService.save(model);
                return ObjEnvelop.getSuccess("新增成功",resourceDefaultParamNew);
            }
            RsResourceDefaultParam resourceDefaultParamNew = resourceDefaultParamService.save(model);
            return ObjEnvelop.getSuccess("操作成功",resourceDefaultParamNew);
        }catch (Exception ex){
            ex.printStackTrace();
            return failed(ERR_SYSTEM_DES);
        }
    }
    //删除
    @RequestMapping("/delete")
    public Envelop delete(String id){
        try{
            if(id == null){
                return failed("id不能为空!");
            }
            resourceDefaultParamDao.deleteById(id);
            return success();
        }catch (Exception ex){
            ex.printStackTrace();
            return failed(ERR_SYSTEM_DES);
        }
    }
    //查看不分页
    @RequestMapping("/searchList")
    public Envelop searchList(String resourcesId){
        try{
            if(StringUtils.isEmpty(resourcesId)){
                return failed("资源id不能为空!");
            }
            String filters = "resourcesId="+resourcesId;
            String url = ServiceApi.Resources.ParamsNoPage;
            List<RsResourceDefaultParam> rsDefaultParams = resourceDefaultParamService.search(filters);
            return ListEnvelop.getSuccess("查询成功",rsDefaultParams);
        }catch (Exception ex){
            ex.printStackTrace();
            return failed(ERR_SYSTEM_DES);
        }
    }
    //参数值唯一性验证
    @RequestMapping("/isKeyValueExistence")
    public Envelop isExistenceRsParamKeyValue(String resourcesId,String paramKey,String paramValue){
        try{
            String url = ServiceApi.Resources.ParamKeyValueExistence;
            Map<String,Object> params = new HashMap<>();
            params.put("resources_id",resourcesId);
            params.put("param_key",paramKey);
            params.put("param_value",paramValue);
            String[] fields = {"resourcesId","paramKey","paramValue"};
            String[] values = {resourcesId,paramKey,paramValue};
            List<RsResourceDefaultParam> list = resourceDefaultParamService.findByFields(fields, values);
            if(list != null && list.size()>0){
                return ObjEnvelop.getSuccess("查询成功",true);
            }
            return ObjEnvelop.getSuccess("查询成功",false);
        }catch (Exception ex){
            ex.printStackTrace();
            return failed(ERR_SYSTEM_DES);
        }
    }
}

+ 697 - 0
svr/svr-basic/src/main/java/com/yihu/jw/basic/agadmin/controller/resource/ResourceIntegratedController.java

@ -0,0 +1,697 @@
package com.yihu.jw.basic.agadmin.controller.resource;
import com.yihu.jw.basic.resource.service.ResourceIntegratedService;
import com.yihu.jw.basic.resource.service.RsResourceDefaultParamService;
import com.yihu.jw.basic.resource.service.RsResourceService;
import com.yihu.jw.entity.ehr.id.BizObject;
import com.yihu.jw.entity.ehr.resource.RsResource;
import com.yihu.jw.entity.ehr.resource.RsResourceDefaultParam;
import com.yihu.jw.entity.ehr.resource.RsResourceMetadata;
import com.yihu.jw.entity.ehr.resource.RsResourceQuota;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.ListEnvelop;
import com.yihu.jw.restmodel.web.PageEnvelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import com.yihu.jw.util.common.NumberUtil;
import com.yihu.jw.util.http.HttpClientUtil;
import com.yihu.jw.util.network.HttpResponse;
import com.yihu.jw.util.network.HttpUtils;
import jxl.Cell;
import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.io.OutputStream;
import java.util.*;
/**
 * Controller - 资源综合查询服务控制器
 * Created by Progr1mmer on 2017/08/01.
 */
@RestController
@RequestMapping("/resourceIntegrated")
public class ResourceIntegratedController extends EnvelopRestEndpoint {
    private static final Logger logger = LoggerFactory.getLogger(ResourceIntegratedController.class);
    private static final Integer SINGLE_REQUEST_SIZE = 5000; //导出Excel时的单次请求量
    private static final Integer SINGLE_EXCEL_SIZE = 50000; //导出Excel时的单个文件数据量
    @Autowired
    private ResourceIntegratedService resourcesIntegratedService;
    @Autowired
    private RsResourceService rsService;
    @Autowired
    private RsResourceDefaultParamService resourceDefaultParamService;
    @Autowired
    private RsResourceService rsResourceService;
    /**
     * 综合查询档案数据列表树 zuul
     * @param filters
     * @return
     */
    @RequestMapping("/getMetadataList")
    public Envelop getMetadataList(String filters, HttpServletRequest request) throws Exception {
        String url = "/resource/api/v1.0/resources/integrated/metadata_list";
        //标准分类
        List list = resourcesIntegratedService.getMetadataList("*", "*", "standard", filters);
        return ListEnvelop.getSuccess("查询成功",list);
    }
    /**
     * 综合查询档案数据分类列表 zuul
     * @param filters
     * @return
     */
    /**
     *
     * @return
     * @throws Exception
     */
    @RequestMapping("/category")
    public Envelop getCategory() throws Exception {
        String url = "/resource/api/v1.0/resources/integrated/category";
        Map<String, Object> params = new HashMap<>();
        //标准分类
        params.put("categoryCode", "standard");
        List<Map<String, Object>> list = resourcesIntegratedService.intCategory("standard");
        return ListEnvelop.getSuccess("查询成功",list);
    }
    /**
     * 综合查询档案数据资源列表 zuul
     * @param filters
     * @return
     */
    @RequestMapping("/metadata")
    public Envelop getMetadataList(String categoryId, String filters, HttpServletRequest request) throws Exception {
        String url = "/resource/api/v1.0/resources/integrated/metadata";
        //标准分类
        List<Map<String, Object>> list = resourcesIntegratedService.intMetadata(categoryId, "*", "*", "standard", filters);
        return ListEnvelop.getSuccess("查询成功",list);
    }
    /**
     * 综合查询档案数据检索 zuul
     * @param resourcesCode
     * @param metaData
     * @param searchParams
     * @param page
     * @param rows
     * @param request
     * @return
     */
//    @RequestMapping("/searchMetadataData")
//    public Envelop searchMetadataData(String resourcesCode, String metaData, String searchParams, int page, int rows, HttpServletRequest request) throws Exception {
//        Envelop envelop = new Envelop();
//        String url = "/resource/api/v1.0/resources/integrated/metadata_data";
//        if (resourcesCode == null || resourcesCode.equals("")) {
//            envelop.setSuccessFlg(false);
//            envelop.setErrorMsg("资源编码不能为空");
//            return envelop;
//        }
//        Map<String, Object> params = new HashMap<>();
//        params.put("resourcesCode", resourcesCode);
//        params.put("metaData", metaData);
//        params.put("orgCode", "*");
//        params.put("areaCode", "*");
//        params.put("queryCondition", searchParams);
//        params.put("page", page);
//        params.put("size", rows);
//        HttpResponse response = HttpUtils.doGet(adminInnerUrl + url, params);
//        if (response.isSuccessFlg()) {
//            envelop = toModel(response.getContent(), Envelop.class);
//            if (envelop.isSuccessFlg()) {
//                List<Map<String, Object>> envelopList = envelop.getDetailModelList();
//                List<Map<String, Object>> middleList = new ArrayList<Map<String, Object>>();
//                for (Map<String, Object> envelopMap : envelopList) {
//                    Map<String, Object> resultMap = new HashMap<String, Object>();
//                    for (String key : envelopMap.keySet()) {
//                        String value = envelopMap.get(key) == null? "" : String.valueOf(envelopMap.get(key));
//                        if (key.equals("event_type")) {
//                            String eventType = envelopMap.get(key).toString();
//                            if (eventType.equals("0")) {
//                                resultMap.put(key, "门诊");
//                            } else if (eventType.equals("1")) {
//                                resultMap.put(key, "住院");
//                            } else if (eventType.equals("2")) {
//                                resultMap.put(key, "体检");
//                            } else {
//                                resultMap.put(key, "未知");
//                            }
//                        } else if (value.contains("T") && value.contains("Z")) {
//                            String newDateStr = value.replace("T", " ").replace("Z", "");
//                            resultMap.put(key, newDateStr);
//                        } else {
//                            resultMap.put(key, value);
//                        }
//                    }
//                    middleList.add(resultMap);
//                }
//                List<Map<String, Object>> finalList = changeIdCardNo(middleList, request);
//                envelop.setDetailModelList(finalList);
//                envelop.setSuccessFlg(true);
//                return envelop;
//            }
//            return envelop;
//        }
//        return toModel(response.getContent(), Envelop.class);
//    }
    /**
     * 综合查询指标统计列表树 zuul
     * @param filters
     * @return
     */
    @RequestMapping("/getQuotaList")
    public Envelop getQuotaList(String filters) throws Exception {
        String url = "/resource/api/v1.0/resources/integrated/quota_list";
        List<Map<String, Object>> list = resourcesIntegratedService.getQuotaList(filters);
        return ListEnvelop.getSuccess("查询成功",list);
    }
    /**
     * 综合查询指标统计数据检索
     * @param tjQuotaIds
     * @param tjQuotaCodes
     * @param searchParams
     * @return
     */
//    @RequestMapping("/searchQuotaData")
//    public Envelop searchQuotaData(String tjQuotaIds, String tjQuotaCodes, String searchParams,HttpServletRequest request) throws Exception {
//        String url = "/resources/integrated/quota_data";
//        Map<String, Object> params = new HashMap<String, Object>();
//        params.put("quotaIds", tjQuotaIds);
//        params.put("quotaCodes", tjQuotaCodes);
//        params.put("queryCondition", searchParams);
//        List<String> userOrgList  = getUserOrgSaasListRedis(request);
//        params.put("userOrgList", userOrgList);
//        String resultStr = HttpClientUtil.doGet(comUrl + url, params, username, password);
//        Envelop envelop = toModel(resultStr, Envelop.class);
//        return envelop;
//    }
//
//    /**
//     * 综合查询指标统计数据检索条件
//     * @param tjQuotaCodes
//     * @return
//     */
//    @RequestMapping("/searchQuotaParam")
//    public Envelop searchQuotaDataParam(String tjQuotaCodes) throws Exception {
//        String url = "/resources/integrated/quota_param";
//        Map<String, Object> params = new HashMap<String, Object>();
//        params.put("quotaCodes", tjQuotaCodes);
//        String resultStr = HttpClientUtil.doGet(comUrl + url, params, username, password);
//        Envelop envelop = toModel(resultStr, Envelop.class);
//        return envelop;
//    }
    /**
     * 综合查询视图保存 zuul
     * @param dataJson
     * @return
     */
    @RequestMapping(value = "/updateResource", method = RequestMethod.POST)
    public Envelop updateResource(String dataJson, HttpServletRequest request) throws Exception {
        Map<String, Object> params = new HashMap<>();
        String url = "/resource/api/v1.0/resources/integrated/resource_update";
        HttpSession session = request.getSession();
        // 转换参数
        Map<String, Object> dataMap = objectMapper.readValue(dataJson, Map.class);
        // 获取资源字符串
        String resource = objectMapper.writeValueAsString(dataMap.get("resource"));
        // 获取资源Map映射
        Map<String, Object> rsObj = objectMapper.readValue(resource, Map.class);
        // 设置创建者
        rsObj.put("creator", session.getAttribute("userId"));
        // 更新参数
        dataMap.put("resource", rsObj);
        // 设置请求参数
        params.put("dataJson", objectMapper.writeValueAsString(dataMap));
        RsResource newResources;
        Map<String, Object> paraMap = objectMapper.readValue(dataJson, Map.class);
        if (!paraMap.containsKey("resource")) {
            return failed("resource不能为空");
        }
        //处理资源视图
        RsResource rsResources = toEntity(resource, RsResource.class);
        if (rsService.findByField("name", rsResources.getName()).size() > 0) {
            return failed("资源名称重复");
        }
        if (rsService.getResourceByCode(rsResources.getCode()) != null) {
            return failed("资源编码重复");
        }
        /**
         * 资源ID
         */
        String reId = getObjectId(BizObject.Resources);
        rsResources.setId(reId);
        /**
         * 根据资源数据类型保存相关数据元和搜索条件
         */
        if (rsResources.getDataSource() == 1) { //档案数据
            //处理关联档案数据元
            if (!paraMap.containsKey("metadatas")) {
                return failed("档案数据元不能为空");
            }
            String rsMetadatasStr = objectMapper.writeValueAsString(paraMap.get("metadatas"));
            RsResourceMetadata[] rsMetadatas = toEntity(rsMetadatasStr, RsResourceMetadata[].class);
            if (rsMetadatas == null || rsMetadatas.length <= 0) {
                //档案数据元为空,删除资源
                return failed("档案数据元不能为空");
            }
            for (RsResourceMetadata rsMetadata : rsMetadatas) {
                rsMetadata.setResourcesId(reId);
                rsMetadata.setId(getObjectId(BizObject.ResourceMetadata));
            }
            //处理默认搜索条件
            RsResourceDefaultParam rsResourceDefaultParam = null;
            if (paraMap.get("queryCondition") != null) {
                List<Map<String, String>> queryList = (List<Map<String, String>>) paraMap.get("queryCondition");
                if (!queryList.isEmpty()) {
                    String queryCondition = objectMapper.writeValueAsString(queryList);
                    rsResourceDefaultParam = new RsResourceDefaultParam();
                    rsResourceDefaultParam.setResourcesId(reId);
                    rsResourceDefaultParam.setResourcesCode(rsResources.getCode());
                    rsResourceDefaultParam.setParamKey("q");
                    rsResourceDefaultParam.setParamValue(queryCondition);
                }
            }
            newResources = resourcesIntegratedService.profileCompleteSave(rsResources, Arrays.asList(rsMetadatas), rsResourceDefaultParam);
            return success(newResources.getId());
        } else if (rsResources.getDataSource() == 2) { //统计指标
            //处理关联指标数据元
            if (!paraMap.containsKey("quotas")) {
                return failed("指标数据元不能为空");
            }
            String rsQuotasStr = objectMapper.writeValueAsString(paraMap.get("quotas"));
            RsResourceQuota[] rsQuotas = toEntity(rsQuotasStr, RsResourceQuota[].class);
            if (rsQuotas == null || rsQuotas.length <= 0) {
                return failed("指标数据元不能为空");
            }
            for (RsResourceQuota resourceQuota : rsQuotas) {
                resourceQuota.setResourceId(reId);
            }
            //处理默认搜索条件
            RsResourceDefaultParam rsResourceDefaultParam = null;
            if (paraMap.get("queryCondition") != null) {
                Map<String, Object> queryMap = (Map<String, Object>) paraMap.get("queryCondition");
                if (!queryMap.isEmpty()) {
                    String queryCondition = objectMapper.writeValueAsString(queryMap);
                    rsResourceDefaultParam = new RsResourceDefaultParam();
                    rsResourceDefaultParam.setResourcesId(reId);
                    rsResourceDefaultParam.setResourcesCode(rsResources.getCode());
                    rsResourceDefaultParam.setParamKey("q");
                    rsResourceDefaultParam.setParamValue(queryCondition);
                }
            }
            newResources = resourcesIntegratedService.quotaCompleteSave(rsResources, Arrays.asList(rsQuotas), rsResourceDefaultParam);
            return success(newResources.getId());
        } else {
            return failed("资源类型有误");
        }
    }
    /**
     * 综合查询搜索条件更新 zuul
     * @param dataJson
     * @return
     */
    @RequestMapping(value = "/updateResourceQuery", method = RequestMethod.POST)
    public Envelop updateResourceQuery(String dataJson) throws Exception {
        Map<String, Object> paraMap = objectMapper.readValue(dataJson, Map.class);
        if (!paraMap.containsKey("resourceId") || !paraMap.containsKey("queryCondition")) {
            return failed("参数不完整,缺少resourceId或者queryCondition");
        }
        String resourceId = (String) paraMap.get("resourceId");
        RsResource rsResources = rsService.getResourceById(resourceId);
        if (rsResources != null) {
            RsResourceDefaultParam rsResourceDefaultParam = null;
            String queryCondition = (String) paraMap.get("queryCondition");
            if (rsResources.getDataSource() == 1) {
                if (!queryCondition.equals("[]")) {
                    rsResourceDefaultParam = new RsResourceDefaultParam();
                    rsResourceDefaultParam.setResourcesId(rsResources.getId());
                    rsResourceDefaultParam.setResourcesCode(rsResources.getCode());
                    rsResourceDefaultParam.setParamKey("q");
                    rsResourceDefaultParam.setParamValue(queryCondition);
                }
            } else {
                if (!queryCondition.equals("{}")) {
                    rsResourceDefaultParam = new RsResourceDefaultParam();
                    rsResourceDefaultParam.setResourcesId(rsResources.getId());
                    rsResourceDefaultParam.setResourcesCode(rsResources.getCode());
                    rsResourceDefaultParam.setParamKey("q");
                    rsResourceDefaultParam.setParamValue(queryCondition);
                }
            }
            if (rsResourceDefaultParam != null) {
                RsResourceDefaultParam resourceDefaultParam = resourceDefaultParamService.saveWithDel(rsResourceDefaultParam);
                return success(resourceDefaultParam);
            }
            return failed("条件不能为空");
        } else {
            return failed("资源不存在");
        }
    }
    /**
     *  获取视图列表(不区分数据源)
     *
     * @param page
     * @param size
     * @param request
     * @return
     */
    @RequestMapping("/getResourceList")
    public Envelop getResourceList(int page, int size, HttpServletRequest request) throws Exception {
        String url = "/resources/page";
        //从Session中获取用户的角色和和授权视图列表作为查询参数
        HttpSession session = request.getSession();
        Map<String, Object> params = new HashMap<>();
        String userId = session.getAttribute("userId").toString();
        params.put("page", page);
        params.put("size", size);
        params.put("userId", userId);
        List<RsResource> resultList = rsResourceService.getResourcePage("*", userId, page, size);
        PageEnvelop envelop = new PageEnvelop();
        envelop.setStatus(200);
        envelop.setCurrPage(page);
        envelop.setPageSize(size);
        envelop.setTotalCount(rsResourceService.getResourceCount("*", userId));
        envelop.setDetailModelList(resultList);
        return envelop;
    }
    /**
     * 综合查询档案数据导出
     * @param request
     * @param response
     * @param resourcesCode
     * @param searchParams
     * @param metaData
     * @param size
     * @throws Exception
     */
//    @RequestMapping(value = "/outFileExcel")
//    public void outExcel(HttpServletRequest request, HttpServletResponse response, String resourcesCode, String searchParams, String metaData, Integer size) throws Exception {
//
//        //基本设置
//        response.setContentType("application/vnd.ms-excel");
//        String fileName = "综合查询档案资源数据";
//        Long current = System.currentTimeMillis();
//        response.setHeader("Content-Disposition", "attachment; filename="
//                + new String(fileName.getBytes("UTF-8"), "ISO8859-1") + current.toString() + ".xls");
//        OutputStream os = response.getOutputStream();
//        Map<String, Object> params = new HashMap<>();
//        //基本参数
//        String url = "/resource/api/v1.0/resources/integrated/metadata_data";
//        params.put("resourcesCode", resourcesCode);
//        params.put("orgCode", "*");
//        params.put("areaCode", "*");
//        params.put("queryCondition", searchParams);
//        params.put("size", SINGLE_REQUEST_SIZE);
//        if (size <= SINGLE_EXCEL_SIZE) {
//            WritableWorkbook book = Workbook.createWorkbook(os);
//            WritableSheet sheet = book.createSheet("page1", 0);
//            //初始化表格基础数据
//            sheet = initBaseInfo(sheet);
//            List<Map<String, String>> metaDataSrcList = objectMapper.readValue(metaData, List.class);
//            List<String> metaDataList = new ArrayList<String>();
//            for(int i = 0; i < metaDataSrcList.size(); i ++) {
//                Map<String, String> temp = metaDataSrcList.get(i);
//                sheet.addCell(new Label(i + 6, 0, String.valueOf(temp.get("code"))));
//                sheet.addCell(new Label(i + 6, 1, String.valueOf(temp.get("name"))));
//                metaDataList.add(String.valueOf(temp.get("code")));
//            }
//            params.put("metaData", objectMapper.writeValueAsString(metaDataList));
//            //循环获取数据
//            int totalPage;
//            if (size % SINGLE_REQUEST_SIZE > 0) {
//                totalPage = size / SINGLE_REQUEST_SIZE + 1;
//            } else {
//                totalPage = size / SINGLE_REQUEST_SIZE;
//            }
//            for (int page = 1; page <= totalPage; page ++) {
//                params.put("page", page);
//                HttpResponse httpResponse = HttpUtils.doGet(adminInnerUrl + url, params);
//                Envelop envelop = toModel(httpResponse.getContent(), Envelop.class);
//                List<Object> dataList = envelop.getDetailModelList();
//                Cell[] cells = sheet.getRow(0);
//                //填充数据
//                sheet = inputData(sheet, dataList, cells, sheet.getRows());
//            }
//            sheet.mergeCells(0, 2, 0, sheet.getRows() - 1);
//            sheet.addCell(new Label(0, 2, "值"));
//            sheet.removeRow(0);
//            book.write();
//            book.close();
//        } else {
//            int fileCount;
//            if (size % SINGLE_EXCEL_SIZE > 0) {
//                fileCount = size / SINGLE_EXCEL_SIZE + 1;
//            } else {
//                fileCount = size / SINGLE_EXCEL_SIZE;
//            }
//            int totalPage;
//            if (size % SINGLE_REQUEST_SIZE > 0) {
//                totalPage = size / SINGLE_REQUEST_SIZE + 1;
//            } else {
//                totalPage = size / SINGLE_REQUEST_SIZE;
//            }
//            WritableWorkbook book = Workbook.createWorkbook(os);
//            for (int fileIndex = 1; fileIndex <= fileCount; fileIndex ++) {
//                WritableSheet sheet = book.createSheet("page" + fileIndex, fileIndex - 1);
//                //初始化表格基础数据
//                sheet = initBaseInfo(sheet);
//                List<Map<String, String>> metaDataSrcList = objectMapper.readValue(metaData, List.class);
//                List<String> metaDataList = new ArrayList<String>();
//                for (int i = 0; i < metaDataSrcList.size(); i++) {
//                    Map<String, String> temp = metaDataSrcList.get(i);
//                    sheet.addCell(new Label(i + 6, 0, String.valueOf(temp.get("code"))));
//                    sheet.addCell(new Label(i + 6, 1, String.valueOf(temp.get("name"))));
//                    metaDataList.add(String.valueOf(temp.get("code")));
//                }
//                params.put("metaData", objectMapper.writeValueAsString(metaDataList));
//                //循环获取数据
//                int currentPage = (fileIndex - 1) * (SINGLE_EXCEL_SIZE / SINGLE_REQUEST_SIZE) + 1;
//                int cycPage;
//                if (fileIndex == fileCount) {
//                    int beforePage = (fileIndex - 1) * (SINGLE_EXCEL_SIZE / SINGLE_REQUEST_SIZE);
//                    int lastPage = totalPage - beforePage;
//                    cycPage = beforePage + lastPage;
//                } else {
//                    cycPage = fileIndex * (SINGLE_EXCEL_SIZE / SINGLE_REQUEST_SIZE);
//                }
//                for (int page = currentPage; page <= cycPage; page ++) {
//                    params.put("page", page);
//                    String httpResponse = HttpClientUtil.doGet(adminInnerUrl + url, params);
//                    Envelop envelop = toModel(httpResponse, Envelop.class);
//                    List<Object> dataList = envelop.getDetailModelList();
//                    Cell[] cells = sheet.getRow(0);
//                    //填充数据
//                    sheet = inputData(sheet, dataList, cells, sheet.getRows());
//                }
//                sheet.mergeCells(0, 2, 0, sheet.getRows() - 1);
//                sheet.addCell(new Label(0, 2, "值"));
//                sheet.removeRow(0);
//            }
//            book.write();
//            book.close();
//        }
//        os.flush();
//        os.close();
//    }
    /**
     * 综合查询指标数据导出
     * @param response
     * @param tjQuotaIds
     * @param tjQuotaCodes
     * @param searchParams
     */
//    @RequestMapping("/outQuotaExcel")
//    public void outQuotaExcel(HttpServletResponse response, HttpServletRequest request, String tjQuotaIds, String tjQuotaCodes, String searchParams) throws Exception {
        //基本设置
//        response.setContentType("application/vnd.ms-excel");
//        String fileName = "综合查询指标资源数据";
//        Long current = System.currentTimeMillis();
//        response.setHeader("Content-Disposition", "attachment; filename="
//                + new String(fileName.getBytes("UTF-8"), "ISO8859-1") + current.toString() + ".xls");
//        OutputStream os = response.getOutputStream();
//        //请求数据
//        String url = "/resources/integrated/quota_data";
//        Map<String, Object> params = new HashMap<String, Object>();
//        params.put("quotaIds", tjQuotaIds);
//        params.put("quotaCodes", tjQuotaCodes);
//        params.put("queryCondition", searchParams);
//        List<String> userOrgList  = getUserOrgSaasListRedis(request);
//        params.put("userOrgList", userOrgList);
//        String resultStr = HttpClientUtil.doGet(comUrl + url, params, username, password);
//        Envelop envelop = toModel(resultStr, Envelop.class);
//        //处理Excel
//        WritableWorkbook book = Workbook.createWorkbook(os);
//        WritableSheet sheet = book.createSheet("page1", 0);
//        sheet.addCell(new Label(0, 0, "代码"));
//        sheet.addCell(new Label(0, 1, "名称"));
//        List<Map<String, String>> objList = (List<Map<String, String>>)envelop.getObj();
//        for(int i = 0; i< objList.size(); i ++) {
//            Map<String, String> objMap = objList.get(i);
//            sheet.addCell(new Label(i + 1, 0, String.valueOf(objMap.get("key"))));
//            sheet.addCell(new Label(i + 1, 1, String.valueOf(objMap.get("name"))));
//        }
//        Cell [] cells = sheet.getRow(0);
//        sheet = inputData(sheet, envelop.getDetailModelList(), cells, sheet.getRows());
//        sheet.mergeCells(0, 2, 0, sheet.getRows() - 1);
//        sheet.addCell(new Label(0, 2, "值"));
//        sheet.removeRow(0);
//        book.write();
//        book.close();
//        os.flush();
//        os.close();
//
//    }
    /**
     * 综合查询档案数据已选数据导出
     * @param response
     * @param selectData
     * @param metaData
     */
//    @RequestMapping(value = "/outSelectExcel", method = RequestMethod.GET)
//    public void outSelectExcel(HttpServletResponse response, String selectData, String metaData) throws Exception {
//        //基本设置
//        response.setContentType("application/vnd.ms-excel");
//        String fileName = "综合查询档案数据资源已选数据";
//        Long current = System.currentTimeMillis();
//        response.setHeader("Content-Disposition", "attachment; filename="
//                + new String(fileName.getBytes("gb2312"), "ISO8859-1") + current.toString() + ".xls");
//        OutputStream os = response.getOutputStream();
//        WritableWorkbook book = Workbook.createWorkbook(os);
//        WritableSheet sheet = book.createSheet("page1", 0);
//        //初始化基础数据
//        sheet = initBaseInfo(sheet);
//        List<Map<String, String>> metaDataSrcList = objectMapper.readValue(metaData, List.class);
//        for(int i = 0; i < metaDataSrcList.size(); i ++) {
//            Map<String, String> temp = metaDataSrcList.get(i);
//            sheet.addCell(new Label(i + 6, 0, String.valueOf(temp.get("code"))));
//            sheet.addCell(new Label(i + 6, 1, String.valueOf(temp.get("name"))));
//        }
//        List<Object> selectDataList = objectMapper.readValue(selectData, List.class);
//        Cell[] cells = sheet.getRow(0);
//        /**
//         * 填充数据
//         */
//        sheet = inputData(sheet, selectDataList, cells, sheet.getRows());
//        sheet.mergeCells(0, 2, 0, sheet.getRows() - 1);
//        sheet.addCell(new Label(0, 2, "值"));
//        book.write();
//        book.close();
//        os.flush();
//        os.close();
//
//    }
    /**
     * 档案数据基础信息初始化
     * @param sheet
     * @return
     * @throws Exception
     */
    public static WritableSheet initBaseInfo(WritableSheet sheet) throws Exception{
        sheet.addCell(new Label(0, 0, "代码"));
        sheet.addCell(new Label(0, 1, "名称"));
        sheet.addCell(new Label(1, 0, "event_date"));
        sheet.addCell(new Label(1, 1, "时间"));
        sheet.addCell(new Label(2, 0, "org_name"));
        sheet.addCell(new Label(2, 1, "机构名称"));
        sheet.addCell(new Label(3, 0, "org_code"));
        sheet.addCell(new Label(3, 1, "机构编号"));
        sheet.addCell(new Label(4, 0, "patient_name"));
        sheet.addCell(new Label(4, 1, "病人姓名"));
        sheet.addCell(new Label(5, 0, "demographic_id"));
        sheet.addCell(new Label(5, 1, "病人身份证号码"));
        return sheet;
    }
    /**
     * 填充数据
     * @param sheet
     * @param dataList
     * @param cells
     * @return
     * @throws Exception
     */
    public WritableSheet inputData(WritableSheet sheet, List<Object> dataList, Cell[] cells, int rowNum) throws Exception{
        for (int i = 0; i < dataList.size(); i++) {
            Map<String, String> map = toModel(toJson(dataList.get(i)), Map.class);
            for (String key : map.keySet()) {
                for (Cell cell : cells) {
                    if (cell.getContents().equals(key)) {
                        sheet.addCell(new Label(cell.getColumn(), i + rowNum, String.valueOf(map.get(key))));
                    }
                }
            }
        }
        return sheet;
    }
    public List<Map<String, Object>> changeIdCardNo(List<Map<String, Object>> resultList, HttpServletRequest request) throws Exception {
        List<Map<String, Object>> finalList = new ArrayList<Map<String, Object>>();
        boolean flag = false;
        if (!flag) {
            //没有权限,对身份证号进行部分*展示
            for (Map<String, Object> map : resultList) {
                if (!StringUtils.isEmpty(map.get("demographic_id"))) {
                    map.put("demographic_id", NumberUtil.changeIdCardNo(map.get("demographic_id").toString()));
                }
                //身份证件号码
                if (!StringUtils.isEmpty(map.get("EHR_000017"))) {
                    map.put("EHR_000017", NumberUtil.changeIdCardNo(map.get("EHR_000017").toString()));
                }
                //户主证件号码
                if (!StringUtils.isEmpty(map.get("EHR_000027"))) {
                    map.put("EHR_000027", NumberUtil.changeIdCardNo(map.get("EHR_000027").toString()));
                }
                //医疗保险号
                if (!StringUtils.isEmpty(map.get("EHR_000232"))) {
                    map.put("EHR_000232", NumberUtil.changeIdCardNo(map.get("EHR_000232").toString()));
                }
                //身份证件号码(体检)
                if (!StringUtils.isEmpty(map.get("EHR_000776"))) {
                    map.put("EHR_000776", NumberUtil.changeIdCardNo(map.get("EHR_000776").toString()));
                }
                //母亲身份证件号码
                if (!StringUtils.isEmpty(map.get("EHR_001264"))) {
                    map.put("EHR_001264", NumberUtil.changeIdCardNo(map.get("EHR_001264").toString()));
                }
                //父亲身份证件号码
                if (!StringUtils.isEmpty(map.get("EHR_001266"))) {
                    map.put("EHR_001266", NumberUtil.changeIdCardNo(map.get("EHR_001266").toString()));
                }
                finalList.add(map);
            }
        } else {
            finalList.addAll(resultList);
        }
        return finalList;
    }
}

+ 151 - 0
svr/svr-basic/src/main/java/com/yihu/jw/basic/agadmin/controller/resource/ResourceInterfaceController.java

@ -0,0 +1,151 @@
package com.yihu.jw.basic.agadmin.controller.resource;
import com.yihu.jw.basic.resource.dao.RsInterfaceDao;
import com.yihu.jw.basic.resource.service.RsInterfaceService;
import com.yihu.jw.entity.ehr.id.BizObject;
import com.yihu.jw.entity.ehr.resource.RsInterface;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.ObjEnvelop;
import com.yihu.jw.restmodel.web.PageEnvelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * Created by yww on 2016/5/24.
 */
@RestController
@Api( tags = {"网关-资源接口"})
@RequestMapping("/resource/resourceInterface")
public class ResourceInterfaceController extends EnvelopRestEndpoint {
    @Autowired
    private RsInterfaceService interfaceService;
    @Autowired
    private RsInterfaceDao rsInterfaceDao;
    @RequestMapping("/infoInitial")
    public Envelop resourceInterfaceInfoInitial(String id,String mode){
        Envelop envelop = new Envelop();
        String envelopStr = "";
        try{
            if (!StringUtils.isEmpty(id)) {
                RsInterface rsInterface = interfaceService.getOne(id);
                return ObjEnvelop.getSuccess("查询成功",rsInterface);
            }
            return success();
        }catch (Exception e){
            e.printStackTrace();
            return failed("失败");
        }
    }
    @RequestMapping("/searchRsInterfaces")
    public Envelop searchRsInterfaces(String searchNm, int page, int rows) {
        Envelop envelop = new Envelop();
        String envelopStr = "";
        String filters = "";
        try{
            if(!StringUtils.isEmpty(searchNm)){
                filters += "name?"+searchNm+" g1;resourceInterface?"+searchNm+" g1;";
            }
            List<RsInterface> interfaces = interfaceService.search(null, filters, null, page, rows);
            return PageEnvelop.getSuccessListWithPage("查询成功",interfaces,page,rows,interfaceService.getCount(filters));
        } catch (Exception ex){
            ex.printStackTrace();
            return failed(ERR_SYSTEM_DES);
        }
    }
    @RequestMapping("/getResourceInterface")
    public Envelop getResourceInterface(String id){
        Envelop envelop = new Envelop();
        try{
            RsInterface rsInterface = interfaceService.getOne(id);
            return ObjEnvelop.getSuccess("查询成功",rsInterface);
        } catch (Exception ex){
            ex.printStackTrace();
            return failed(ERR_SYSTEM_DES);
        }
    }
    @RequestMapping("/findByResourceInterface")
    public Envelop findByResourceInterface(String resourceInterface){
        Envelop envelop = new Envelop();
        try{
            String url = "/resources/interface";
            Map<String,Object> params = new HashMap<>();
            params.put("resource_interface",resourceInterface);
            RsInterface  rsInterface =  interfaceService.findByResourceInterface(resourceInterface);
            return ObjEnvelop.getSuccess("查询成功",rsInterface);
        } catch (Exception ex){
            ex.printStackTrace();
            return failed(ERR_SYSTEM_DES);
        }
    }
    //新增、修改
    @RequestMapping("/update")
    public Envelop updateResourceInterface(String dataJson,String mode){
        Envelop envelop = new Envelop();
        String url = "/resources/interfaces";
        try{
            RsInterface rsInterface = toEntity(dataJson, RsInterface.class);
            if(StringUtils.isEmpty(rsInterface.getName())){
                return failed("资源接口名称不能为空");
            }
            if("new".equals(mode)){
                rsInterface.setId(getObjectId(BizObject.RsInterface));
                interfaceService.save(rsInterface);
                return ObjEnvelop.getSuccess("新增成功",rsInterface);
            } else if("modify".equals(mode)){
                RsInterface updateModel = interfaceService.getOne(rsInterface.getId());
                if (updateModel==null){
                    return failed("原资源接口信息获取失败");
                }
                updateModel.setName(rsInterface.getName());
                updateModel.setResourceInterface(rsInterface.getResourceInterface());
                updateModel.setParamDescription(rsInterface.getParamDescription());
                updateModel.setResultDescription(rsInterface.getResultDescription());
                updateModel.setDescription(rsInterface.getDescription());
                interfaceService.save(updateModel);
                return ObjEnvelop.getSuccess("新增成功",updateModel);
            }
        }catch(Exception ex){
            ex.printStackTrace();
            return failed(ERR_SYSTEM_DES);
        }
        return envelop;
    }
    //删除
    @RequestMapping("/delete")
    public Envelop deleteRsInterface(String id){
        Envelop envelop = new Envelop();
        try{
            rsInterfaceDao.deleteById(id);
            return success();
        } catch(Exception ex){
            ex.printStackTrace();
            return failed(ERR_SYSTEM_DES);
        }
    }
    @RequestMapping("/isNameExist")
    public Envelop isNameExist(String name){
        Envelop envelop = new Envelop();
        try{
            String url = "/resources/existence/name";
            return ObjEnvelop.getSuccess("查询成功",interfaceService.isNameExist(name));
        } catch (Exception ex){
            ex.printStackTrace();
            return failed(ERR_SYSTEM_DES);
        }
    }
}

+ 568 - 0
svr/svr-basic/src/main/java/com/yihu/jw/basic/agadmin/controller/resource/ResourceManageController.java

@ -0,0 +1,568 @@
package com.yihu.jw.basic.agadmin.controller.resource;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.yihu.ehr.constants.ServiceApi;
import com.yihu.jw.basic.resource.dao.RsResourceDao;
import com.yihu.jw.basic.resource.model.ResourceQuotaJson;
import com.yihu.jw.basic.resource.service.*;
import com.yihu.jw.entity.ehr.id.BizObject;
import com.yihu.jw.entity.ehr.quota.TjQuota;
import com.yihu.jw.entity.ehr.resource.*;
import com.yihu.jw.restmodel.ehr.resource.MChartInfoModel;
import com.yihu.jw.restmodel.ehr.resource.MRsCategory;
import com.yihu.jw.restmodel.ehr.resource.MRsResources;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.ListEnvelop;
import com.yihu.jw.restmodel.web.ObjEnvelop;
import com.yihu.jw.restmodel.web.PageEnvelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import com.yihu.jw.util.common.LogService;
import com.yihu.jw.util.http.HttpClientUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestClientException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * Controller - 视图管理控制器
 * Created by yww on 2016/5/27.
 */
@RestController
@RequestMapping("/resource/resourceManage")
public class ResourceManageController extends EnvelopRestEndpoint {
    @Autowired
    private RsResourceCategoryService rsCategoryService;
    @Autowired
    private RsResourceService rsResourceService;
    @Autowired
    private RsAppResourceService rsAppResourceService;
    @Autowired
    private RsResourceDao rsResourceDao;
    @Autowired
    private RsResourceQuotaService resourceQuotaService;
    @Autowired
    private RsResourceGrantService rsGrantService;
    @Autowired
    private RsReportViewService rsReportViewService;
    @RequestMapping("/infoInitial")
    public Envelop resourceInterfaceInfoInitial(String id,String mode,String categoryId, String name, String dataSource){
        Envelop envelop = new Envelop();
        String envelopStr = "";
        String categoryName = "";
        try{
            if(!StringUtils.isEmpty(categoryId)) {
                RsResourceCategory rsResourceCategory = rsCategoryService.getRsCategoryById(categoryId);
                if(rsResourceCategory!=null){
                    categoryName = rsResourceCategory.getName();
                }
            }
            RsResource rsResource;
            if (!StringUtils.isEmpty(id)) {
                rsResource = rsResourceService.getResourceById(id);
            } else {
                rsResource = new RsResource();
            }
            rsResource.setCategoryName(categoryName);
            return ObjEnvelop.getSuccess("查询成功",rsResource);
        }catch (Exception e){
            e.printStackTrace();
            return failed("查询失败");
        }
    }
    @RequestMapping(value = "/resourceInfo", method = RequestMethod.GET, produces = "text/html;charset=UTF-8")
    public Envelop getResourceInfo(String id) throws Exception {
        RsResource  rsResource = rsResourceService.getResourceById(id);
        return ObjEnvelop.getSuccess("查询成功",rsResource);
    }
    /**
     * 配置授权浏览页面跳转
     * @param resourceId
     * @return
     */
    @RequestMapping("/switch")
    public Envelop switchToPage(String resourceId){
        Envelop envelop = new Envelop();
        String envelopStr = "";
        try{
            if (!StringUtils.isEmpty(resourceId)) {
                RsResource  rsResource = rsResourceService.getResourceById(resourceId);
                return ObjEnvelop.getSuccess("查询成功",rsResource);
            }
            return success();
        }catch (Exception e){
            e.printStackTrace();
            return failed("查询失败");
        }
    }
    /**
     * 资源分页查询 -- 弃用
     * @param searchNm
     * @param categoryId
     * @param page
     * @param rows
     * @return
     */
    @RequestMapping("/resources")
    public Envelop searchResources(String searchNm, String categoryId, String rolesId, String appId, Integer dataSource, int page, int rows){
        String url = "/resources";
        String resultStr = "";
        Envelop envelop = new Envelop();
        Map<String, Object> params = new HashMap<>();
        StringBuffer stringBuffer = new StringBuffer();
        if (!StringUtils.isEmpty(searchNm)) {
            stringBuffer.append("code?" + searchNm + " g1;name?" + searchNm + " g1;");
        }
        if(dataSource != null && dataSource != 0) {
            stringBuffer.append("dataSource=" + dataSource + ";");
        }
        if(!StringUtils.isEmpty(categoryId)){
            stringBuffer.append("categoryId=" + categoryId);
        }else {
            return envelop;
        }
        params.put("filters", "");
        String filters = stringBuffer.toString();
        if (!StringUtils.isEmpty(filters)) {
            params.put("filters", filters);
        }
        if (!StringUtils.isEmpty(rolesId)) {
            params.put("rolesId", rolesId);
        }
        if (!StringUtils.isEmpty(appId)) {
            params.put("appId", appId);
        }
        params.put("page", page);
        params.put("size", rows);
        try {
            long total = 0;
            List<MRsResources> rsList;
            //过滤条件为空
            if(StringUtils.isEmpty(filters)) {
                Page<RsResource> resources = rsResourceService.getResources(null,reducePage(page),rows);
                total = resources.getTotalElements();
                return PageEnvelop.getSuccessListWithPage("查询成功",resources.toList(),page,rows,total);
            } else {
                if (!StringUtils.isEmpty(rolesId) && !StringUtils.isEmpty(appId)) {
                    String resourceIds = rsAppResourceService.getResourceIdByAppId(appId);
                    if (!StringUtils.isEmpty(resourceIds)) {
                        filters += ";id=" + resourceIds + ";" ;
                    } else {
                        filters += ";id=0000;" ;
                    }
                }
                List<RsResource> resources = rsResourceService.search(null,filters,null,page,rows);
                total = rsResourceService.getCount(filters);
                return PageEnvelop.getSuccessListWithPage("查询成功",resources,page,rows,total);
            }
        } catch (Exception e) {
            e.printStackTrace();
            return failed(ERR_SYSTEM_DES);
        }
    }
    /**
     * 视图资源列表树
     * @param filters 过滤查询条件
     * @param dataSource 1 档案视图 2 指标视图
     * @return
     */
    @RequestMapping("/resources/tree")
    public Envelop getResourceTree(String filters, Integer dataSource, HttpServletRequest request) throws Exception {
        String url = "/resource/api/v1.0/resources/tree";
        //从Session中获取用户的角色和和授权视图列表作为查询参数
        Map<String, Object> params = new HashMap<>();
        if (!StringUtils.isEmpty(filters)) {
            params.put("filters", filters);
        }
        if(dataSource != null && dataSource != 0) {
            params.put("dataSource", dataSource);
        }
        List<Map<String, Object>> resultList = rsResourceService.getResourceTree(dataSource, "*", filters);
        return ListEnvelop.getSuccess("查询成功",resultList);
    }
    /**
     * 创建或更新资源
     * @param dataJson
     * @param mode
     * @return
     */
    @RequestMapping("/update")
    public Envelop updateResource(String dataJson, String mode, HttpServletRequest request){
        Envelop envelop = new Envelop();
        String url = "/resources";
        try{
            //RsResourcesModel model = objectMapper.readValue(dataJson, RsResourcesModel.class);
            Map<String, Object> resourceMap = objectMapper.readValue(dataJson, Map.class);
            if(resourceMap != null) {
                if (StringUtils.isEmpty(resourceMap.get("code"))) {
                    return failed("资源编码不能为空");
                }
                if (StringUtils.isEmpty(resourceMap.get("name"))) {
                    return failed("资源名称不能为空");
                }
                // 新增
                if ("new".equals(mode)) {
                    RsResource rs = toEntity(objectMapper.writeValueAsString(resourceMap), RsResource.class);
                    rs.setId(getObjectId(BizObject.Resources));
                    RsResource newRsResource =  rsResourceService.saveResource(rs);
                    return ObjEnvelop.getSuccess("新增成功",newRsResource);
                } else if ("modify".equals(mode)) {
                    String urlGet = "/resources/" + resourceMap.get("id");
                    RsResource rsResource = rsResourceService.getResourceById(resourceMap.get("id")+"");
                    if (rsResource==null) {
                        return failed("原资源信息获取失败");
                    }
                    resourceMap.put("creator", rsResource.getCreator());
                    Map<String, Object> params = new HashMap<>();
                    params.put("resource", objectMapper.writeValueAsString(resourceMap));
                    RsResource rs = toEntity(objectMapper.writeValueAsString(resourceMap),RsResource.class);
                    RsResource newRsResource =  rsResourceService.saveResource(rs);
                    return ObjEnvelop.getSuccess("更新成功",newRsResource);
                }
            }else {
                return failed("参数有误");
            }
        }catch (Exception e){
            LogService.getLogger(ResourceManageController.class).error(e.getMessage());
        }
        return failed("操作失败");
    }
    /**
     * 删除资源
     * @param id
     * @return
     */
    @RequestMapping("/delete")
    public Envelop deleteResource(String id) {
        String url = "/resources/" + id;
        String resultStr = "";
        Envelop result = new Envelop();
        Map<String, Object> params = new HashMap<>();
        params.put("id", id);
        try {
            if (isRsInUse(id)){
                return failed("已授权资源不能删除");
            }
            if(isRsReportInUse(id)){
                return failed("已关联报表资源不能删除");
            }
            if (isSetReport(id)){
                return failed("已配置报表不能删除");
            }
            rsResourceService.deleteResource(id);
            return success("删除成功");
        } catch (Exception e) {
            e.printStackTrace();
            return failed("删除失败");
        }
    }
    /**
     * 资源编码唯一性验证
     * @param code
     * @return
     */
    @RequestMapping("/isExistCode")
    public Envelop isExistCode(String code){
        Envelop envelop = new Envelop();
        String url = "/resources/isExistCode/"+code;
        try{
            RsResource rsResource = rsResourceDao.findByCode(code);
            return ObjEnvelop.getSuccess("查询成功",rsResource!=null);
        } catch (Exception ex){
            ex.printStackTrace();
            return failed(ERR_SYSTEM_DES);
        }
    }
    /**
     * 资源名称唯一性验证
     * @param name
     * @return
     */
    @RequestMapping("/isExistName")
    public Envelop isExistName(String name){
        Envelop envelop = new Envelop();
        String url = "/resources/isExistName";
        try{
            RsResource rsResource = rsResourceDao.findByName(name);
            return ObjEnvelop.getSuccess("查询成功",rsResource!=null);
        } catch (Exception ex){
            ex.printStackTrace();
            return failed(ERR_SYSTEM_DES);
        }
    }
    /**
     * 资源分类树-页面初始化时
     * @return
     */
    @RequestMapping("/categories")
    public Envelop getCategories(){
        try{
            String filters = "";
            String envelopStr = "";
            String url = "/resources/categories/all";
            List<RsResourceCategory> resources = rsCategoryService.search(filters);
            return ListEnvelop.getSuccess("查询成功",resources);
        } catch (Exception e){
            e.printStackTrace();
        }
        return failed("查询失败");
    }
    /**
     * 带检索分页的查找资源分类方法,新增资源时
     * @param searchParm
     * @param page
     * @param rows
     * @return
     */
    @RequestMapping("/rsCategory")
    public Envelop searchRsCategory(String searchParm, HttpServletRequest request, int page, int rows){
        Envelop envelop = new Envelop();
        String url = "/resources/categories/search";
        String envelopStrGet = "";
        try {
            Map<String, Object> params = new HashMap<>();
            StringBuffer stringBuffer = new StringBuffer();
            if (!StringUtils.isEmpty(searchParm)) {
                stringBuffer.append("name?" + searchParm +";");
            }
            params.put("filters", "");
            String filters = stringBuffer.toString();
            if (!StringUtils.isEmpty(filters)) {
                params.put("filters", filters);
            }
            long total = 0;
            if (StringUtils.isEmpty(filters)) {
                Page<RsResourceCategory> rsCatePage = null;
                rsCatePage = rsCategoryService.getRsCategories(null, reducePage(page), rows);
                total = rsCatePage.getTotalElements();
                return PageEnvelop.getSuccessListWithPage("查询成功",rsCatePage.toList(),page,rows,total);
            } else {
                List<RsResourceCategory> rsCateList = null;
                    rsCateList = rsCategoryService.search(null, filters, null, page, rows);
                total = rsCateList.size();
                return PageEnvelop.getSuccessListWithPage("查询成功",rsCateList,page,rows,total);
            }
        } catch (Exception e) {
            e.printStackTrace();
            return failed("查询成功");
        }
    }
//    @RequestMapping("/getResourceQuotaInfo")
//    public Envelop getResourceQuotaInfo(String resourceId, String nameOrCode, int page, int rows){
//        String url = "/resources/getQuotaList";
//        String resultStr = "";
//        Envelop envelop = new Envelop();
//        Map<String, Object> params = new HashMap<>();
//        if (!StringUtils.isEmpty(resourceId)) {
//            params.put("filters", "resourceId=" + resourceId);
//        }
//        if (!StringUtils.isEmpty(nameOrCode)) {
//            params.put("quotaNameOrCode", nameOrCode);
//        }
//        params.put("page", page);
//        params.put("pageSize", rows);
//        try {
//            resultStr = HttpClientUtil.doGet(comUrl + url, params, username, password);
//            return resultStr;
//        } catch (Exception ex) {
//            ex.printStackTrace();
//            return failed(ERR_SYSTEM_DES);
//        }
//    }
    @RequestMapping(value = "/addResourceQuota", produces = "text/html;charset=UTF-8")
    public Envelop addResourceQuota(String resourceId, String jsonModel, HttpServletRequest request) throws IOException {
        String url = "/resourceQuota/batchAddResourceQuota";
        String resultStr = "";
        Envelop result = new Envelop();
        if (!StringUtils.isEmpty(resourceId)) {
            resourceQuotaService.deleteByResourceId(resourceId);
            return success("删除成功");
        }
        try {
            List<RsResourceQuota> list = objectMapper.readValue(jsonModel, new TypeReference<List<RsResourceQuota>>(){});
            //先删除表中resourceId=XX的数据
            if (list != null && list.size() > 0) {
                resourceQuotaService.deleteByResourceId(list.get(0).getResourceId());
            }
            for (int i=0; i<list.size(); i++) {
                resourceQuotaService.save(list.get(i));
            }
            return ListEnvelop.getSuccess("操作成功",list);
        } catch (RestClientException e) {
            e.printStackTrace();
            return failed(ERR_SYSTEM_DES);
        }
    }
    /**
     * 指标上卷下钻预览
     * @param id
     * @param model
     * @param dimension  维度
     * @param quotaFilter 过滤条件 多个;拼接 如:org=123;city=001
     * @return
     */
//    @RequestMapping("/resourceShow")
//    public Envelop resourceShow(String id ,Model model ,String dimension,String quotaFilter,HttpServletRequest request) throws JsonProcessingException{
//        MChartInfoModel chartInfoModel = new MChartInfoModel();
//        String resultStr = "";
//        try {
//            Map<String, Object> params = new HashMap<>();
//            params.put("resourceId", id);
//            params.put("dimension", dimension);
//            Map<String, Object> quotaFilterMap = new HashMap<>();
//           if( !StringUtils.isEmpty(quotaFilter) ){
//               params.put("quotaFilter", quotaFilter);
//           }
//            resultStr = HttpClientUtil.doGet(comUrl + ServiceApi.Resources.GetRsQuotaPreview, params, username, password);
//            Envelop envelop = objectMapper.readValue(resultStr, Envelop.class);
//            String s = objectMapper.writeValueAsString((HashMap<String,String>)envelop.getObj());
//            chartInfoModel = objectMapper.readValue(s,MChartInfoModel.class);
//        } catch (Exception e) {
//            e.printStackTrace();
//         }
//        model.addAttribute("id", id);
//        model.addAttribute("chartInfoModel", objectMapper.writeValueAsString(chartInfoModel));
//        model.addAttribute("contentPage","/resource/resourcemanage/resoureShowCharts");
//        return "generalView";
//    }
    /**
     * 指标预览 包含上卷 下钻
     * @param id
     * @param dimension  维度
     * @param quotaFilter 过滤条件 多个;拼接 如:org=123;city=001
     * @return
     */
//    @RequestMapping("/resourceUpDown")
//    public MChartInfoModel getResourceUpDown(String id, String dimension,String quotaFilter ,HttpServletRequest request){
//        MChartInfoModel chartInfoModel = new MChartInfoModel();
//        try {
//            Envelop result = new Envelop();
//            String resultStr = "";
//            Map<String, Object> params = new HashMap<>();
//            params.put("resourceId", id);
//            params.put("dimension", dimension);
//            List<String> userOrgList  = getUserOrgSaasListRedis(request);
//            params.put("userOrgList", userOrgList);
//            Map<String, Object> quotaFilterMap = new HashMap<>();
//            if( !StringUtils.isEmpty(quotaFilter) ){
//                params.put("quotaFilter", quotaFilter);
//            }
//            resultStr = HttpClientUtil.doGet(comUrl + ServiceApi.Resources.GetRsQuotaPreview, params, username, password);
//            Envelop envelop = objectMapper.readValue(resultStr, Envelop.class);
//            String s = objectMapper.writeValueAsString((HashMap<String,String>)envelop.getObj());
//            chartInfoModel = objectMapper.readValue(s,MChartInfoModel.class);
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//        return chartInfoModel;
//    }
    /**
     * 判断资源是否已被授权
     * @param resourceId
     * @return
     * @throws Exception
     */
    public boolean isRsInUse(String resourceId) throws Exception{
        String url = "/resources/grants/no_paging";
        Map<String,Object> params = new HashMap<>();
        params.put("filters","resourceId=" + resourceId);
        List<RsAppResource> rsGrant = rsGrantService.search("resourceId=" + resourceId);
        if (rsGrant!=null&&rsGrant.size()>0) {
            return true;
        } else {
            return false;
        }
    }
    /**
     * 判断资源报表是否关联相关资源
     * @param resourceId
     * @return
     * @throws Exception
     */
    public boolean isRsReportInUse(String resourceId) throws Exception {
        String url = "/resources/reportView/existByResourceId";
        List<RsReportView> rsReportViewList = rsReportViewService.findByResourceId(resourceId);
        if (rsReportViewList == null || rsReportViewList.size() <= 0) {
            return false;
        }else {
            return true;
        }
    }
    public Boolean isSetReport(String resourceId) throws Exception{
        List<RsReportView> list = rsReportViewService.findByResourceId(resourceId);
        if (list != null && list.size() > 0) {
            return true;
        }
        return false;
    }
    @RequestMapping(value = "/getQuotaByResourceId", produces = "text/html;charset=UTF-8")
    public Envelop getQuotaByResourceId(String resourceId){
        Envelop envelop = new Envelop();
        String url = "/resourceQuota/getQuotaByResourceId";
        Map<String,Object> params = new HashMap<>();
        params.put("resourceId",resourceId);
        try{
            List<TjQuota> quotaList = resourceQuotaService.getQuotaByResourceId(resourceId);
            return ListEnvelop.getSuccess("查询成功",quotaList);
        }catch (Exception ex){
            ex.printStackTrace();
            return failed(ERR_SYSTEM_DES);
        }
    }
    @RequestMapping(value = "/updateResourceQuota", produces = "text/html;charset=UTF-8")
    public Envelop updateResourceQuota(String jsonModel){
        Envelop envelop = new Envelop();
        String url = "/resourceQuota/updateResourceQuota";
        try{
            List<ResourceQuotaJson> list = objectMapper.readValue(jsonModel, new TypeReference<List<ResourceQuotaJson>>() {
            });
            resourceQuotaService.updateResourceQuota(list);
            return ListEnvelop.getSuccess("查询成功",list);
        }catch (Exception ex){
            ex.printStackTrace();
            return failed(ERR_SYSTEM_DES);
        }
    }
}

+ 137 - 0
svr/svr-basic/src/main/java/com/yihu/jw/basic/agadmin/controller/resource/ResourceMonitorTypeReportController.java

@ -0,0 +1,137 @@
package com.yihu.jw.basic.agadmin.controller.resource;
import com.yihu.ehr.constants.ServiceApi;
import com.yihu.jw.basic.resource.service.RsReportService;
import com.yihu.jw.entity.ehr.resource.RsReport;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.PageEnvelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import com.yihu.jw.util.http.HttpClientUtil;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * Created by janseny on 2017/11/8.
 */
@RestController
@RequestMapping("/resource/monitorTypeReport")
public class ResourceMonitorTypeReportController extends EnvelopRestEndpoint {
    @Autowired
    private RsReportService rsReportService;
    /**
     * 报表分页查询
     */
    @RequestMapping("/search")
    public Envelop search(String searchNm, int page, int rows) {
        StringBuffer filters = new StringBuffer();
        if (!org.apache.commons.lang3.StringUtils.isEmpty(searchNm)) {
            filters.append("code?" + searchNm + " g1;name?" + searchNm + " g1;");
        }
        try {
            List<RsReport> rsReports = rsReportService.search(null, filters.toString(), null, page, rows);
            return PageEnvelop.getSuccessListWithPage("查询成功",rsReports,page,rows,rsReportService.getCount(filters.toString()));
        } catch (Exception e) {
            e.printStackTrace();
            return failed(ERR_SYSTEM_DES);
        }
    }
    //监测类型添加报表
//    @RequestMapping("/reportCreate")
//    public Envelop reportCreate(String reportId,String monitorTypeId) {
//        if(StringUtils.isEmpty(reportId)){
//            return failed("报表不能为空!");
//        }
//        if(StringUtils.isEmpty(monitorTypeId)){
//            return failed("监测类型id不能为空!");
//        }
//        RsMonitorTypeReportModel model = new RsMonitorTypeReportModel();
//        model.setReportId(Integer.valueOf(reportId));
//        model.setRsReoportMonitorTypeId(Integer.valueOf(monitorTypeId));
//        try{
//            String url = ServiceApi.Resources.RsMonitorTypeReport;
//            Map<String,Object> params = new HashMap<>();
//            params.put("data_json",objectMapper.writeValueAsString(model));
//            String envelopStr = HttpClientUtil.doPost(comUrl+url,params,username,password);
//            return envelopStr;
//        }catch (Exception ex){
//            ex.printStackTrace();
//            return failed(ERR_SYSTEM_DES);
//        }
//    }
//
//    //监测类型删除报表
//    @RequestMapping("/reportDelete")
//    public Envelop reportDelete(String reportId,String monitorTypeId) {
//        if(org.apache.commons.lang.StringUtils.isEmpty(reportId)){
//            return failed("报表不能为空!");
//        }
//        if(org.apache.commons.lang.StringUtils.isEmpty(monitorTypeId)){
//            return failed("监测类型id不能为空!");
//        }
//        try{
//            Map<String,Object> params = new HashMap<>();
//            params.put("reportId",reportId);
//            params.put("monitorTypeId",monitorTypeId);
//            String url = ServiceApi.Resources.RsMonitorTypeReport;
//            String envelopStr = HttpClientUtil.doDelete(comUrl+url,params,username,password);
//            return envelopStr;
//        }catch (Exception ex){
//            ex.printStackTrace();
//            return failed(ERR_SYSTEM_DES);
//        }
//    }
//    //监测类型配置报表列表查询
//    @RequestMapping("/monitorTypeReportList")
//    public Envelop getMonitorTypeReportList(String searchNm,int page,int rows){
//        if(org.apache.commons.lang.StringUtils.isEmpty(searchNm)){
//            return failed("监测类型id不能为空!");
//        }
//        try{
//            String url = ServiceApi.Resources.RsMonitorTypeReports;
//            Map<String,Object> params = new HashMap<>();
//            params.put("fields","");
//            params.put("filters","rsReoportMonitorTypeId="+searchNm);
//            params.put("page",page);
//            params.put("size",rows);
//            String envelopStr = HttpClientUtil.doGet(comUrl+url,params,username,password);
//            return envelopStr;
//        }catch (Exception ex){
//            ex.printStackTrace();
//            return failed(ERR_SYSTEM_DES);
//        }
//    }
//
//    //获取监测类型配置的所有 报表
//    @RequestMapping("/monitorTypeReportByMonitorTypeId")
//    public Envelop getMonitorTypeReportByMonitorTypeId(String monitorTypeId){
//        if(org.apache.commons.lang.StringUtils.isEmpty(monitorTypeId)){
//            return failed("监测类型id不能为空!");
//        }
//        try{
//            String url = ServiceApi.Resources.RsMonitorTypeReportsNoPage;
//            Map<String,Object> params = new HashMap<>();
//            params.put("filters","rsReoportMonitorTypeId="+monitorTypeId);
//            String envelopStr = HttpClientUtil.doGet(comUrl+url,params,username,password);
//            return envelopStr;
//        }catch (Exception ex){
//            ex.printStackTrace();
//            return failed(ERR_SYSTEM_DES);
//        }
//    }
}

+ 150 - 0
svr/svr-basic/src/main/java/com/yihu/jw/basic/agadmin/controller/resource/ResourceViewController.java

@ -0,0 +1,150 @@
package com.yihu.jw.basic.agadmin.controller.resource;
import com.yihu.jw.basic.agadmin.service.ResourceBrowseControllerService;
import com.yihu.jw.basic.dict.service.SystemDictEntryService;
import com.yihu.jw.entity.ehr.dict.SystemDictEntry;
import com.yihu.jw.restmodel.ehr.resource.MRsColumnsModel;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.ListEnvelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import com.yihu.jw.util.http.HttpClientUtil;
import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.ui.Model;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * Created by wq on 2016/6/7.
 */
@RestController
@RequestMapping("/resourceView")
public class ResourceViewController extends EnvelopRestEndpoint {
    @Autowired
    private ResourceBrowseControllerService resourceBrowseControllerService;
    @Autowired
    private SystemDictEntryService systemDictEntryService;
    @RequestMapping("/searchResource")
    public Envelop searchResource(String ids) {
        return resourceBrowseControllerService.getCategories(ids);
    }
    /**
     * 动态获取GRID的列名
     *
     * @param dictId
     * @return
     */
    @RequestMapping("/getGridCloumnNames")
    public Envelop getGridCloumnNames(String dictId) {
        Envelop envelop = new Envelop();
        Map<String, Object> params = new HashMap<>();
        String url = "/resources/ResourceBrowses/getResourceMetadata";
        String resultStr = "";
        params.put("resourcesCode", dictId);
        try {
            List<MRsColumnsModel> rsBrowseModelList = resourceBrowseControllerService.getResourceMetadata(dictId,"");
            return ListEnvelop.getSuccess("查询成功",rsBrowseModelList);
        } catch (Exception e) {
            e.printStackTrace();
            return failed("查询失败");
        }
    }
    @RequestMapping("/searchDictEntryList")
    public Envelop getDictEntryList(String dictId) {
        List<MRsColumnsModel> rsBrowseModelList = new ArrayList<>();
        try {
            if (!StringUtils.isEmpty(dictId)) {
                if ("34".equals(dictId)) {
                    List<SystemDictEntry> systemDictEntryList = systemDictEntryService.search("","dictId=" + dictId,"",1,500);
                    return ListEnvelop.getSuccess("查询成功",systemDictEntryList);
                }else if("andOr".equals(dictId)){
                    rsBrowseModelList.add(new MRsColumnsModel("AND", "并且"));
                    rsBrowseModelList.add(new MRsColumnsModel("OR", "或者"));
                    return ListEnvelop.getSuccess("查询成功",rsBrowseModelList);
                }else {
//                    url = "/resources/ResourceBrowses";
//                    params.put("category_id", dictId);
//
//                    resultStr = HttpClientUtil.doGet(comUrl + url, params, username, password);
//                    envelop = toModel(resultStr, Envelop.class);
//                    break;
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return failed("查询失败");
    }
    //数据导出方法
//    @RequestMapping("outExcel")
//    public Envelop outExcel(String rowData, String resourceCategoryName) {
//
//        Envelop envelop = new Envelop();
//        resourceCategoryName = resourceCategoryName.replaceAll("/", "") + "_" + System.currentTimeMillis();
//        //标题行
//        List<Object> dataAllList = toModel(rowData, List.class);
//
//        List<String> titleList = new ArrayList<>();
//        List<List> dataList = new ArrayList<>();
//        List<String> rowContext = new ArrayList<>();
//
//        Map<String, String> map = new HashMap<>();
//
//        for (int i = 0; i < dataAllList.size(); i++) {
//            map = toModel(toJson(dataAllList.get(i)), Map.class);
//            for (String key : map.keySet()) {
//
//                if (!titleList.contains(key)) {
//                    titleList.add(key);
//                }
//                rowContext.add(String.valueOf(map.get(key)));
//            }
//            dataList.add(rowContext);
//            rowContext = new ArrayList<>();
//        }
//
//        try {
//            //resourceCategoryName.xls为要新建的文件名
//            WritableWorkbook book = Workbook.createWorkbook(new File("F:\\excel\\" + resourceCategoryName + ".xls"));
//            //生成名为“resourceCategoryName”的工作表,参数0表示这是第一页
//            WritableSheet sheet = book.createSheet(resourceCategoryName, 0);
//            //title
//            for (int i = 0; i < titleList.size(); i++) {
//                sheet.addCell(new Label(i, 0, titleList.get(i)));
//            }
//            //context
//            for (int i = 0; i < dataList.size(); i++) {
//                for (int j = 0; j < dataList.get(i).size(); j++) {
//                    sheet.addCell(new Label(j, i + 1, String.valueOf(dataList.get(i).get(j))));
//                }
//            }
//            book.write();
//            book.close();
//        } catch (Exception e) {
//            envelop.setSuccessFlg(false);
//            envelop.setErrorMsg("数据导出失败");
//        }
//        envelop.setSuccessFlg(true);
//        return envelop;
//    }
}

+ 269 - 0
svr/svr-basic/src/main/java/com/yihu/jw/basic/agadmin/controller/resource/ResourcesStatisticsController.java

@ -0,0 +1,269 @@
//package com.yihu.jw.basic.agadmin.controller.resource;
//
//
//import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
//import com.yihu.jw.util.common.LogService;
//import com.yihu.jw.util.http.HttpClientUtil;
//import io.swagger.annotations.ApiOperation;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.stereotype.Controller;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.RequestMethod;
//import org.springframework.web.bind.annotation.ResponseBody;
//import org.springframework.web.bind.annotation.RestController;
//
//import java.util.HashMap;
//import java.util.Map;
//
///**
// * Created by wxw on 2017/9/12.
// */
//@RequestMapping("/resourcesStatistics")
//@RestController
////资源中心首页统计  控制入口
//public class ResourcesStatisticsController extends EnvelopRestEndpoint {
//
//
//    @RequestMapping(value = "/stasticReport/getArchiveReportInfo", method = RequestMethod.GET)
//    @ResponseBody
//    @ApiOperation(value = "获取健康档案图表", notes = "获取健康档案图表")
//    public Result getArchiveReportInfo(String requestType) {
//        String url = "/stasticReport/getArchiveReportInfo";
//        String resultStr = "";
//        try {
//            Map<String, Object> params = new HashMap<>();
//            params.put("requestType", requestType);
//            resultStr = HttpClientUtil.doGet(comUrl + url, params, username, password);
//            return toModel(resultStr, ListResult.class);
//        } catch (Exception e) {
//            LogService.getLogger(com.yihu.ehr.resource.controller.ResourceInterfaceController.class).error(e.getMessage());
//        }
//        return null;
//    }
//
//    @RequestMapping(value = "/stasticReport/getStatisticsElectronicMedicalCount", method = RequestMethod.GET)
//    @ResponseBody
//    @ApiOperation(value = "电子病历-最近七天采集总数统计,门诊住院数", notes = "电子病历-最近七天采集总数统计,门诊住院数")
//    public Result getStatisticsElectronicMedicalCount( ) {
//        String url = "/stasticReport/getStatisticsElectronicMedicalCount";
//        String resultStr = "";
//        try {
//            Map<String, Object> params = new HashMap<>();
//            resultStr = HttpClientUtil.doGet(comUrl + url, params, username, password);
//            return toModel(resultStr, ListResult.class);
//        } catch (Exception e) {
//            LogService.getLogger(com.yihu.ehr.resource.controller.ResourceInterfaceController.class).error(e.getMessage());
//        }
//        return null;
//    }
//
//    @RequestMapping(value = "/stasticReport/getStatisticsMedicalEventTypeCount", method = RequestMethod.GET)
//    @ResponseBody
//    @ApiOperation(value = "电子病历 - 今天 门诊住院数统计", notes = "电子病历 - 今天 门诊住院数统计")
//    public Result getStatisticsMedicalEventTypeCount( ) {
//        String url = "/stasticReport/getStatisticsMedicalEventTypeCount";
//        String resultStr = "";
//        try {
//            Map<String, Object> params = new HashMap<>();
//            resultStr = HttpClientUtil.doGet(comUrl + url, params, username, password);
//            return toModel(resultStr, ListResult.class);
//        } catch (Exception e) {
//            LogService.getLogger(com.yihu.ehr.resource.controller.ResourceInterfaceController.class).error(e.getMessage());
//        }
//        return null;
//    }
//
//    @RequestMapping(value = "/stasticReport/getStatisticsDemographicsAgeCount", method = RequestMethod.GET)
//    @ResponseBody
//    @ApiOperation(value = "全员人口个案库 - 年龄段人数统计", notes = "全员人口个案库 - 年龄段人数统计")
//    public Result getStatisticsDemographicsAgeCount( ) {
//        String url = "/stasticReport/getStatisticsDemographicsAgeCount";
//        String resultStr = "";
//        try {
//            Map<String, Object> params = new HashMap<>();
//            resultStr = HttpClientUtil.doGet(comUrl + url, params, username, password);
//            return toModel(resultStr, ListResult.class);
//        } catch (Exception e) {
//            LogService.getLogger(com.yihu.ehr.resource.controller.ResourceInterfaceController.class).error(e.getMessage());
//        }
//        return null;
//    }
//
//    @RequestMapping(value = "/stasticReport/getStatisticsUserCards", method = RequestMethod.GET)
//    @ResponseBody
//    @ApiOperation(value = "获取健康卡绑定量", notes = "获取健康卡绑定量")
//    public Result getStatisticsUserCards( ) {
//        String url = "/tj/getStatisticsUserCards";
//        String resultStr = "";
//        try {
//            Map<String, Object> params = new HashMap<>();
//            resultStr = HttpClientUtil.doGet(comUrl + url, params, username, password);
//            return toModel(resultStr, ListResult.class);
//        } catch (Exception e) {
//            LogService.getLogger(com.yihu.ehr.resource.controller.ResourceInterfaceController.class).error(e.getMessage());
//        }
//        return null;
//    }
//
//    @RequestMapping(value = "/stasticReport/getStatisticsDoctorByRoleType", method = RequestMethod.GET)
//    @ResponseBody
//    @ApiOperation(value = "按机构医生、护士、床位的统计", notes = "按机构医生、护士、床位的统计")
//    public Result getStatisticsDoctorByRoleType( ) {
//        String url = "/tj/getStatisticsDoctorByRoleType";
//        String resultStr = "";
//        try {
//            Map<String, Object> params = new HashMap<>();
//            resultStr = HttpClientUtil.doGet(comUrl + url, params, username, password);
//            return toModel(resultStr, ListResult.class);
//        } catch (Exception e) {
//            LogService.getLogger(com.yihu.ehr.resource.controller.ResourceInterfaceController.class).error(e.getMessage());
//        }
//        return null;
//    }
//
//    @RequestMapping(value = "/stasticReport/getStatisticsCityDoctorByRoleType", method = RequestMethod.GET)
//    @ResponseBody
//    @ApiOperation(value = "全市医生、护士、床位的统计", notes = "全市医生、护士、床位的统计")
//    public Result getStatisticsCityDoctorByRoleType( ) {
//        String url = "/tj/getStatisticsCityDoctorByRoleType";
//        String resultStr = "";
//        try {
//            Map<String, Object> params = new HashMap<>();
//            resultStr = HttpClientUtil.doGet(comUrl + url, params, username, password);
//            return toModel(resultStr, ListResult.class);
//        } catch (Exception e) {
//            LogService.getLogger(com.yihu.ehr.resource.controller.ResourceInterfaceController.class).error(e.getMessage());
//        }
//        return null;
//    }
//
//
//    @RequestMapping(value = "/stasticReport/getArchiveReportAll", method = RequestMethod.GET)
//    @ResponseBody
//    @ApiOperation(value = "获取一段时间内数据解析情况", notes = "获取一段时间内数据解析情况")
//    public Result getArchiveReport1(String startDate,String endDate,String orgCode) {
//        String url = "/stasticReport/getArchiveReportAll";
//        String resultStr = "";
//        try {
//            Map<String, Object> params = new HashMap<>();
//            params.put("startDate", startDate);
//            params.put("endDate", endDate);
//            params.put("orgCode", orgCode);
//            resultStr = HttpClientUtil.doGet(comUrl + url, params, username, password);
//            return toModel(resultStr, ListResult.class);
//        } catch (Exception e) {
//            LogService.getLogger(com.yihu.ehr.resource.controller.ResourceInterfaceController.class).error(e.getMessage());
//        }
//        return null;
//    }
//
//    @RequestMapping(value = "/stasticReport/getRecieveOrgCount", method = RequestMethod.GET)
//    @ResponseBody
//    @ApiOperation(value = "根据接收日期统计各个医院的数据解析情况", notes = "根据接收日期统计各个医院的数据解析情况")
//    public Result getRecieveOrgCount(String date) {
//        String url = "/stasticReport/getRecieveOrgCount";
//        String resultStr = "";
//        try {
//            Map<String, Object> params = new HashMap<>();
//            params.put("date", date);
//            resultStr = HttpClientUtil.doGet(comUrl + url, params, username, password);
//            return toModel(resultStr, ListResult.class);
//        } catch (Exception e) {
//            LogService.getLogger(com.yihu.ehr.resource.controller.ResourceInterfaceController.class).error(e.getMessage());
//        }
//        return null;
//    }
//
//    @RequestMapping(value = "/stasticReport/getArchivesInc", method = RequestMethod.GET)
//    @ResponseBody
//    @ApiOperation(value = "获取某天数据新增情况", notes = "获取某天数据新增情况")
//    public Result getArchivesInc(String date, String orgCode) {
//        String url = "/stasticReport/getArchivesInc";
//        String resultStr = "";
//        try {
//            Map<String, Object> params = new HashMap<>();
//            params.put("date", date);
//            params.put("orgCode", orgCode);
//            resultStr = HttpClientUtil.doGet(comUrl + url, params, username, password);
//            return toModel(resultStr, ListResult.class);
//        } catch (Exception e) {
//            LogService.getLogger(com.yihu.ehr.resource.controller.ResourceInterfaceController.class).error(e.getMessage());
//        }
//        return null;
//    }
//
//    @RequestMapping(value = "/stasticReport/getArchivesFull", method = RequestMethod.GET)
//    @ResponseBody
//    @ApiOperation(value = "完整性", notes = "完整性")
//    public Result getArchivesFull(String startDate, String endDate, String orgCode) {
//        String url = "/stasticReport/getArchivesFull";
//        String resultStr = "";
//        try {
//            Map<String, Object> params = new HashMap<>();
//            params.put("startDate", startDate);
//            params.put("endDate", endDate);
//            params.put("orgCode", orgCode);
//            resultStr = HttpClientUtil.doGet(comUrl + url, params, username, password);
//            return toModel(resultStr, ListResult.class);
//        } catch (Exception e) {
//            LogService.getLogger(com.yihu.ehr.resource.controller.ResourceInterfaceController.class).error(e.getMessage());
//        }
//        return null;
//    }
//
//    @RequestMapping(value = "/stasticReport/getArchivesTime", method = RequestMethod.GET)
//    @ResponseBody
//    @ApiOperation(value = "及时性", notes = "及时性")
//    public Result getArchivesTime(String startDate, String endDate, String orgCode) {
//        String url = "/stasticReport/getArchivesTime";
//        String resultStr = "";
//        try {
//            Map<String, Object> params = new HashMap<>();
//            params.put("startDate", startDate);
//            params.put("endDate", endDate);
//            params.put("orgCode", orgCode);
//            resultStr = HttpClientUtil.doGet(comUrl + url, params, username, password);
//            return toModel(resultStr, ListResult.class);
//        } catch (Exception e) {
//            LogService.getLogger(com.yihu.ehr.resource.controller.ResourceInterfaceController.class).error(e.getMessage());
//        }
//        return null;
//    }
//
//    @RequestMapping(value = "/stasticReport/getDataSetCount", method = RequestMethod.GET)
//    @ResponseBody
//    @ApiOperation(value = "获取数据集数量", notes = "获取数据集数量")
//    public Result getDataSetCount(String date, String orgCode) {
//        String url = "/stasticReport/getDataSetCount";
//        String resultStr = "";
//        try {
//            Map<String, Object> params = new HashMap<>();
//            params.put("date", date);
//            params.put("orgCode", orgCode);
//            resultStr = HttpClientUtil.doGet(comUrl + url, params, username, password);
//            return toModel(resultStr, ListResult.class);
//        } catch (Exception e) {
//            LogService.getLogger(com.yihu.ehr.resource.controller.ResourceInterfaceController.class).error(e.getMessage());
//        }
//        return null;
//    }
//
//    @RequestMapping(value = "/stasticReport/getArchivesRight", method = RequestMethod.GET)
//    @ResponseBody
//    @ApiOperation(value = "准确性", notes = "准确性")
//    public Result getArchivesRight(String startDate, String endDate, String orgCode) {
//        String url = "/stasticReport/getArchivesRight";
//        String resultStr = "";
//        try {
//            Map<String, Object> params = new HashMap<>();
//            params.put("startDate", startDate);
//            params.put("endDate", endDate);
//            params.put("orgCode", orgCode);
//            resultStr = HttpClientUtil.doGet(comUrl + url, params, username, password);
//            return toModel(resultStr, ListResult.class);
//        } catch (Exception e) {
//            LogService.getLogger(com.yihu.ehr.resource.controller.ResourceInterfaceController.class).error(e.getMessage());
//        }
//        return null;
//    }
//}

+ 272 - 0
svr/svr-basic/src/main/java/com/yihu/jw/basic/agadmin/controller/resource/RsResourceCategoryController.java

@ -0,0 +1,272 @@
package com.yihu.jw.basic.agadmin.controller.resource;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.jw.basic.resource.model.RsCategoryTypeTreeModel;
import com.yihu.jw.basic.resource.service.RsResourceCategoryService;
import com.yihu.jw.entity.ehr.id.BizObject;
import com.yihu.jw.entity.ehr.resource.RsResourceCategory;
import com.yihu.jw.restmodel.ehr.resource.MRsCategory;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.ListEnvelop;
import com.yihu.jw.restmodel.web.ObjEnvelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import com.yihu.jw.util.http.HttpClientUtil;
import io.swagger.annotations.Api;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * 视图分类控制器
 * Created by AndyCai on 2015/12/14.
 */
@RequestMapping("/rscategory")
@RestController
@Api( tags = {"网关-资源分类"})
public class RsResourceCategoryController extends EnvelopRestEndpoint {
    @Autowired
    private RsResourceCategoryService rsCategoryService;
    //获取TreeData 用于初始页面显示嵌套model
    @RequestMapping("/getTreeGridData")
    public Envelop getTreeGridData(String codeName) throws Exception{
        ListEnvelop envelop = new ListEnvelop();
        //获取到的顶级cda类别集合
        String userResource = "*";
        String name = codeName;
        List<RsResourceCategory> categoryList;
        if(userResource.equals("*")) {
            categoryList = rsCategoryService.getRsCategoryByPid("");
        }else {
            categoryList = rsCategoryService.findByCodeAndPid("derived", "");
        }
        //顶级类别中符合条件的类别集合
        List<RsResourceCategory> mRsCategoriesSome = new ArrayList<>();
        //顶级类别中不符合条件的类别集合
        List<RsResourceCategory> mRsCategoriesOthers = new ArrayList<>();
        if (categoryList == null || categoryList.size() == 0){
            envelop.setStatus(-1);
            envelop.setMessage("没有匹配条件的资源类别!");
            return envelop;
        }
        List<RsCategoryTypeTreeModel> treeList = new ArrayList<>();
        if(StringUtils.isEmpty(name)){
            treeList = getRsCategoryTreeModelChild(categoryList);
            envelop.setDetailModelList(treeList);
            return envelop;
        }
        for(RsResourceCategory mRsCategory : categoryList){
            if(mRsCategory.getName().contains(name)){
                mRsCategoriesSome.add(mRsCategory);
                continue;
            }
            mRsCategoriesOthers.add(mRsCategory);
        }
        if (mRsCategoriesSome.size() != 0){
            treeList.addAll(getRsCategoryTreeModelChild(mRsCategoriesSome));
        }
        treeList .addAll(getRsCategoryTreeModelByName(mRsCategoriesOthers, name));
        envelop.setDetailModelList(treeList);
        return envelop;
    }
    /**
     *
     * 根据父级信息获取全部的子级信息(树形model)
     * @param info 父级信息
     * @return 全部子级信息
     */
    private List<RsCategoryTypeTreeModel> getRsCategoryTreeModelChild(List<RsResourceCategory> info) {
        List<RsCategoryTypeTreeModel> treeInfo = new ArrayList<>();
        for (int i = 0; i < info.size(); i++) {
            RsResourceCategory typeInfo = info.get(i);
            RsCategoryTypeTreeModel tree = convertToModel(typeInfo, RsCategoryTypeTreeModel.class);
            List<RsResourceCategory> categoryListChild = rsCategoryService.getRsCategoryByPid(typeInfo.getId());
            List<RsCategoryTypeTreeModel> listChildTree = getRsCategoryTreeModelChild(categoryListChild);
            tree.setChildren(listChildTree);
            treeInfo.add(tree);
        }
        return treeInfo;
    }
    /**
     * 递归不满足的父级类别集合的子集中满足条件TreeModel集合的方法
     * @param mRsCategories 不符合的父级类别的集合
     * @param name
     * @return
     */
    private List<RsCategoryTypeTreeModel> getRsCategoryTreeModelByName(List<RsResourceCategory> mRsCategories, String name) throws ParseException {
        //结构:treeList 包含treeModel,treeModel包含listOfParent
        List<RsCategoryTypeTreeModel> treeList = new ArrayList<>();
        for(RsResourceCategory mRsCategory:mRsCategories){
            List<RsCategoryTypeTreeModel> childList = new ArrayList<>();
            RsCategoryTypeTreeModel treeModel = convertToModel(mRsCategory,RsCategoryTypeTreeModel.class);
            String pid = mRsCategory.getId();
            //获取所有下一级cda类别
            List<RsResourceCategory> listAll = rsCategoryService.getRsCategoryByPid(pid);
            if(listAll.size() == 0){
                continue;
            }
            //获取所有下一级符合要求的资源类别
            String filters ="pid="+pid+";name?"+name;
            //modify by cws
            List<RsResourceCategory> listSome = rsCategoryService.search(filters);
            //List<MRsCategory> listSome = (List<MRsCategory>)responseEntity.getBody();
            if(listSome.size()!=0){
                childList.addAll(getRsCategoryTreeModelChild(listSome));
            }
            //取剩下不符合要求的进行递归
            listAll.removeAll(listSome);
            if(listAll.size() != 0){
                childList.addAll(getRsCategoryTreeModelByName(listAll, name));
            }
            if(childList.size() != 0){
                treeModel.setChildren(childList);
                treeList.add(treeModel);
            }
        }
        return treeList;
    }
    /**
     * 新增或者更新
     * @param dataJson
     * @return
     */
    @RequestMapping("/saveCateType")
    public Envelop SaveCdaType(String dataJson) {
        Map<String,Object> params = new HashMap<>();
        String url = "/resources/category/update";
        try {
            RsResourceCategory rsCategory = toEntity(dataJson, RsResourceCategory.class);
            if(StringUtils.isEmpty(rsCategory.getName())){
                return failed("类别名称不能为空!");
            }
            params.put("resourceCategory",dataJson);
            if(StringUtils.isNotBlank(rsCategory.getId())) {
                rsCategoryService.createOrUpdRsCategory(rsCategory);
            }else{
                rsCategory.setId(getObjectId(BizObject.ResourceCategory));
                rsCategoryService.createOrUpdRsCategory(rsCategory);
            }
            return ObjEnvelop.getSuccess("新增成功",rsCategory);
        } catch (Exception ex){
            ex.printStackTrace();
            return failed("操作失败");
        }
    }
    /**
     * 删除
     * @param id
     * @return
     */
    @RequestMapping("/delteCateTypeInfo")
    public Envelop delteCdaTypeInfo(String id) {
        Envelop result = new Envelop();
        if (StringUtils.isEmpty(id)){
            return failed("请选择要删除的数据");
        }
        try{
            String url = "/resources/category/" + id;
            rsCategoryService.deleteRsCategory(id);
            return success("删除成功");
        }catch (Exception ex){
            ex.printStackTrace();
            return failed(ERR_SYSTEM_DES);
        }
    }
    /**
     * 删除辅助接口,如有下级分类,前端给出不可删除警告
     * @param id
     * @return
     */
    @RequestMapping("/getCateTypeByPid")
    public Envelop getCateTypeByPid(String id) {
        Envelop envelop = new Envelop();
        ObjectMapper mapper = new ObjectMapper();
        Map<String,Object> params = new HashMap<>();
        String url = "/resources/categories/pid/";
        try {
            List<RsResourceCategory> categoryList = rsCategoryService.getRsCategoryByPid(id);
            return ListEnvelop.getSuccess("查询成功",categoryList);
        } catch (Exception ex) {
            ex.printStackTrace();
            return failed(ERR_SYSTEM_DES);
        }
    }
    /**
     * 根据ID查找分类信息
     * @param strIds
     * @return
     */
    @RequestMapping("/getCateTypeById")
    public ObjEnvelop getCdaTypeById(String strIds) {
        Envelop envelop = new Envelop();
        String url = "/resources/category/" + strIds;
        try{
            RsResourceCategory rsResourceCategory = rsCategoryService.getRsCategoryById(strIds);
            return ObjEnvelop.getSuccess("查询成功",rsResourceCategory);
        } catch (Exception e){
            e.printStackTrace();
            return ObjEnvelop.getError(ERR_SYSTEM_DES);
        }
    }
    /**
     * 获取可以作为父类别的cate类别列表
     * @param strId
     * @return
     */
    @RequestMapping("/getCateTypeExcludeSelfAndChildren")
    public Envelop getCdaTypeExcludeSelfAndChildren(String strId) {
        //页面新增修改访问的是同个接口
        Envelop envelop = new Envelop();
        try {
            String urlGetAll =  "/resources/categories/all";
            Map<String,Object> params = new HashMap<>();
            List<RsResourceCategory> resources;
            if(!StringUtils.isEmpty(strId)){
                List<RsResourceCategory> parentTypes = rsCategoryService.getRsCategoryByPid(strId);
                String childrenIds = getChildIncludeSelfByParentsAndChildrenIds(parentTypes,strId+",");   //递归获取
                resources = rsCategoryService.getCateTypeExcludeSelfAndChildren(childrenIds);
            }else {
                resources = rsCategoryService.search("");
            }
            return ListEnvelop.getSuccess("查询成功",resources);
        } catch (Exception ex){
            ex.printStackTrace();
            return failed(ERR_SYSTEM_DES);
        }
    }
    private String getChildIncludeSelfByParentsAndChildrenIds(List<RsResourceCategory> parentTypes,String childrenIds) {
        for (int i = 0; i < parentTypes.size(); i++) {
            RsResourceCategory typeInfo = parentTypes.get(i);
            childrenIds+=typeInfo.getId()+",";
            List<RsResourceCategory> listChild = rsCategoryService.getRsCategoryByPid(typeInfo.getId());
            if(listChild.size()>0){
                childrenIds = getChildIncludeSelfByParentsAndChildrenIds(listChild,childrenIds);
            }
        }
        return childrenIds;
    }
}

+ 171 - 0
svr/svr-basic/src/main/java/com/yihu/jw/basic/agadmin/controller/resource/SchemeAdaptController.java

@ -0,0 +1,171 @@
//package com.yihu.jw.basic.agadmin.controller.resource;
//
//import com.fasterxml.jackson.databind.ObjectMapper;
//import com.yihu.ehr.constants.ServiceApi;
//
//import org.apache.commons.lang3.StringUtils;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.ui.Model;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.ResponseBody;
//
//import java.util.HashMap;
//import java.util.Map;
//
///**
// * Created by linz on 2016/5/23.
// */
//
//@RestController
//@RequestMapping("/schemeAdapt")
//public class SchemeAdaptController extends EnvelopRestEndpoint {
//
//
//    @Value("${service-gateway.username}")
//    private String username;
//    @Value("${service-gateway.password}")
//    private String password;
//    @Value("${service-gateway.url}")
//    private String comUrl;
//
//    @Autowired
//    private ObjectMapper objectMapper;
//
//    public static final String SCHEME_PLATFORM="1";//平台类型
//    public static final String SCHEME_TP="2";//第三方
//
//
//    @RequestMapping("/initial")
//    public String resourceSchemeInitial(Model model){
//        model.addAttribute("contentPage","/resource/adaptview/schemeAdapt");
//        return "pageView";
//    }
//
//    @RequestMapping("/list")
//    @ResponseBody
//    public Object searchAdaptSchemes(String searchNm, String type, int page, int rows){
//        Map<String, Object> params = new HashMap<String, Object>();
//        StringBuffer stringBuffer = new StringBuffer();
//        if (!StringUtils.isEmpty(searchNm)) {
//            stringBuffer.append("code?").append(searchNm).append(" g1;").append("name?").append(searchNm).append(" g1;");
//        }
//        if (!StringUtils.isEmpty(type)) {
//            stringBuffer.append("type=").append(type).append(";");
//        }
//        params.put("filters", "");
//        params.put("page", page);
//        params.put("size", rows);
//        String filters = stringBuffer.toString();
//        if(filters.lastIndexOf(";")>0){
//            filters = filters.substring(0,filters.lastIndexOf(";"));
//        }
//        if (!StringUtils.isEmpty(filters)) {
//            params.put("filters", filters);
//        }
//        String url = ServiceApi.Adaptions.Schemes;
//        String result="";
//        try {
//            result = HttpClientUtil.doGet(comUrl + url, params, username, password);
//            return result;
//        } catch (Exception e){
//            e.printStackTrace();
//            return failed("内部服务请求失败");
//        }
//    }
//    /**
//     * 资源适配:新增、修改窗口
//     * @param model
//     * @param mode
//     * @return
//     */
//    @RequestMapping("gotoModify")
//    public Object adapterSchemeTemplate(EnvelopRestEndpointString id,String mode) {
//        String resultStr = "";
//        Envelop result = new Envelop();
//        Map<String, Object> params = new HashMap<>();
//        params.put("id",id);
//        try {
//            if(mode.equals("view") || mode.equals("modify")) {
//                String url = "/adaptions/schemas/"+id;
//                resultStr = HttpClientUtil.doGet(comUrl + url, params, username, password);
//                model.addAttribute("rs", "success");
//            }
//            model.addAttribute("info", StringUtils.isEmpty(resultStr)?toJson(result):resultStr);
//            model.addAttribute("mode",mode);
//            model.addAttribute("contentPage","/resource/adaptview/schemeAdaptDialog");
//            return "emptyView";
//        } catch (Exception e) {
//            e.printStackTrace();
//            return failed("内部服务请求失败");
//        }
//    }
//
//    /**
//     * 资源适配:新增、修改窗口
//     * @param model
//     * @param dataJson
//     * @return
//     */
//    @RequestMapping("save")
//    @ResponseBody
//    public Object updateSchemeAdpat(Model model,String dataJson) {
//        Envelop result = new Envelop();
//        String resultStr = "";
//        Map<String, Object> params = new HashMap<>();
//        try{
//        MRsAdapterSchema mRsAdapterSchema = objectMapper.readValue(dataJson,MRsAdapterSchema.class);
//        if (StringUtils.isEmpty(mRsAdapterSchema.getType())) {
//            result.setSuccessFlg(false);
//            result.setErrorMsg("方案类别不能为空!");
//            return result;
//        }
//        if (StringUtils.isEmpty(mRsAdapterSchema.getName())) {
//            result.setSuccessFlg(false);
//            result.setErrorMsg("方案名称不能为空!");
//            return result;
//        }
//        if (StringUtils.isEmpty(mRsAdapterSchema.getCode())) {
//            result.setSuccessFlg(false);
//            result.setErrorMsg("方案编码不能为空!");
//            return result;
//        }
//        if (StringUtils.isEmpty(mRsAdapterSchema.getAdapterVersion())&&this.SCHEME_PLATFORM.equals(mRsAdapterSchema.getType())) {
//            result.setSuccessFlg(false);
//            result.setErrorMsg("版本号不能为空!");
//            return result;
//        }
//        if(StringUtils.isEmpty(mRsAdapterSchema.getAdapterVersion())&&this.SCHEME_TP.equals(mRsAdapterSchema.getType())){
//            result.setSuccessFlg(false);
//            result.setErrorMsg("标准名称不能为空!");
//            return result;
//        }
//        params.put("adapterSchema",toJson(mRsAdapterSchema));
//        String url = ServiceApi.Adaptions.Schemes;
//        if(StringUtils.isNotBlank(mRsAdapterSchema.getId())){
//            resultStr = HttpClientUtil.doPut(comUrl + url, params, username, password);
//        }else{
//            resultStr = HttpClientUtil.doPost(comUrl + url, params, username, password);
//        }
//        return resultStr;
//        } catch(Exception ex){
//            ex.printStackTrace();
//            return failed("内部服务请求失败");
//        }
//    }
//
//    @RequestMapping("delete")
//    @ResponseBody
//    public Object deleteScheme(String schemeId) {
//        Envelop result = new Envelop();
//        Map<String, Object> params = new HashMap<String, Object>();
//        String url = "/adaptions/schemas/"+schemeId;
//        try{
//           String resultStr =  HttpClientUtil.doDelete(comUrl+url,params,username,password);
//           return resultStr;
//        } catch(Exception ex){
//            ex.printStackTrace();
//            return failed("内部服务请求失败");
//        }
//    }
//}

+ 107 - 0
svr/svr-basic/src/main/java/com/yihu/jw/basic/agadmin/controller/resource/SchemeAdaptDataSetController.java

@ -0,0 +1,107 @@
//package com.yihu.jw.basic.agadmin.controller.resource;
//
//
//import com.yihu.ehr.constants.ServiceApi;
//
//import com.yihu.jw.restmodel.web.Envelop;
//import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
//import com.yihu.jw.util.common.LogService;
//import com.yihu.jw.util.http.HttpClientUtil;
//import org.apache.commons.lang3.StringUtils;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.ui.Model;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.ResponseBody;
//import org.springframework.web.bind.annotation.RestController;
//
//import java.util.HashMap;
//import java.util.Map;
//
///**
// * 资源适配管理方案适配管理
// * Created by linz on 2015/11/1.
// */
//
//@RequestMapping("/schemeAdaptDataSet")
//@RestController
//public class SchemeAdaptDataSetController extends EnvelopRestEndpoint {
//
//    @RequestMapping("/initial")
//    public String gotoList(Model model,String dataModel,String version){
//        model.addAttribute("dataModel",dataModel);
//        model.addAttribute("version",version);
//        String url = "/adaptions/schemas/"+dataModel;
//        String resultStr = "";
//        Envelop result = new Envelop();
//        Map<String, Object> params = new HashMap<>();
//        try {
//            resultStr = HttpClientUtil.doGet(comUrl + url, params, username, password);
//        }catch (Exception e){
//            LogService.getLogger(SchemeAdaptDataSetController.class).error(e.getMessage());
//            model.addAttribute("rs", "error");
//        }
//        model.addAttribute("adapterScheme",resultStr);
//        model.addAttribute("contentPage","/resource/adaptview/dataSet/grid");
//        return "pageView";
//    }
//
//    @RequestMapping("/metaDataList")
//    @ResponseBody
//    public Object searchmetaData(String adapterSchemeId, String code, int page, int rows) {
//        Envelop envelop = new Envelop();
//        Map<String, Object> params = new HashMap<String, Object>();
//        StringBuffer stringBuffer = new StringBuffer();
//        if(StringUtils.isNotBlank(adapterSchemeId)){
//            stringBuffer.append("schemeId=").append(adapterSchemeId).append(";");
//        }else{
//            envelop.setSuccessFlg(false);
//            envelop.setErrorMsg("请选择资源适配方案");
//        }
//        if(StringUtils.isNotBlank(code)){
//            stringBuffer.append("srcDatasetCode=").append(code).append(";");
//        }
//        params.put("filters", "");
//        params.put("page", page);
//        params.put("size", rows);
//        String filters = stringBuffer.toString();
//        if(filters.lastIndexOf(";")>0){
//            filters = filters.substring(0,filters.lastIndexOf(";"));
//        }
//        if (!StringUtils.isEmpty(filters)) {
//            params.put("filters", filters);
//        }
//        try {
//            String resultStr ="";
//            String url = ServiceApi.Adaptions.SchemaMetadataList;
//            resultStr = HttpClientUtil.doGet(comUrl + url, params, username, password);
//            return resultStr;
//        } catch (Exception e) {
//            e.printStackTrace();
//            return failed(ERR_SYSTEM_DES);
//        }
//    }
//
//
//    /**
//     * 资源适配:新增、修改窗口
//     * @param model
//     * @param dataJson
//     * @return
//     */
//    @RequestMapping("save")
//    @ResponseBody
//    public Object updatesSchemeAdpatDataset(Model model,String dataJson) {
//        Envelop result = new Envelop();
//        String resultStr = "";
//        Map<String, Object> params = new HashMap<>();
//        try{
//            params.put("adapterMetadata",dataJson);
//            String url = ServiceApi.Adaptions.SchemaMetadataList;
//            resultStr = HttpClientUtil.doPut(comUrl + url, params, username, password);
//            return resultStr;
//        }catch(Exception ex){
//            ex.printStackTrace();
//            return failed(ERR_SYSTEM_DES);
//        }
//      }
//    }

+ 85 - 0
svr/svr-basic/src/main/java/com/yihu/jw/basic/agadmin/controller/resource/SchemeAdaptDictController.java

@ -0,0 +1,85 @@
//package com.yihu.jw.basic.agadmin.controller.resource;
//
//
//import com.yihu.jw.restmodel.web.Envelop;
//import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
//import com.yihu.jw.util.http.HttpClientUtil;
//import org.apache.commons.lang3.StringUtils;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.ui.Model;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.ResponseBody;
//import org.springframework.web.bind.annotation.RestController;
//
//import java.util.HashMap;
//import java.util.Map;
//
///**
// * 资源适配管理方案适配管理
// * Created by linz on 2015/11/1.
// */
//
//@RequestMapping("/schemeAdaptDict")
//@RestController
//public class SchemeAdaptDictController extends EnvelopRestEndpoint {
//
//    @RequestMapping("/dictlist")
//    @ResponseBody
//    public Object searchmetaData(String adapterSchemeId, String code, int page, int rows) {
//        Envelop envelop = new Envelop();
//        Map<String, Object> params = new HashMap<String, Object>();
//        StringBuffer stringBuffer = new StringBuffer();
//        if(StringUtils.isNotBlank(adapterSchemeId)){
//            stringBuffer.append("schemeId=").append(adapterSchemeId).append(";");
//        }else{
//            envelop.setSuccessFlg(false);
//            envelop.setErrorMsg("请选择资源适配方案");
//            return envelop;
//        }
//        if(StringUtils.isNotBlank(code)){
//            stringBuffer.append("srcDictCode=").append(code).append(" g1").append(";");
//        }
//        params.put("filters", "");
//        params.put("page", page);
//        params.put("size", rows);
//        String filters = stringBuffer.toString();
//        if(filters.lastIndexOf(";")>0){
//            filters = filters.substring(0,filters.lastIndexOf(";"));
//        }
//        if (!StringUtils.isEmpty(filters)) {
//            params.put("filters", filters);
//        }
//        try {
//            String resultStr ="";
//            String url = "/adaptions/adapter/dictionaries";
//            resultStr = HttpClientUtil.doGet(comUrl + url, params, username, password);
//            return resultStr;
//        } catch (Exception e) {
//            e.printStackTrace();
//            return failed(ERR_SYSTEM_DES);
//        }
//    }
//
//    /**
//     * 资源适配:新增、修改窗口
//     * @param model
//     * @param dataJson
//     * @return
//     */
//    @RequestMapping("/save")
//    @ResponseBody
//    public Object updatesSchemeAdpatDict(Model model,String dataJson) {
//        Envelop result = new Envelop();
//        String resultStr = "";
//        Map<String, Object> params = new HashMap<>();
//        try{
//            params.put("jsonData",dataJson);
//            String url = "/adaptions/adapter/dictionaries";
//            resultStr = HttpClientUtil.doPut(comUrl + url, params, username, password);
//            return resultStr;
//        } catch(Exception ex){
//            ex.printStackTrace();
//            return failed(ERR_SYSTEM_DES);
//        }
//    }
//}

+ 418 - 0
svr/svr-basic/src/main/java/com/yihu/jw/basic/agadmin/service/ResourceBrowseControllerService.java

@ -0,0 +1,418 @@
package com.yihu.jw.basic.agadmin.service;
import com.fasterxml.jackson.core.type.TypeReference;
import com.yihu.ehr.constants.ServiceApi;
import com.yihu.jw.basic.quota.service.QuotaService;
import com.yihu.jw.basic.resource.model.RsCategoryTypeTreeModel;
import com.yihu.jw.basic.resource.model.RsResourcesModel;
import com.yihu.jw.basic.resource.service.ResourceBrowseService;
import com.yihu.jw.basic.resource.service.RsResourceCategoryService;
import com.yihu.jw.basic.resource.service.RsResourceQuotaService;
import com.yihu.jw.basic.resource.service.RsResourceService;
import com.yihu.jw.entity.ehr.resource.RsResource;
import com.yihu.jw.entity.ehr.resource.RsResourceCategory;
import com.yihu.jw.entity.ehr.resource.RsResourceQuota;
import com.yihu.jw.restmodel.ehr.resource.MRsCategory;
import com.yihu.jw.restmodel.ehr.resource.MRsColumnsModel;
import com.yihu.jw.restmodel.ehr.resource.MRsResources;
import com.yihu.jw.restmodel.ehr.tj.MTjQuotaModel;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.ListEnvelop;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.apache.commons.collections.map.HashedMap;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.*;
/**
 * Created by wq on 2016/5/30.
 */
@Service
public class ResourceBrowseControllerService {
    @Autowired
    private RsResourceService rsResourceService;
    @Autowired
    private RsResourceCategoryService rsCategoryService;
    @Autowired
    private ResourceBrowseService resourceBrowseService;
    @Autowired
    private RsResourceQuotaService resourceQuotaService;
    @Autowired
    private QuotaService quotaService;
//    @ApiOperation("获取档案资源分类")
//    @RequestMapping(value = ServiceApi.Resources.ResourceBrowseCategories, method = RequestMethod.GET)
    public Envelop getCategories(String id){
        List<RsCategoryTypeTreeModel> rsCategoryTypeTreeModelList = new ArrayList<>();
        try {
            //查询资源分类
            List<RsResourceCategory> resources = rsCategoryService.search("");
            for (RsResourceCategory mRsCategory:resources){
                RsCategoryTypeTreeModel rsCategoryModel = new RsCategoryTypeTreeModel();
                rsCategoryModel.setId(mRsCategory.getId());
                rsCategoryModel.setPid(mRsCategory.getPid());
                rsCategoryModel.setName(mRsCategory.getName());
                rsCategoryTypeTreeModelList.add(rsCategoryModel);
                List<RsResource> resourcesModelList = rsResourceService.search(null,"categoryId=" + mRsCategory.getId(),null,1,999);
                if (resourcesModelList.size() > 0) {
                    for (RsResource resourcesModel : resourcesModelList) {
                        RsCategoryTypeTreeModel rsCategoryTypeModel = new RsCategoryTypeTreeModel();
                        rsCategoryTypeModel.setId(resourcesModel.getId());
                        rsCategoryTypeModel.setPid(mRsCategory.getId());
                        rsCategoryTypeModel.setResourceIds(resourcesModel.getId());
                        rsCategoryTypeModel.setName(resourcesModel.getName());
                        rsCategoryTypeModel.setResourceCode(resourcesModel.getCode());
                        rsCategoryTypeTreeModelList.add(rsCategoryTypeModel);
                    }
                }
            }
            return ListEnvelop.getSuccess("",rsCategoryTypeTreeModelList);
        } catch (Exception e) {
            e.printStackTrace();
            return Envelop.getError("获取档案资源分类失败");
        }
    }
//    @ApiOperation("档案资源数据元结构")
//    @RequestMapping(value = ServiceApi.Resources.ResourceBrowseResourceMetadata, method = RequestMethod.GET)
    public List<MRsColumnsModel> getResourceMetadata(String resourcesCode,String roleId) throws Exception {
        List<MRsColumnsModel> rsBrowseModelList = resourceBrowseService.getResourceMetadata(resourcesCode, roleId);
        return rsBrowseModelList;
    }
//    @ApiOperation("档案资源浏览")
//    @RequestMapping(value = ServiceApi.Resources.ResourceBrowseResourceData, method = RequestMethod.GET)
    public Envelop getResourceData(String resourcesCode,String roleId,String orgCode,String areaCode,
                                   String queryCondition,Integer page,Integer size,String top) throws Exception {
        RsResource rsResource = rsResourceService.getResourceByCode(resourcesCode);
        if (!rsResource.getRsInterface().equals("getQuotaData")){//接口 来自接口统计
            return resourceBrowseService.getResourceData(resourcesCode, roleId, orgCode, areaCode, queryCondition, page, size);
        } else {
            String quotaCodeStr = "";
            List<RsResourceQuota> list = resourceQuotaService.search("resourceId=" + rsResource.getId());
            if (list != null && list.size() > 0) {
                for (RsResourceQuota resourceQuotaModel : list) {
                    quotaCodeStr = quotaCodeStr + resourceQuotaModel.getQuotaCode() + ",";
                }
            }
            List<Map<String, Object>> resultList = quotaService.getQuotaReportTwoDimensionalTable(quotaCodeStr,null,rsResource.getDimension(),top);
            return ListEnvelop.getSuccess("",resultList);
        }
    }
//    @ApiOperation("档案资源浏览细表数据")
//    @RequestMapping(value = ServiceApi.Resources.ResourceBrowseResourceSubData, method = RequestMethod.GET)
//    public Envelop findSubDateByRowKey(
//            @ApiParam(name = "rowKey", value = "主表rowKey", required = true)
//            @RequestParam(value = "rowKey") String rowKey,
//            @ApiParam(name = "version", value = "版本", required = true)
//            @RequestParam(value = "version") String version){
//        return  resourceBrowseClient.findSubDateByRowKey(rowKey, version);
//    }
//    @ApiOperation("指标视图查询列表浏览")
//    @RequestMapping(value = ServiceApi.Resources.ResourceBrowseQuotaResourceData, method = RequestMethod.GET)
//    public Envelop getQuotaResourceData(
//            @ApiParam("资源Id")
//            @RequestParam String resourcesId,
//            @ApiParam("机构代码(预留参数)")
//            @RequestParam(required = false) String orgCode,
//            @ApiParam("查询条件")
//            @RequestParam(required = false) String queryCondition,
//            @ApiParam(name = "userOrgList" ,value = "用户拥有机构权限" )
//            @RequestParam(value = "userOrgList" , required = false) List<String> userOrgList) throws Exception {
//        Envelop envelop = new Envelop();
//        String [] quotaCodeArr = null;
//        //获取资源关联指标
//        List<ResourceQuotaModel> rqmList = resourceQuotaClient.getByResourceId(resourcesId);
//        if (rqmList == null || rqmList.size() <= 0) {
//            envelop.setErrorMsg("关联指标为空");
//            return envelop;
//        }
//        //获取资源默认查询条件
//        String query = rsResourceDefaultQueryClient.getByResourceId(resourcesId);
//        //拼接指标code字符串作为维度交集查询参数
//        String quotaCodes = "";
//        quotaCodeArr = new String [rqmList.size()];
//        List<Map<String, String>> objList = new ArrayList<Map<String, String>>();
//        for (int i = 0; i< rqmList.size(); i ++) {
//            ResourceQuotaModel resourceQuotaModel = rqmList.get(i);
//            MTjQuotaModel tjQuotaModel = tjQuotaClient.getById((long) resourceQuotaModel.getQuotaId());
//            quotaCodeArr[i] = tjQuotaModel.getCode();
//            quotaCodes += tjQuotaModel.getCode() + ",";
//        }
//        //拼接交集维度字符串作为查询参数
//        String dimension = "";
//        if (StringUtils.isEmpty(quotaCodes)) {
//            envelop.setErrorMsg("指标编码有误");
//            return envelop;
//        }
//        //查询多个指标交集维度
//        List<Map<String, String>> qsdList = tjQuotaSynthesizeQueryClient.getTjQuotaSynthesiseDimension(quotaCodes.substring(0, quotaCodes.length() - 1));
//        if (qsdList == null || qsdList.size() <= 0) {
//            envelop.setSuccessFlg(true);
//            return envelop;
//        }
//        for (Map<String, String> temp : qsdList) {
//            for (String codeStr : temp.keySet()) {
//                if (quotaCodes.contains(codeStr)) {
//                    //添加键值对应列表
//                    Map<String, String> objMap = new HashMap<String, String>();
//                    objMap.put("key", temp.get(codeStr));
//                    objMap.put("name", temp.get("name"));
//                    objList.add(objMap);
//                    //结果总量参数
//                    dimension += temp.get(codeStr) + ";";
//                    break;
//                }
//            }
//        }
//        for (int i = 0; i< rqmList.size(); i ++) {
//            ResourceQuotaModel resourceQuotaModel = rqmList.get(i);
//            MTjQuotaModel tjQuotaModel = tjQuotaClient.getById((long) resourceQuotaModel.getQuotaId());
//            Map<String, String> objMap = new HashMap<String, String>();
//            objMap.put("key", tjQuotaModel.getCode());
//            objMap.put("name", tjQuotaModel.getName());
//            objList.add(objMap);
//        }
//        //依次获取指标统计不同维度结果总量
//        List<Envelop> envelopList = new ArrayList<Envelop>();
//        for (ResourceQuotaModel resourceQuotaModel : rqmList) {
//            Envelop envelop1;
//            //-----------------用户数据权限 start
//            String org = "";
//            if (userOrgList != null ){
//                if(!(userOrgList.size()==1 && userOrgList.get(0).equals("null")) ) {
//                    org = StringUtils.strip(String.join(",", userOrgList), "[]");
//                }
//            }
//            //-----------------用户数据权限 end
//            //判断是否启用默认查询条件
//            Map<String, Object> params  = new HashMap<>();
//            if (queryCondition == null || queryCondition.equals("{}")) {
//                boolean orgFlag = false;
//                for(Map<String, String> map:objList){
//                    for(String key :map.keySet()){
//                        if(map.get(key).equals("org")){
//                            orgFlag = true;
//                        }
//                    }
//                }
//                if(org.length()>0 && orgFlag){
//                    if( !StringUtils.isEmpty(query)){
//                        params  = objectMapper.readValue(query, new TypeReference<Map>() {});
//                    }
//                    params.put("org",org);
//                    query = objectMapper.writeValueAsString(params);
//                }
//                //获取指标统计不同维度结果数据
//                envelop1 = tjQuotaJobClient.getQuotaTotalCount(resourceQuotaModel.getQuotaId(), query, dimension.substring(0, dimension.length() - 1));
//                envelopList.add(envelop1);
//            } else {
//                if(org.length()>0){
//                    params  = objectMapper.readValue(queryCondition, new TypeReference<Map>() {});
//                    params.put("org",org);
//                    queryCondition = objectMapper.writeValueAsString(params);
//                }
//                envelop1 = tjQuotaJobClient.getQuotaTotalCount(resourceQuotaModel.getQuotaId(), queryCondition, dimension.substring(0, dimension.length() - 1));
//                envelopList.add(envelop1);
//            }
//        }
//        List<Map<String, Object>> resultList = new ArrayList<Map<String, Object>>();
//        //遍历数据集,拼装结果集
//        for (int i = 0; i < envelopList.size(); i ++ ) {
//            Envelop envelop1 = envelopList.get(i);
//            if (envelop1.getDetailModelList() != null) {
//                //遍历当前数据
//                for (Map<String, Object> tempMap1 : (List<Map<String, Object>>) envelop1.getDetailModelList()) {
//                    //判断是否已记录数据
//                    boolean isRecode = false;
//                    for (Map<String, Object> resultMap : resultList) {
//                        if (Arrays.equals(((List<String>) tempMap1.get("cloumns")).toArray(), ((List<String>) resultMap.get("cloumns")).toArray())) {
//                            isRecode = true;
//                        }
//                    }
//                    //未记录的数据
//                    if (!isRecode) {
//                        Map<String, Object> newMap = new HashMap<String, Object>();
//                        //初始化基本列名
//                        newMap.put("cloumns", tempMap1.get("cloumns"));
//                        //初始化为空数据
//                        for (int p = 0; p < i; p++) {
//                            newMap.put(quotaCodeArr[p], 0);
//                        }
//                        //当数据为最后一个数据集中的一个时
//                        if ((envelopList.size() - 1) == i) {
//                            newMap.put(quotaCodeArr[i], tempMap1.get("value"));
//                        } else {
//                            //与其他数据集进行对比
//                            for (int j = i + 1; j < envelopList.size(); j++) {
//                                //判断是否匹配
//                                boolean isMatch = false;
//                                Envelop envelop2 = envelopList.get(j);
//                                if (null != envelop2.getDetailModelList() && envelop2.getDetailModelList().size() > 0) {
//                                    for (Map<String, Object> tempMap2 : (List<Map<String, Object>>) envelop2.getDetailModelList()) {
//                                        if (Arrays.equals(((List<String>) tempMap1.get("cloumns")).toArray(), ((List<String>) tempMap2.get("cloumns")).toArray())) {
//                                            newMap.put(quotaCodeArr[i], tempMap1.get("value"));
//                                            newMap.put(quotaCodeArr[j], tempMap2.get("value"));
//                                            isMatch = true;
//                                        }
//                                    }
//                                }
//                                //未匹配到数据
//                                if (!isMatch) {
//                                    newMap.put(quotaCodeArr[i], tempMap1.get("value"));
//                                    newMap.put(quotaCodeArr[j], 0);
//                                }
//                            }
//                        }
//                        resultList.add(newMap);
//                    }
//                }
//            }
//
//        }
//        List<Map<String, Object>> finalList = new ArrayList<Map<String, Object>>();
//        String [] dimensionArr = dimension.split(";");
//        for (Map<String, Object> tempMap : resultList) {
//            List<String> colList = (List<String>)tempMap.get("cloumns");
//            Map<String, Object> finalMap = new HashMap<String, Object>();
//            for (int i = 0; i < colList.size(); i++) {
//                finalMap.put(dimensionArr[i], colList.get(i));
//            }
//            for (String key : tempMap.keySet()) {
//                if (!key.equals("cloumns")) {
//                    finalMap.put(key, tempMap.get(key));
//                }
//            }
//            finalList.add(finalMap);
//        }
//        envelop.setSuccessFlg(true);
//        envelop.setDetailModelList(finalList);
//        envelop.setObj(objList);
//        if (resultList != null) {
//            envelop.setTotalCount(resultList.size());
//        }
//        return envelop;
//    }
//
//    @ApiOperation("指标资源浏览数据检索条件获取")
//    @RequestMapping(value = ServiceApi.Resources.ResourceBrowseQuotaResourceParam, method = RequestMethod.GET)
//    public Envelop getStatisticsParam(
//            @ApiParam("资源Id")
//            @RequestParam String resourcesId){
//        Envelop envelop = new Envelop();
//        String [] quotaCodeArr = null;
//        //获取资源关联指标
//        List<ResourceQuotaModel> rqmList = resourceQuotaClient.getByResourceId(resourcesId);
//        if(rqmList == null || rqmList.size() <= 0) {
//            envelop.setErrorMsg("关联指标为空");
//            return envelop;
//        }
//        //拼接指标code字符串作为维度交集查询参数
//        String quotaCodes = "";
//        quotaCodeArr = new String [rqmList.size()];
//        List<Map<String, String>> objList = new ArrayList<Map<String, String>>();
//        for (int i = 0; i< rqmList.size(); i ++) {
//            ResourceQuotaModel resourceQuotaModel = rqmList.get(i);
//            MTjQuotaModel tjQuotaModel = tjQuotaClient.getById((long) resourceQuotaModel.getQuotaId());
//            quotaCodeArr[i] = tjQuotaModel.getCode();
//            quotaCodes += tjQuotaModel.getCode() + ",";
//        }
//        //拼接交集维度字符串作为查询参数
//        String dimensions = "";
//        if(StringUtils.isEmpty(quotaCodes)) {
//            envelop.setErrorMsg("指标编码有误");
//            return envelop;
//        }
//        List<Map<String, String>> qsdList = tjQuotaSynthesizeQueryClient.getTjQuotaSynthesiseDimension(quotaCodes.substring(0, quotaCodes.length() - 1));
//        if(qsdList == null || qsdList.size() <= 0) {
//            envelop.setSuccessFlg(true);
//            return envelop;
//        }
//        for(Map<String, String> temp : qsdList) {
//            for(String codeStr : temp.keySet()){
//                if(quotaCodes.contains(codeStr)) {
//                    //交集维度参数
//                    dimensions += temp.get(codeStr) + ",";
//                    break;
//                }
//            }
//        }
//        Map<String, Map<String, Object>> dataMap = tjQuotaSynthesizeQueryClient.getTjQuotaSynthesiseDimensionKeyVal(quotaCodeArr[0], dimensions);
//        if (dataMap != null) {
//            envelop.setSuccessFlg(true);
//            envelop.setObj(dataMap);
//        }
//        return envelop;
//    }
//
//    @RequestMapping(value = ServiceApi.Resources.ResourceBrowseTree, method = RequestMethod.GET)
//    @ApiOperation(value = "获取视图类别-数据集列表树")
//    public Envelop getResourceBrowseTree() {
//        Envelop envelop = new Envelop();
//        List<MRsResources> rsResources = new ArrayList<>();
//        List<RsCategoryTypeTreeModel> rsCategoryTypeTreeModelList=new ArrayList<>();
//        Map<String,String> map=new HashedMap();
//        //限定五大库
//        map.put("0dae002159535497b3865e129433e933","0dae002159535497b3865e129433e933");
//        map.put("0dae0021595354a8b3865e129433e934","0dae0021595354a8b3865e129433e934");
//        map.put("0dae0021595354c4b3865e129433e935","0dae0021595354c4b3865e129433e935");
//        map.put("0dae0021595354cfb3865e129433e936","0dae0021595354cfb3865e129433e936");
//        map.put("0dae0021595354d6b3865e129433e937","0dae0021595354d6b3865e129433e937");
//        //查询资源分类
//        List<MRsCategory> resources = resourcesCategoryClient.getAllCategories("");
//        RsCategoryTypeTreeModel rsCategoryModel;
//        for (MRsCategory mRsCategory:resources){
//            if(null!=map.get(mRsCategory.getId().toString())){
//                rsCategoryModel = new RsCategoryTypeTreeModel();
//                rsCategoryModel.setId(mRsCategory.getId());
//                rsCategoryModel.setPid(mRsCategory.getPid());
//                rsCategoryModel.setName(mRsCategory.getName());
//                //查询资源-数据集
//                ResponseEntity<List<MRsResources>> categoryResponseEntity = resourcesClient.queryResources("", "categoryId=" + mRsCategory.getId(), "", 1, 999, null, null);// TODO: 2016/5/30 测试数据15(无不分页查询)
//                rsResources = categoryResponseEntity.getBody();
//                if (rsResources.size() > 0) {
//                    List<RsResourcesModel> resourcesModelList = (List<RsResourcesModel>) convertToModels(rsResources, new ArrayList<RsResourcesModel>(rsResources.size()), RsResourcesModel.class, null);
//                    rsCategoryModel.setRsResourceslist(resourcesModelList);
//                }
//                rsCategoryTypeTreeModelList.add(rsCategoryModel);
//            }
//        }
//        //平台应用-角色组对象模型列表
//        envelop.setSuccessFlg(true);
//        envelop.setDetailModelList(rsCategoryTypeTreeModelList);
//        return envelop;
//    }
//
//    @RequestMapping(value = ServiceApi.Resources.ResourceBrowseGetRsByCategoryId, method = RequestMethod.GET)
//    @ApiOperation(value = "根据视图分类的CategoryId获取数据集")
//    public Envelop getResourceByCategoryId (
//            @ApiParam("categoryId")
//            @RequestParam(value = "categoryId", required = true) String categoryId) {
//        //查询资源-数据集
//        String filters="";
//        if(null!=categoryId&&!"".equals(categoryId)){
//            filters="categoryId=" + categoryId;
//        }
//
//        ResponseEntity<List<MRsResources>> categoryResponseEntity = resourcesClient.queryResources("", filters, "", 1, 999, null, null);
//        List<MRsResources>  rsResources = categoryResponseEntity.getBody();
//        Integer totalCount = getTotalCount(categoryResponseEntity);
//        return getResult(rsResources, totalCount, 1, 999);
//    }
}

+ 0 - 203
svr/svr-basic/src/main/java/com/yihu/jw/basic/config/BeanConfig.java

@ -1,203 +0,0 @@
//package com.yihu.jw.basic.config;
//
//import com.fasterxml.jackson.databind.ObjectMapper;
//
//import com.yihu.jw.basic.interceptor.AuditInterceptor;
//import com.yihu.jw.basic.standard.match.dictionary.DictitemStandardExistStrategy;
//import com.yihu.jw.basic.standard.match.metadata.MetatdataStandardExistStrategy;
//import org.apache.tomcat.util.threads.ThreadPoolExecutor;
//import org.hibernate.HibernateException;
//import org.hibernate.Session;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.context.annotation.Bean;
//import org.springframework.context.annotation.ComponentScan;
//import org.springframework.context.annotation.Configuration;
//import org.springframework.context.support.ResourceBundleMessageSource;
//import org.springframework.core.io.DefaultResourceLoader;
//import org.springframework.core.io.Resource;
//import org.springframework.core.io.ResourceLoader;
//import org.springframework.jdbc.core.JdbcTemplate;
//import org.springframework.orm.hibernate5.HibernateTemplate;
//import org.springframework.orm.hibernate5.LocalSessionFactoryBean;
//import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
//import org.springframework.transaction.annotation.EnableTransactionManagement;
//import org.springframework.web.multipart.MultipartResolver;
//import org.springframework.web.multipart.commons.CommonsMultipartResolver;
//import org.springframework.web.servlet.i18n.CookieLocaleResolver;
//import org.springframework.web.servlet.i18n.LocaleChangeInterceptor;
//
//import javax.sql.DataSource;
//import java.sql.SQLException;
//import java.util.HashMap;
//import java.util.Locale;
//import java.util.Map;
//import java.util.Properties;
//
///**
// * @author HZY
// * @vsrsion 1.0
// * Created at 2016/8/5.
// */
//@Configuration
//@EnableTransactionManagement
//@ComponentScan("com.yihu.jw")
//public class BeanConfig {
//
//    @Autowired
//    private DataSource dataSource;
//
//
//    @Value("${hos.filesystem.url}")
//    private String fsUrl;
//
//    public static Map<String, String> vesionedEntitys = new HashMap<>();
//    static{
//        vesionedEntitys.put("com.yihu.hos.standard.model.standard.StdDataSetModel", "std_dataset_");
//        vesionedEntitys.put("com.yihu.hos.standard.model.standard.StdMetaDataModel", "std_metadata_");
//        vesionedEntitys.put("com.yihu.hos.standard.model.standard.StdDictionaryModel", "std_dictionary_");
//        vesionedEntitys.put("com.yihu.hos.standard.model.standard.StdDictionaryModel", "std_dictionary_entry_");
//        vesionedEntitys.put("com.yihu.ehr.standard.document.service.CDADocument", "std_cda_document_");
//        vesionedEntitys.put("com.yihu.ehr.standard.document.service.CDADataSetRelationship", "std_cda_data_set_relationship_");
//    }
//
//
//    @Bean
//    public LocalSessionFactoryBean sessionFactory() {
//        LocalSessionFactoryBean localSessionFactoryBean = new LocalSessionFactoryBean();
//        localSessionFactoryBean.setDataSource(this.dataSource);
//        Properties properties1 = new Properties();
//        properties1.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQL5Dialect");
//        properties1.setProperty("hibernate.show_sql", "false");
//        properties1.setProperty("hibernate.format_sql", "true");
//        localSessionFactoryBean.setHibernateProperties(properties1);
//        localSessionFactoryBean.setPackagesToScan("com.yihu.hos.*.entity", "com.yihu.hos.*.model");
//        ResourceLoader resourceLoader = new DefaultResourceLoader();
//        Resource resource = resourceLoader.getResource("resource/");
//        localSessionFactoryBean.setMappingDirectoryLocations(resource);
//        //设置拦截器
//        localSessionFactoryBean.setEntityInterceptor(this.auditInterceptor());
//
//        return localSessionFactoryBean;
//    }
//
//    //txManager事务开启
////    @Bean
////    public HibernateTransactionManager txManager() throws SQLException {
////        HibernateTransactionManager hibernateTransactionManager = new HibernateTransactionManager();
////        LocalSessionFactoryBean sessionFactoryBean = this.sessionFactory();
////        hibernateTransactionManager.setSessionFactory(sessionFactoryBean.getObject());
////        return hibernateTransactionManager;
////    }
//
//    @Bean
//    public MultipartResolver multipartResolver() {
//        CommonsMultipartResolver resolver = new CommonsMultipartResolver();
//        // resolver.setDefaultEncoding("UTF-8");
//        //resolver.setMaxUploadSize(50 * 1024 * 1024);// 上传文件大小 5M 5*1024*1024
//        return resolver;
//    }
//
//    //国际化配置
//    @Bean
//    public ResourceBundleMessageSource messageSource() {
//        ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
//        messageSource.setBasenames("text/message");
//        messageSource.setDefaultEncoding("UTF-8");
//        return messageSource;
//    }
//
//    @Bean
//    public CookieLocaleResolver localeResolver() {
//        CookieLocaleResolver localeResolver = new CookieLocaleResolver();
//        localeResolver.setCookieName("Language");
//        localeResolver.setCookieMaxAge(604800);
//        localeResolver.setDefaultLocale(new Locale("zh_cn"));
//        return localeResolver;
//    }
//
//    @Bean
//    public LocaleChangeInterceptor localeChangeInterceptor() {
//        return new LocaleChangeInterceptor();
//    }
//
//    @Bean
//    public JdbcTemplate jdbcTemplate() {
//        JdbcTemplate jdbcTemplate = new JdbcTemplate();
//        try {
//            jdbcTemplate.setDataSource(this.dataSource);
//            jdbcTemplate.setLazyInit(false);
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//        return jdbcTemplate;
//    }
//
//    //Hibernate模版配置
//    @Bean
//    public HibernateTemplate hibernateTemplate() throws SQLException {
//        HibernateTemplate hibernateTemplate = new HibernateTemplate();
//        LocalSessionFactoryBean sessionFactory = this.sessionFactory();
//        hibernateTemplate.setSessionFactory(sessionFactory.getObject());
//        return hibernateTemplate;
//    }
//
//    @Bean
//    public Session getSession() throws HibernateException {
//        LocalSessionFactoryBean sessionFactory = this.sessionFactory();
//        return  sessionFactory.getObject().openSession();
//    }
//
//    @Bean
//    public AuditInterceptor auditInterceptor() {
//        return new AuditInterceptor();
//    }
//
//    @Override
//    protected void finalize() throws Throwable {
//        super.finalize();
//    }
//
//    public String getFsUrl() {
//        return fsUrl;
//    }
//
//    @Bean
//    public ThreadPoolTaskExecutor threadPoolTaskExecutor() {
//        ThreadPoolTaskExecutor threadPoolTaskExecutor = new ThreadPoolTaskExecutor();
//        threadPoolTaskExecutor.setCorePoolSize(5);
//        threadPoolTaskExecutor.setMaxPoolSize(10);
//        threadPoolTaskExecutor.setQueueCapacity(25);
//        threadPoolTaskExecutor.setKeepAliveSeconds(300);
//        threadPoolTaskExecutor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
//        return threadPoolTaskExecutor;
//    }
//    @Bean
//    public MetatdataStandardExistStrategy metatdataStandardExistStrategy() {
//        return new MetatdataStandardExistStrategy();
//    }
//
//    @Bean
//    public DictitemStandardExistStrategy dictitemStandardExistStrategy() {
//        return new DictitemStandardExistStrategy();
//    }
//
//
////    @Bean
////    public HibernateFilter filterConfig() {
////        return new HibernateFilter();
////    }
////
////
////    @Bean
////    public ObjectMapper objectMapper() {
////        return new ObjectMapper();
////    }
////
////    @Bean
////    public ApplicationStart applicationStart() {
////        return new ApplicationStart();
////    }
//
//
//}

+ 3 - 0
svr/svr-basic/src/main/java/com/yihu/jw/basic/config/Config.java

@ -1,5 +1,7 @@
package com.yihu.jw.basic.config;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
@ -19,4 +21,5 @@ public class Config {
        return container;
    }
}

+ 0 - 26
svr/svr-basic/src/main/java/com/yihu/jw/basic/config/TenantConfiguration.java

@ -1,26 +0,0 @@
//package com.yihu.ehr.config;
//
//import feign.RequestInterceptor;
//import feign.RequestTemplate;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.context.annotation.Bean;
//import org.springframework.context.annotation.Configuration;
//
///**
// *   ehr使用 feginClient 调用eip(涉及到app应用,标准等) 时,需要此类,增加请求头信息
// */
//@Configuration
//public class TenantConfiguration {
//    @Value("${eip.tenant}")
//    private String tenant;
//
//    @Bean
//    public RequestInterceptor tenantInterceptor() {
//        return new RequestInterceptor() {
//            @Override
//            public void apply(RequestTemplate requestTemplate) {
//                requestTemplate.header("tenant_name", tenant);
//            }
//        };
//    }
//}

+ 446 - 0
svr/svr-basic/src/main/java/com/yihu/jw/basic/es/EsResultExtract.java

@ -0,0 +1,446 @@
package com.yihu.jw.basic.es;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.jw.basic.es.util.ElasticSearchPool;
import com.yihu.jw.basic.es.util.ElasticsearchUtil;
import com.yihu.jw.basic.quota.service.TjDataSaveService;
import com.yihu.jw.entity.ehr.quota.TjDataSave;
import com.yihu.jw.entity.ehr.quota.TjQuota;
import com.yihu.jw.entity.ehr.quota.TjQuotaDataSave;
import com.yihu.jw.restmodel.ehr.quota.EsConfig;
import net.sf.json.JSONObject;
import org.apache.commons.lang.StringUtils;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.index.query.*;
import org.elasticsearch.search.aggregations.bucket.terms.DoubleTerms;
import org.elasticsearch.search.aggregations.bucket.terms.LongTerms;
import org.elasticsearch.search.aggregations.bucket.terms.StringTerms;
import org.elasticsearch.search.aggregations.bucket.terms.Terms;
import org.elasticsearch.search.aggregations.metrics.sum.InternalSum;
import org.elasticsearch.search.aggregations.metrics.valuecount.InternalValueCount;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
/**
 * Created by janseny on 2017/6/24
 */
@Component
@Scope("prototype")
public class EsResultExtract {
    private Logger logger = LoggerFactory.getLogger(EsResultExtract.class);
    private String startTime;
    private String endTime;
    private String org;
    private String orgName;
    private String province;
    private String city;
    private String town;
    private String townName;
    private String year;
    private String slaveKey1;
    private String slaveKey2;
    private String result;
    private TjQuota tjQuota;
    private String quotaCode;
    private EsConfig esConfig;
    @Autowired
    ElasticsearchUtil elasticsearchUtil;
    @Autowired
    ElasticSearchPool elasticSearchPool;
    @Autowired
    private TjDataSaveService tjDataSaveService;
    @Autowired
    private ObjectMapper objectMapper;
    public void initialize(TjQuota tjQuota ,String filters) throws Exception {
        this.startTime = null;
        this.endTime = null;
        this.orgName = null;
        this.org = null;
        this.province = null;
        this.city = null;
        this.town = null;
        this.townName = null;
        this.year = null;
        this.quotaCode = null;
        this.result = null;
        this.slaveKey1 = null;
        this.slaveKey2 = null;
        if(!StringUtils.isEmpty(filters)){
            Map<String, Object> params  = objectMapper.readValue(filters, new TypeReference<Map>() {});
            if (params !=null && params.size() > 0){
                for(String key : params.keySet()){
                    if( params.get(key) != null ){
                        if(key.equals("startTime"))
                            this.startTime = params.get(key).toString();
                        else if(key.equals("endTime"))
                            this.endTime = params.get(key).toString();
                        else if(key.equals("orgName"))
                            this.orgName = params.get(key).toString();
                        else if(key.equals("org"))
                            this.org = params.get(key).toString();
                        else if(key.equals("province"))
                            this.province = params.get(key).toString();
                        else if(key.equals("city"))
                            this.city = params.get(key).toString();
                        else if(key.equals("town"))
                            this.town = params.get(key).toString();
                        else if(key.equals("townName"))
                            this.townName = params.get(key).toString();
                        else if(key.equals("year"))
                            this.year = params.get(key).toString();
                        else if(key.equals("slaveKey1"))
                            this.slaveKey1 = params.get(key).toString();
                        else if(key.equals("slaveKey2"))
                            this.slaveKey2 = params.get(key).toString();
                        else if(key.equals("result")){
                            this.result = params.get(key).toString();
                        }
                    }
                }
            }
        }
        this.tjQuota = tjQuota;
        if(null != tjQuota && StringUtils.isNotEmpty(tjQuota.getCode())){
            this.quotaCode = tjQuota.getCode();
        }
        EsConfig esConfig = null;
        esConfig = getEsConfig(tjQuota);
        this.esConfig = esConfig;
    }
    public EsConfig getEsConfig(TjQuota tjQuota) throws Exception {
        //得到该指标的数据存储
        TjQuotaDataSave quotaDataSave = tjDataSaveService.findByQuota(tjQuota.getCode());
        //如果为空说明数据错误
        if (quotaDataSave == null) {
            throw new Exception("quotaDataSave data error");
        }
        //判断数据源是什么类型,根据类型和数据库相关的配置信息抽取数据
        EsConfig esConfig = null;
        if (TjDataSave.type_es.equals(quotaDataSave.getType())) {
            JSONObject obj = new JSONObject().fromObject(quotaDataSave.getConfigJson());
            esConfig= (EsConfig) JSONObject.toBean(obj,EsConfig.class);
        }else {
            // wait TO DO
        }
        //初始化es链接
        esConfig = (EsConfig) JSONObject.toBean(JSONObject.fromObject(esConfig), EsConfig.class);
        return esConfig;
    }
    public List<Map<String, Object>> queryResultPage(TjQuota tjQuota ,String filters,int pageNo,int pageSize) throws Exception {
        pageNo = (pageNo-1)*pageSize;
        initialize(tjQuota,filters);
        BoolQueryBuilder boolQueryBuilder =  QueryBuilders.boolQuery();
        getBoolQueryBuilder(boolQueryBuilder);
        TransportClient client = elasticSearchPool.getClient();
        List<Map<String, Object>> restltList = null;
        try {
            restltList =  elasticsearchUtil.queryPageList(client, esConfig.getIndex(), esConfig.getType(), boolQueryBuilder, pageNo, pageSize,"quotaDate");
        } catch (Exception e){
            e.getMessage();
        }
        return restltList;
    }
    public int getQuotaTotalCount(TjQuota tjQuota,String filters) throws Exception {
        initialize(tjQuota,filters);
        BoolQueryBuilder boolQueryBuilder =  QueryBuilders.boolQuery();
        getBoolQueryBuilder(boolQueryBuilder);
        TransportClient  client = elasticSearchPool.getClient();
        int count  = 0;
        try {
            count  = (int)elasticsearchUtil.getTotalCount(client,esConfig.getIndex(),esConfig.getType(),boolQueryBuilder);
        }catch (Exception e){
            e.getMessage();
        }
        return count;
    }
    public List<Map<String, Object>> getQuotaReport(TjQuota tjQuota, String filters,int size) throws Exception {
        initialize(tjQuota,filters);
        BoolQueryBuilder boolQueryBuilder =  QueryBuilders.boolQuery();
        getBoolQueryBuilder(boolQueryBuilder);
        TransportClient  client = elasticSearchPool.getClient();
        List<Map<String, Object>> list = null;
        try {
           list = elasticsearchUtil.queryList(client,esConfig.getIndex(),esConfig.getType(),boolQueryBuilder, "quotaDate",size);
        }catch (Exception e){
            e.getMessage();
        }
        return  list;
    }
    public BoolQueryBuilder getBoolQueryBuilder(BoolQueryBuilder boolQueryBuilder){
        if( !StringUtils.isEmpty(result)){
            if( !result.equals("qb")){//查全部
                result = "1";
                RangeQueryBuilder rangeQueryResult = QueryBuilders.rangeQuery("result").gte(result);
                boolQueryBuilder.must(rangeQueryResult);
            }
        }
        if( !StringUtils.isEmpty(quotaCode)){
//            TermQueryBuilder termQueryQuotaCode = QueryBuilders.termQuery("quotaCode", quotaCode);
            if(esConfig.getType().equals("orgHealthCategoryQuota")){
                QueryStringQueryBuilder termQuotaCode = QueryBuilders.queryStringQuery("orgHealthCategoryQuotaCode:" + quotaCode.replaceAll("_",""));
                boolQueryBuilder.must(termQuotaCode);
            }else{
                QueryStringQueryBuilder termQuotaCode = QueryBuilders.queryStringQuery("quotaCode:" + quotaCode.replaceAll("_",""));
                boolQueryBuilder.must(termQuotaCode);
            }
        }
        BoolQueryBuilder qbChild =  QueryBuilders.boolQuery();
        if( !StringUtils.isEmpty(orgName) ){
//            TermQueryBuilder termQueryOrgName = QueryBuilders.termQuery("orgName", orgName);
            QueryStringQueryBuilder termOrgName = QueryBuilders.queryStringQuery("orgName:" + orgName);
            boolQueryBuilder.must(termOrgName);
        }
        if( !StringUtils.isEmpty(org) ){
            String [] orgvals =org.split(",");
            for(int i=0;i<orgvals.length ; i++){
                MatchQueryBuilder termOrg = QueryBuilders.matchPhraseQuery("org", orgvals[i]);
                qbChild.should(termOrg);
            }
            boolQueryBuilder.must(qbChild);
        }
        if( !StringUtils.isEmpty(slaveKey1) ){
            QueryStringQueryBuilder termSlaveKey1 = QueryBuilders.queryStringQuery("slaveKey1:" + slaveKey1);
            qbChild.should(termSlaveKey1);
            boolQueryBuilder.must(qbChild);
        }
        if( !StringUtils.isEmpty(slaveKey2) ){
            QueryStringQueryBuilder termSlaveKey2 = QueryBuilders.queryStringQuery("slaveKey2:" + slaveKey2);
            qbChild.should(termSlaveKey2);
            boolQueryBuilder.must(qbChild);
        }
        if( !StringUtils.isEmpty(province) ){
            QueryStringQueryBuilder termProvince = QueryBuilders.queryStringQuery("province:" + province);
            boolQueryBuilder.must(termProvince);
        }
        if( !StringUtils.isEmpty(city) ){
            QueryStringQueryBuilder termCity = QueryBuilders.queryStringQuery("city:" + city);
            boolQueryBuilder.must(termCity);
        }
        if( !StringUtils.isEmpty(town) ){
            QueryStringQueryBuilder termTown = QueryBuilders.queryStringQuery("town:" + town);
            boolQueryBuilder.must(termTown);
        }
        if( !StringUtils.isEmpty(townName) ){
            QueryStringQueryBuilder termTown = QueryBuilders.queryStringQuery("townName:" + townName);
            boolQueryBuilder.must(termTown);
        }
        if( !StringUtils.isEmpty(year) ){
            QueryStringQueryBuilder termYear = QueryBuilders.queryStringQuery("year:" + year);
            boolQueryBuilder.must(termYear);
        }
        if( !StringUtils.isEmpty(startTime) ){
            RangeQueryBuilder rangeQueryStartTime = QueryBuilders.rangeQuery("quotaDate").gte(startTime);
            boolQueryBuilder.must(rangeQueryStartTime);
        }
        if( !StringUtils.isEmpty(endTime)){
            RangeQueryBuilder rangeQueryEndTime = QueryBuilders.rangeQuery("quotaDate").lte(endTime);
            boolQueryBuilder.must(rangeQueryEndTime);
        }
        return boolQueryBuilder;
    }
    /**
     * 递归解析json
     *
     * @param gradeBucketIt
     * @param map
     * @param sb
     */
    private void expainJson(Iterator<Terms.Bucket> gradeBucketIt, Map<String,Integer>map, StringBuffer sb) {
        while (gradeBucketIt.hasNext()) {
            Terms.Bucket b =  gradeBucketIt.next();
            if (b.getAggregations().asList().get(0) instanceof StringTerms) {
                StringTerms stringTermsCh = (StringTerms) b.getAggregations().asList().get(0);
                Iterator<Terms.Bucket> gradeBucketItCh = stringTermsCh.getBuckets().iterator();
                while (gradeBucketItCh.hasNext()) {
                    StringBuffer sbTemp = new StringBuffer((sb == null ? "" : (sb.toString() + "-")) + b.getKey());
                    expainJson(gradeBucketItCh, map, sbTemp);
                }
            }else if (b.getAggregations().asList().get(0) instanceof LongTerms) {
                LongTerms longTermsCh = (LongTerms) b.getAggregations().asList().get(0);
                Iterator<Terms.Bucket> gradeBucketItCh = longTermsCh.getBuckets().iterator();
                while (gradeBucketItCh.hasNext()) {
                    StringBuffer sbTemp = new StringBuffer((sb == null ? "" : (sb.toString() + "-")) + b.getKey());
                    expainJson(gradeBucketItCh, map, sbTemp);
                }
            }else if (b.getAggregations().asList().get(0) instanceof DoubleTerms) {
                DoubleTerms doubleTermsCh = (DoubleTerms) b.getAggregations().asList().get(0);
                Iterator<Terms.Bucket> gradeBucketItCh = doubleTermsCh.getBuckets().iterator();
                while (gradeBucketItCh.hasNext()) {
                    StringBuffer sbTemp = new StringBuffer((sb == null ? "" : (sb.toString() + "-")) + b.getKey());
                    expainJson(gradeBucketItCh, map, sbTemp);
                }
            }else {
                if (b.getAggregations().asList().get(0) instanceof InternalValueCount) {
                    InternalValueCount count = (InternalValueCount) b.getAggregations().asList().get(0);
                    map.put(new StringBuffer((sb == null ? "" : (sb.toString() + "-"))+ b.getKey()).toString() , (int)count.getValue());
                }else if (b.getAggregations().asList().get(0) instanceof InternalSum) {
                    InternalSum count = (InternalSum) b.getAggregations().asList().get(0);
                    map.put(new StringBuffer((sb == null ? "" : (sb.toString() + "-")) + "-" + b.getKey()).toString() , (int)count.getValue());
                }
            }
        }
    }
    //指标分组统计数量 - 只支持一个字段
    public List<Map<String, Object>> searcherByGroup(TjQuota tjQuota, String filters,String aggsField ) throws Exception {
        initialize(tjQuota,filters);
        BoolQueryBuilder boolQueryBuilder =  QueryBuilders.boolQuery();
        getBoolQueryBuilder(boolQueryBuilder);
        TransportClient client = elasticSearchPool.getClient();
        List<Map<String, Object>> list = null;
        try {
            list = elasticsearchUtil.searcherByGroup(client,esConfig.getIndex(),esConfig.getType(), boolQueryBuilder, aggsField, "result");
        } catch (Exception e){
            e.getMessage();
        }
        return  list;
    }
    //根据mysql 指标分组求和 支持一个和多个字段
    public Map<String, Integer> searcherSumByGroupBySql(TjQuota tjQuota , String aggsFields ,String filter, String sumField,String orderFild,String order) throws Exception {
        initialize(tjQuota,null);
        if(StringUtils.isEmpty(filter)){
            filter =  " quotaCode='" + tjQuota.getCode().replaceAll("_", "") + "' ";
        }else {
            filter = filter + " and quotaCode='" + tjQuota.getCode().replaceAll("_","") + "' ";
        }
        TransportClient client = elasticSearchPool.getClient();
        Map<String, Integer> map = null;
        try {
            map = elasticsearchUtil.searcherSumByGroupBySql(client, esConfig.getIndex(), aggsFields, filter, sumField,orderFild,order);;
        } catch (Exception e){
            e.getMessage();
        }
        return map;
    }
    /**
     * //根据mysql 指标分组 按时间聚合
     * @param tjQuota
     * @param aggsFields
     * @param filter
     * @param dateDime
     * @return
     * @throws Exception
     */
    public List<Map<String, Object>> searcherSumByGroupByTime(TjQuota tjQuota , String aggsFields ,String filter,String dateDime) throws Exception {
        initialize(tjQuota,null);
        String quotaCode = " quotaCode='" + tjQuota.getCode().replaceAll("_", "") + "' ";
        if(StringUtils.isEmpty(filter)){
            filter =  quotaCode;
        }else {
            filter += " and " + quotaCode;
        }
        if(StringUtils.isNotEmpty(aggsFields)){
            aggsFields += ",";
        }
        try {
            //SELECT sum(result) FROM medical_service_index group by town,date_histogram(field='quotaDate','interval'='year')
            StringBuffer mysql = new StringBuffer("SELECT ")
                    .append(aggsFields)
                    .append(" sum(result) FROM ").append(esConfig.getIndex())
                    .append(" where quotaDate is not null and ").append(filter)
                    .append(" group by ").append(aggsFields)
                    .append(" date_histogram(field='quotaDate','interval'='")
                    .append(dateDime).append("')").append(" limit 10000 ");
            logger.warn("查询分组 mysql= " + mysql.toString());
            List<Map<String, Object>> listMap = elasticsearchUtil.excuteDataModel(mysql.toString());
            if(listMap != null &&  listMap.size() > 0){
                if(listMap.get(0).get("SUM(result)") != null){
                    return  listMap;
                }
            }
            return  new ArrayList<>();
        } catch (Exception e){
            e.getMessage();
        }
        return null;
    }
    /**
     * 根据sql  分组统计数据
     * @param tjQuota
     * @param aggsFields
     * @param filter
     * @param sumField
     * @param orderFild
     * @param order
     * @return
     * @throws Exception
     */
    public  List<Map<String, Object>>  searcherSumGroup(TjQuota tjQuota , String aggsFields ,String filter, String sumField,String orderFild,String order, String top) throws Exception {
        initialize(tjQuota,null);
        String quotaCode = " quotaCode='" + tjQuota.getCode().replaceAll("_", "") + "' ";
        if(StringUtils.isEmpty(filter)){
            filter =  quotaCode;
        }else {
            filter += " and " + quotaCode;
        }
        try {
            StringBuffer mysql = new StringBuffer("select ");
            mysql.append(aggsFields)
                    .append(" ,sum(").append(sumField).append(") ")
                    .append(" from ").append(esConfig.getIndex())
                    .append(" where quotaDate is not null and ").append(filter)
                    .append(" group by ").append(aggsFields);
            if(StringUtils.isNotEmpty(orderFild) && StringUtils.isNotEmpty(order)){
                if (StringUtils.isNotEmpty(top)) {
                    mysql.append(" order by sum(").append(sumField).append(") desc");
                } else {
                    mysql.append(" order by ").append(orderFild).append(" ").append(order);
                }
            }
            if (StringUtils.isNotEmpty(top)) {
                mysql.append(" limit ").append(top);
            } else {
                mysql.append(" limit 10000 ");
            }
            logger.warn("查询分组 mysql= " + mysql.toString());
            List<Map<String, Object>> listMap = elasticsearchUtil.excuteDataModel(mysql.toString());
            if(listMap != null &&  listMap.size() > 0){
                if(listMap.get(0).get("SUM(result)") != null){
                    return  listMap;
                }
            }
            return  new ArrayList<>();
        }catch (Exception e){
            e.getMessage();
        }
        return null;
    }
}

+ 45 - 0
svr/svr-basic/src/main/java/com/yihu/jw/basic/es/util/ElasticSearchConfig.java

@ -0,0 +1,45 @@
package com.yihu.jw.basic.es.util;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import javax.annotation.PostConstruct;
/**
 * Created by progr1mmer on 2017/12/1.
 */
@ConfigurationProperties(prefix = "elasticsearch")
@Configuration
public class ElasticSearchConfig {
    // 集群名称
    private String clusterName;
    // 节点
    private String clusterNodes;
    public String getClusterName() {
        return clusterName;
    }
    public void setClusterName(String clusterName) {
        this.clusterName = clusterName;
    }
    public String getClusterNodes() {
        return clusterNodes;
    }
    public void setClusterNodes(String clusterNodes) {
        this.clusterNodes = clusterNodes;
    }
    @PostConstruct
    private void configInfo() {
        StringBuilder info = new StringBuilder("{");
        info.append("\n  elasticsearch.cluster-name = " + clusterName);
        info.append("\n  elasticsearch.cluster-nodes = " + clusterNodes);
        info.append("\n}");
        System.out.println("Elasticsearch.configInfo : " + info.toString());
    }
}

+ 80 - 0
svr/svr-basic/src/main/java/com/yihu/jw/basic/es/util/ElasticSearchPool.java

@ -0,0 +1,80 @@
package com.yihu.jw.basic.es.util;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.pool.ElasticSearchDruidDataSourceFactory;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
import java.net.InetSocketAddress;
import java.util.Properties;
/**
 * Created by progr1mmer on 2018/1/4.
 */
@Component
@Scope(ConfigurableBeanFactory.SCOPE_SINGLETON)
public class ElasticSearchPool {
    private static volatile TransportClient transportClient;
    @Autowired
    private ElasticSearchConfig elasticSearchConfig;
    private TransportClient getTransportClient() {
        Settings settings = Settings.builder()
                .put("cluster.name", elasticSearchConfig.getClusterName())
                .put("client.transport.sniff", false)
                .build();
        String[] nodeArr = elasticSearchConfig.getClusterNodes().split(",");
        InetSocketTransportAddress[] socketArr = new InetSocketTransportAddress[nodeArr.length];
        for (int i = 0; i < socketArr.length; i++) {
            if (!StringUtils.isEmpty(nodeArr[i])) {
                String[] nodeInfo = nodeArr[i].split(":");
                socketArr[i] = new InetSocketTransportAddress(new InetSocketAddress(nodeInfo[0], new Integer(nodeInfo[1])));
            }
        }
        return TransportClient.builder().settings(settings).build().addTransportAddresses(socketArr);
    }
    /**
     * 1.TransportClient本身支持多线程的数据请求
     * 2.移除多个TransportClient的线程池支持,减少Socket链接
     * 3.基于多重检查的单例模式,兼顾安全和效率
     * 4.为提高效率,使用完毕后请勿进行 transportClient.close() 的关闭操作
     * @return
     */
    public TransportClient getClient() {
        if (transportClient != null) {
            if (transportClient.connectedNodes().isEmpty()) {
                synchronized (TransportClient.class) {
                    if (transportClient.connectedNodes().isEmpty()) {
                        transportClient = getTransportClient();
                    }
                }
            }
            return transportClient;
        }
        synchronized (TransportClient.class) {
            if (null == transportClient) {
                transportClient = getTransportClient();
            }
        }
        return transportClient;
    }
    public DruidDataSource getDruidDataSource() throws Exception {
        Properties properties = new Properties();
        properties.put("url", "jdbc:elasticsearch://" + elasticSearchConfig.getClusterNodes() + "/");
        DruidDataSource druidDataSource = (DruidDataSource) ElasticSearchDruidDataSourceFactory
                .createDataSource(properties);
        druidDataSource.setInitialSize(1);
        return druidDataSource;
    }
}

+ 402 - 0
svr/svr-basic/src/main/java/com/yihu/jw/basic/es/util/ElasticsearchUtil.java

@ -0,0 +1,402 @@
package com.yihu.jw.basic.es.util;
import com.alibaba.druid.sql.ast.SQLExpr;
import com.alibaba.druid.sql.ast.expr.SQLQueryExpr;
import com.alibaba.druid.sql.parser.ParserException;
import com.alibaba.druid.sql.parser.SQLExprParser;
import com.alibaba.druid.sql.parser.Token;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.commons.lang.StringUtils;
import org.elasticsearch.action.bulk.BulkRequestBuilder;
import org.elasticsearch.action.bulk.BulkResponse;
import org.elasticsearch.action.delete.DeleteRequestBuilder;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.action.search.SearchRequestBuilder;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.Client;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.SearchHits;
import org.elasticsearch.search.aggregations.AggregationBuilders;
import org.elasticsearch.search.aggregations.bucket.terms.*;
import org.elasticsearch.search.aggregations.metrics.sum.InternalSum;
import org.elasticsearch.search.aggregations.metrics.sum.SumBuilder;
import org.elasticsearch.search.aggregations.metrics.valuecount.InternalValueCount;
import org.elasticsearch.search.sort.SortBuilder;
import org.elasticsearch.search.sort.SortBuilders;
import org.elasticsearch.search.sort.SortOrder;
import org.nlpcn.es4sql.domain.Select;
import org.nlpcn.es4sql.jdbc.ObjectResult;
import org.nlpcn.es4sql.jdbc.ObjectResultsExtractor;
import org.nlpcn.es4sql.parse.ElasticSqlExprParser;
import org.nlpcn.es4sql.parse.SqlParser;
import org.nlpcn.es4sql.query.AggregationQueryAction;
import org.nlpcn.es4sql.query.DefaultQueryAction;
import org.nlpcn.es4sql.query.SqlElasticSearchRequestBuilder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.*;
/**
 * Created by janseny on 2017/7/21.
 */
@Component
public class ElasticsearchUtil {
    @Autowired
    ObjectMapper objectMapper;
    @Autowired
    private ElasticSearchPool elasticSearchPool;
    /**
     * @param boolQueryBuilder  查询参数 build
     * @param pageNo
     * @param pageSize
     * @param sortName 排序字段名称
     * @return
     */
    public List<Map<String, Object>> queryPageList(Client client, String index, String type, BoolQueryBuilder boolQueryBuilder,
                                                   int pageNo, int pageSize, String sortName){
        SearchResponse actionGet = null;
        SortBuilder dealSorter = SortBuilders.fieldSort(sortName).order(SortOrder.DESC);
        actionGet = client.prepareSearch(index)
                .setTypes(type)
                .setQuery(boolQueryBuilder)
                .setFrom(pageNo - 1).setSize(pageSize).addSort(dealSorter)//从0开始算
                .execute().actionGet();
        SearchHits hits = actionGet.getHits();
        List<Map<String, Object>> matchRsult = new LinkedList<Map<String, Object>>();
        for (SearchHit hit : hits.getHits()){
            matchRsult.add(hit.getSource());
        }
        return matchRsult;
    }
    /**
     * @param boolQueryBuilder  查询参数 build
     * @return
     */
    public long getTotalCount(Client client,String index,String type,BoolQueryBuilder boolQueryBuilder){
        SearchResponse actionGet = null;
        actionGet = client.prepareSearch(index)
                .setTypes(type)
                .setQuery(boolQueryBuilder)
                .execute().actionGet();
        SearchHits hits = actionGet.getHits();
       if(hits != null){
           return hits.totalHits();
       }
        return 0;
    }
    /**
     * @param boolQueryBuilder  查询参数 build
     * @param sortName 排序字段名称
     * @return
     */
    public List<Map<String, Object>> queryList(Client client,String index,String type,BoolQueryBuilder boolQueryBuilder,String sortName,int size){
        SearchResponse actionGet = null;
        SortBuilder dealSorter = null;
        if(sortName != null){
            dealSorter = SortBuilders.fieldSort(sortName).order(SortOrder.DESC);
        }else{
            dealSorter = SortBuilders.fieldSort("_id").order(SortOrder.DESC);
        }
        actionGet = client.prepareSearch(index)
                .setTypes(type)
                .setSize(size)
                .setQuery(boolQueryBuilder)
                .addSort(dealSorter)
                .execute().actionGet();
        SearchHits hits = actionGet.getHits();
        List<Map<String, Object>> matchRsult = new LinkedList<Map<String, Object>>();
        for (SearchHit hit : hits.getHits()){
            Map<String, Object> map = new HashMap<>() ;
            map = hit.getSource();
            map.put("id",hit.getId());
            matchRsult.add(map);
        }
        return matchRsult;
    }
    /**
     * 执行搜索(带分组求和sum)
     * @param queryBuilder 查询内容
     * @param aggsField 要分组的字段
     * @param sumField 要求和的字段  只支持一个字段
     * @return
     */
    public List<Map<String, Object>> searcherByGroup(Client client, String index, String type, BoolQueryBuilder queryBuilder, String aggsField , String sumField) {
        List<Map<String, Object>> list = new ArrayList<>();
        SearchRequestBuilder searchRequestBuilder =
                client.prepareSearch(index)
                .setTypes(type)
                .setQuery(queryBuilder);
        //创建TermsBuilder对象,使用term查询,设置该分组的名称为 name_count,并根据aggsField字段进行分组
        TermsBuilder termsBuilder = AggregationBuilders.terms(aggsField+"_val").field(aggsField);
        SumBuilder ageAgg = AggregationBuilders.sum(sumField+"_count").field(sumField);
        searchRequestBuilder.addAggregation(termsBuilder.subAggregation(ageAgg));
        Map<String, Object> dataMap = new HashMap<String, Object>();
        //执行搜索
        SearchResponse searchResponse = searchRequestBuilder.execute().actionGet();
        //解析返回数据,获取分组名称为aggs-class的数据
        Terms terms = searchResponse.getAggregations().get(aggsField+"_val");
        Collection<Terms.Bucket> buckets = terms.getBuckets();
        for (Terms.Bucket bucket : buckets) {
            String key = bucket.getKey().toString();
            if (bucket.getAggregations().asList().get(0) instanceof InternalSum) {//(sum(xx))
                InternalSum count = (InternalSum) bucket.getAggregations().asList().get(0);
                dataMap.put(key, count.value());
            }
        }
        list.add(dataMap);
        return list;
    }
    /**
     * 根据mysql 语句进行分组求和查询
     * @param client
     * @param index 索引名称
     * @param aggsFields 分组字段 支持多个
     * @param filter 条件
     * @param sumField  求和字段
     * @param orderFild 排序字段
     * @param order 排序 asc,desc
     * @return
     */
    public Map<String, Integer> searcherSumByGroupBySql(Client client,String index, String aggsFields ,String filter , String sumField,String orderFild,String order) throws Exception {
        Map<String,Integer> map = new LinkedHashMap<>();
//       String mysql1 = "select org ,sum(result) from quota where quotaCode='depart_treat_count' group by org  ";id=16
        StringBuffer mysql = new StringBuffer("select ");
        mysql.append(aggsFields)
             .append(" ,sum(").append(sumField).append(") ")
             .append(" from ").append(index)
             .append(" where ").append(filter)
             .append(" group by ").append(aggsFields);
        if (StringUtils.isNotEmpty(orderFild) && StringUtils.isNotEmpty(order)){
            mysql.append(" order by ").append(orderFild).append(" ").append(order);
        }
        System.out.println("查询分组 mysql= " + mysql.toString());
        SQLExprParser parser = new ElasticSqlExprParser(mysql.toString());
        SQLExpr expr = parser.expr();
        if (parser.getLexer().token() != Token.EOF) {
            throw new ParserException("illegal sql expr : " + mysql);
        }
        SQLQueryExpr queryExpr = (SQLQueryExpr) expr;
        //通过抽象语法树,封装成自定义的Select,包含了select、from、where group、limit等
        Select select = null;
        select = new SqlParser().parseSelect(queryExpr);
        AggregationQueryAction action = null;
        DefaultQueryAction queryAction = null;
        SqlElasticSearchRequestBuilder requestBuilder = null;
        if (select.isAgg) {
            //包含计算的的排序分组的
            action = new AggregationQueryAction(client, select);
            requestBuilder = action.explain();
        } else {
            //封装成自己的Select对象
            queryAction = new DefaultQueryAction(client, select);
            requestBuilder = queryAction.explain();
        }
        //之后就是对ES的操作
        SearchResponse response = (SearchResponse) requestBuilder.get();
        StringTerms stringTerms = (StringTerms) response.getAggregations().asList().get(0);
        Iterator<Terms.Bucket> gradeBucketIt = stringTerms.getBuckets().iterator();
        //里面存放的数据 例  350200-5-2-2    主维度  细维度1  细维度2  值
        //递归解析json
        expainJson(gradeBucketIt, map, null);
        return map;
    }
    /**
     *
     * @param client
     * @param source 表字段组合json格式
     * @return
     * @throws JsonProcessingException
     */
    public boolean save(Client client,String index,String type,String source) throws JsonProcessingException {
        IndexResponse indexResponse = client
                .prepareIndex(index, type, null)
                .setSource(source).get();
        boolean result =  indexResponse.isCreated();
        return result;
    }
    /**
     * 查询后 存在 删除
     * @param boolQueryBuilder
     */
    public synchronized  boolean queryDelete(Client client,String index,String type,BoolQueryBuilder boolQueryBuilder){
        BulkRequestBuilder bulkRequestBuilder = client.prepareBulk();
        DeleteRequestBuilder deleteRequestBuilder = null ;
        SearchResponse actionGet = null;
        actionGet = client.prepareSearch(index)
                .setTypes(type)
                .setSize(10000)
                .setQuery(boolQueryBuilder)
                .execute().actionGet();
        SearchHits hits = actionGet.getHits();
        for (SearchHit hit : hits.getHits()){
            deleteRequestBuilder = client.prepareDelete(index, type, hit.getId());
            bulkRequestBuilder.add(deleteRequestBuilder.request());
        }
        //进行批量删除操作
        boolean optFlag = true;
        if(hits.getHits() != null && hits.getHits().length > 0){
            BulkResponse bulkResponse = bulkRequestBuilder.execute().actionGet();
            if (bulkResponse.hasFailures()) {
                optFlag = false;
            }else {
                optFlag = true;
            }
        }
        return  optFlag;
    }
    /**
     * 递归解析json
     *
     * @param gradeBucketIt
     * @param map
     * @param sb
     */
    private void expainJson(Iterator<Terms.Bucket> gradeBucketIt,Map<String,Integer> map, StringBuffer sb) {
        while (gradeBucketIt.hasNext()) {
            Terms.Bucket b =  gradeBucketIt.next();
            if (b.getAggregations().asList().get(0) instanceof StringTerms) {
                StringTerms stringTermsCh = (StringTerms) b.getAggregations().asList().get(0);
                Iterator<Terms.Bucket> gradeBucketItCh = stringTermsCh.getBuckets().iterator();
                while (gradeBucketItCh.hasNext()) {
                    StringBuffer sbTemp = new StringBuffer((sb == null ? "" : (sb.toString() + "-")) + b.getKey());
                    expainJson(gradeBucketItCh, map, sbTemp);
                }
            }else if (b.getAggregations().asList().get(0) instanceof LongTerms) {
                LongTerms longTermsCh = (LongTerms) b.getAggregations().asList().get(0);
                Iterator<Terms.Bucket> gradeBucketItCh = longTermsCh.getBuckets().iterator();
                while (gradeBucketItCh.hasNext()) {
                    StringBuffer sbTemp = new StringBuffer((sb == null ? "" : (sb.toString() + "-")) + b.getKey());
                    expainJson(gradeBucketItCh, map, sbTemp);
                }
            }else if (b.getAggregations().asList().get(0) instanceof DoubleTerms) {
                DoubleTerms doubleTermsCh = (DoubleTerms) b.getAggregations().asList().get(0);
                Iterator<Terms.Bucket> gradeBucketItCh = doubleTermsCh.getBuckets().iterator();
                while (gradeBucketItCh.hasNext()) {
                    StringBuffer sbTemp = new StringBuffer((sb == null ? "" : (sb.toString() + "-")) + b.getKey());
                    expainJson(gradeBucketItCh, map, sbTemp);
                }
            }else if (b.getAggregations().asList().get(0) instanceof InternalValueCount) {//count(8)
                InternalValueCount count = (InternalValueCount) b.getAggregations().asList().get(0);
                StringBuffer sbTemp = new StringBuffer((sb == null ? "" : (sb.toString() + "-")) + b.getKey());
                map.put(sbTemp.toString() , (int)count.getValue());
            }else if (b.getAggregations().asList().get(0) instanceof InternalSum) {//(sum(xx))
                InternalSum count = (InternalSum) b.getAggregations().asList().get(0);
                StringBuffer sbTemp = new StringBuffer((sb == null ? "" : (sb.toString() + "-")) + b.getKey());
                map.put(sbTemp.toString() , (int)count.getValue());
            }
        }
    }
    /**
     * 执行sql查询es
     * @param sql
     * @return
     */
    public List<Map<String, Object>> excuteDataModel(String sql) {
        List<Map<String, Object>> returnModels = new ArrayList<>();
        TransportClient client = elasticSearchPool.getClient();
        try {
            SQLExprParser parser = new ElasticSqlExprParser(sql);
            SQLExpr expr = parser.expr();
            SQLQueryExpr queryExpr = (SQLQueryExpr) expr;
            Select select = null;
            select = new SqlParser().parseSelect(queryExpr);
            //通过抽象语法树,封装成自定义的Select,包含了select、from、where group、limit等
            AggregationQueryAction action = null;
            DefaultQueryAction queryAction = null;
            SqlElasticSearchRequestBuilder requestBuilder = null;
            if (select.isAgg) {
                //包含计算的的排序分组的
                action = new AggregationQueryAction(client, select);
                requestBuilder = action.explain();
            } else {
                //封装成自己的Select对象
                queryAction = new DefaultQueryAction(client, select);
                requestBuilder = queryAction.explain();
            }
            SearchResponse response = (SearchResponse) requestBuilder.get();
            Object queryResult = null;
            if (sql.toUpperCase().indexOf("GROUP") != -1 || sql.toUpperCase().indexOf("SUM") != -1 || sql.toUpperCase().indexOf("COUNT") != -1) {
                queryResult = response.getAggregations();
            } else {
                queryResult = response.getHits();
            }
            ObjectResult temp = new ObjectResultsExtractor(true, true, true).extractResults(queryResult, true);
            List<String> heads = temp.getHeaders();
            temp.getLines().stream().forEach(one -> {
                try {
                    Map<String, Object> oneMap = new HashMap<String, Object>();
                    for (int i = 0; i < one.size(); i++) {
                        String key = null;
                        Object value = one.get(i);
                        key = heads.get(i);
                        oneMap.put(key, value);
                    }
                    returnModels.add(oneMap);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            });
        } catch (Exception e) {
            e.printStackTrace();
        }
        return returnModels;
    }
    public long getCountBySql(String sql) {
        TransportClient client = elasticSearchPool.getClient();
        try {
            SQLExprParser parser = new ElasticSqlExprParser(sql);
            SQLExpr expr = parser.expr();
            SQLQueryExpr queryExpr = (SQLQueryExpr) expr;
            Select select = null;
            select = new SqlParser().parseSelect(queryExpr);
            //通过抽象语法树,封装成自定义的Select,包含了select、from、where group、limit等
            AggregationQueryAction action = null;
            DefaultQueryAction queryAction = null;
            SqlElasticSearchRequestBuilder requestBuilder = null;
            if (select.isAgg) {
                //包含计算的的排序分组的
                action = new AggregationQueryAction(client, select);
                requestBuilder = action.explain();
            } else {
                //封装成自己的Select对象
                queryAction = new DefaultQueryAction(client, select);
                requestBuilder = queryAction.explain();
            }
            SearchResponse response = (SearchResponse) requestBuilder.get();
            SearchHits hits = response.getHits();
            if(hits != null){
                return hits.totalHits();
            }
            return 0;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return 0;
    }
}

+ 58 - 0
svr/svr-basic/src/main/java/com/yihu/jw/basic/es/util/EsClientUtil.java

@ -0,0 +1,58 @@
package com.yihu.jw.basic.es.util;
import io.searchbox.client.JestClient;
import io.searchbox.client.JestClientFactory;
import io.searchbox.client.config.HttpClientConfig;
import org.elasticsearch.client.Client;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
import java.net.InetAddress;
/**
* Created by janseny on 2017/8/1
 */
@Component
public class EsClientUtil {
    private Logger logger = LoggerFactory.getLogger(EsClientUtil.class);
    /**
     * @param host "localhost"
     * @param port 9200
     * @return
     */
    public JestClient getJestClient(String host, Integer port) {
        String hostAddress="http://"+host+":"+port;
        JestClientFactory factory = new JestClientFactory();
        factory.setHttpClientConfig(new HttpClientConfig
                .Builder(hostAddress)
                .multiThreaded(true)
                //.discoveryEnabled(true)
                .readTimeout(60000)//30秒 -60s
                .build());
        return factory.getObject();
    }
    public Client getClient(String host, Integer port,String clusterName) {
        try {
            Settings settings = Settings.settingsBuilder()
                    .put("cluster.name", StringUtils.isEmpty(clusterName)?"elasticsearch":clusterName)
                    .put("client.transport.sniff", false)
                    .build();
            Client client = TransportClient.builder().settings(settings).build()
                    .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(host), port));
            return client;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
}

+ 0 - 83
svr/svr-basic/src/main/java/com/yihu/jw/basic/hibernate/HibenateDemo.java

@ -1,83 +0,0 @@
package com.yihu.jw.basic.hibernate;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.MixEnvelop;
import com.yihu.jw.rm.hospital.BaseHospitalRequestMapping;
import com.yihu.jw.util.date.DateUtil;
import org.apache.commons.collections.map.HashedMap;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Map;
/**
 * Created by Trick on 2019/12/10.
 */
@Component
public class HibenateDemo {
    @Autowired
    private HibenateUtils hibenateUtils;
    /**
     * 特别注意,由于oracle 大小写不明感,表别名需要指定大小写(驼峰)的话需要加双引号
     * @param id
     * @param name
     * @param createTime
     * @param page
     * @param size
     * @return
     */
    public Envelop findDoctorInfo(String id, String name, String createTime, Integer page, Integer size){
        String sqlTotal ="SELECT " +
                " COUNT(1) AS \"total\" " +
                " FROM " +
                " base_doctor d " +
                " JOIN base_doctor_hospital h ON d.id = h.doctor_code " +
                " WHERE " +
                " 1 = 1";
        Map<String,Object> params = new HashedMap();
        if(StringUtils.isNotBlank(id)){
            sqlTotal+=" AND d.id =:id";
            params.put("id",id);
        }
        if(StringUtils.isNotBlank(name)){
            sqlTotal+=" AND d.name =:name";
            params.put("name",name);
        }
        if(StringUtils.isNotBlank(createTime)){
            sqlTotal+=" AND d.create_time >:createTime";
            params.put("createTime", DateUtil.stringToDate(createTime,"yyyy-MM-dd"));
        }
        Long count = 0L;
        List<Map<String,Object>> total = hibenateUtils.createSQLQuery(sqlTotal,params);
        if(total!=null){
            //mysql 与 Oracle 聚合函数返回类型不一致,需要判断装换
            count = hibenateUtils.objTransformLong(total.get(0).get("total"));
        }
        String sql ="SELECT " +
                " d.id AS \"id\", " +
                " d.NAME AS \"name\"," +
                " h.dept_name AS \"deptName\"" +
                " FROM " +
                " base_doctor d " +
                " JOIN base_doctor_hospital h ON d.id = h.doctor_code " +
                " WHERE " +
                " 1 = 1 ";
        if(StringUtils.isNotBlank(id)){
            sql+=" AND d.id =:id";
        }
        if(StringUtils.isNotBlank(name)){
            sql+=" AND d.name =:name";
        }
        if(StringUtils.isNotBlank(createTime)){
            sql+=" AND d.create_time >:createTime";
        }
        List<Map<String,Object>> list = hibenateUtils.createSQLQuery(sql,params,page,size);
       return MixEnvelop.getSuccessListWithPage(BaseHospitalRequestMapping.Prescription.api_success, list, page, size, count);
    }
}

+ 0 - 264
svr/svr-basic/src/main/java/com/yihu/jw/basic/hibernate/HibenateUtils.java

@ -1,264 +0,0 @@
package com.yihu.jw.basic.hibernate;
import com.yihu.jw.entity.hospital.prescription.HlwCf01DO;
import org.hibernate.Session;
import org.hibernate.query.NativeQuery;
import org.hibernate.query.internal.NativeQueryImpl;
import org.hibernate.transform.Transformers;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import javax.persistence.EntityManager;
import javax.persistence.ParameterMode;
import javax.persistence.PersistenceContext;
import javax.persistence.StoredProcedureQuery;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Collection;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
 * 数据库查询工具,mysql与Oracle 通用复诊查询
 * 支持原生SQL。联表,动态传参。分页查询
 * 不支持数据库特有的函数
 * <p>
 * Created by Trick on 2019/12/10.
 */
@Component
@Transactional
public class HibenateUtils {
    /**
     * JPA 数据源
     */
    @PersistenceContext
    private EntityManager entityManager;
    /**
     * 创建SQL查询,根据配置,获取数据库方言
     * sql为原生sql语句,查询,Oracle不区分大小写,返回值需要驼峰命名,字段别名需要加 双引号
     * 目前只支持通用的聚合函数,特有的聚合函数不支持
     *
     * @param sql
     * @param page 第几页,1开始
     * @param size 每页记录数
     * @return
     */
    public List<Map<String, Object>> createSQLQuery(String sql, Integer page, Integer size) {
        Session session = (Session) entityManager.getDelegate();
        NativeQuery query = session.createNativeQuery(sql);
        query.unwrap(NativeQueryImpl.class).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
        if(page!=null&&size!=null){
            query.setFirstResult((page - 1) * size);
            query.setMaxResults(size);
        }
        List<Map<String, Object>> list = query.list();
        return list;
    }
    /**
     * 创建SQL查询,根据配置,获取数据库方言
     * sql为原生sql语句,查询,Oracle不区分大小写,返回值需要驼峰命名,字段别名需要加 双引号
     * 目前只支持通用的聚合函数,特有的聚合函数不支持
     * 无分页
     * @param sql
     * @return
     */
    public List<Map<String, Object>> createSQLQuery(String sql) {
        Session session = (Session) entityManager.getDelegate();
        NativeQuery query = session.createNativeQuery(sql);
        query.unwrap(NativeQueryImpl.class).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
        List<Map<String, Object>> list = query.list();
        return list;
    }
    /**
     * 创建SQL查询,根据配置,获取数据库方言
     * sql为原生sql语句,查询,Oracle不区分大小写,返回值需要驼峰命名,字段别名需要加 双引号
     * 目前只支持通用的聚合函数,特有的聚合函数不支持
     * @param sql
     * @param params 动态占位符入参,例如 like:name
     * @param page 第几页,1开始
     * @param size 每页记录数
     * @return
     */
    public List<Map<String, Object>> createSQLQuery(String sql, Map<String, Object> params, Integer page, Integer size) {
        Session session = (Session) entityManager.getDelegate();
        NativeQuery query = session.createNativeQuery(sql);
        query.unwrap(NativeQueryImpl.class).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
        //设置查询参数
        setSqlQueryByMap(query, params);
        if(page!=null&&size!=null){
            query.setFirstResult((page-1) * size);
            query.setMaxResults(size);
        }
        List<Map<String, Object>> list = query.list();
        return list;
    }
    /**
     * 创建SQL查询,根据配置,获取数据库方言
     * sql为原生sql语句,查询,Oracle不区分大小写,返回值需要驼峰命名,字段别名需要加 双引号
     * 目前只支持通用的聚合函数,特有的聚合函数不支持
     * @param sql
     * @param params 动态占位符入参,例如 like:name
     * @return
     */
    public List<Map<String, Object>> createSQLQuery(String sql, Map<String, Object> params) {
        Session session = (Session) entityManager.getDelegate();
        NativeQuery query = session.createNativeQuery(sql);
        query.unwrap(NativeQueryImpl.class).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
        //设置查询参数
        setSqlQueryByMap(query, params);
        List<Map<String, Object>> list = query.list();
        return list;
    }
    /**
     * 设置查询参数
     * @param sqlQuery
     * @param params
     * @return
     */
    private NativeQuery setSqlQueryByMap(NativeQuery sqlQuery, Map<String, Object> params) {
        if (params != null && !params.isEmpty()) {
            for (String key : params.keySet()) {
                Object obj = params.get(key);
                if (obj instanceof Collection<?>) {
                    sqlQuery.setParameterList(key, (Collection<?>) obj);
                } else if (obj instanceof Object[]) {
                    sqlQuery.setParameterList(key, (Object[]) obj);
                } else {
                    sqlQuery.setParameter(key, obj);
                }
            }
        }
        return sqlQuery;
    }
    /**
     * 聚合函数类型装换
     * @param obj
     * @return
     */
    public Long objTransformLong(Object obj){
        //Oracle count(1) 聚合函数类型装换
        if(obj instanceof BigDecimal){
            return ((BigDecimal) obj).longValue();
        //Mysql count(1) 聚合函数类型装换
        }else if(obj instanceof BigInteger){
            return ((BigInteger)obj).longValue();
        }else{
            return 0L;
        }
    }
    public void updateBySql(String sql){
        Session session = (Session) entityManager.getDelegate();
        session.createSQLQuery(sql).executeUpdate();
    }
    public void save(Object object) {
        entityManager.persist(object);
    }
    /**
     * 更新
     * @param entity
     */
    public void update(Object entity){
        entityManager.merge(entity);
        entityManager.flush();
    }
    public void update(String id,Integer status){
        HlwCf01DO hlwCf01DO = entityManager.find(HlwCf01DO.class,id);
        hlwCf01DO.setFKZT(status);
        update(hlwCf01DO);
    }
    public String saveJdxx(String brxm,Date csny,Float brxb,String czgh,String sfzh,String sjhm,String ybkh,String lxdz,Float zy) {
        StoredProcedureQuery query = entityManager
                .createStoredProcedureQuery(" ZKSG.sp_zksg_jdkh_2021@xec_link") // 被调用存储过程名称
                .registerStoredProcedureParameter("P_BRXM", String.class, ParameterMode.IN) // 注册参数
                .registerStoredProcedureParameter("P_CSNY", Date.class, ParameterMode.IN)
                .registerStoredProcedureParameter("P_BRXB", Float.class, ParameterMode.IN)
                .registerStoredProcedureParameter("P_CZGH", String.class, ParameterMode.IN)
                .registerStoredProcedureParameter("P_SFZH", String.class, ParameterMode.IN)
                .registerStoredProcedureParameter("P_SJHM", String.class, ParameterMode.IN)
                .registerStoredProcedureParameter("P_YBKH", String.class, ParameterMode.IN)
                .registerStoredProcedureParameter("P_LXDZ", String.class, ParameterMode.IN)
                .registerStoredProcedureParameter("P_ZY", Float.class, ParameterMode.IN)
                .registerStoredProcedureParameter("P_ERRMSG", String.class, ParameterMode.INOUT)
                .setParameter("P_BRXM", brxm)
                .setParameter("P_CSNY", csny)
                .setParameter("P_CZGH", czgh)
                .setParameter("P_BRXB", brxb)
                .setParameter("P_SFZH",sfzh)
                .setParameter("P_SJHM",sjhm)
                .setParameter("P_YBKH",ybkh)
                .setParameter("P_LXDZ",lxdz)
                .setParameter("P_ZY",zy);
        query.execute();
        String priceStr = (String) query.getOutputParameterValue("P_ERRMSG"); // 获取存储过程中的返回值
        return priceStr;
    }
    public String updateJdxx(Float brid,String sfzh,String lxdz,Float zy,String lxdh) {
        StoredProcedureQuery query = entityManager
                .createStoredProcedureQuery("ZKSG.SP_ZKSG_MZBRXXXG@xec_link") // 被调用存储过程名称
                .registerStoredProcedureParameter("P_BRID", Float.class, ParameterMode.IN) // 注册参数
                .registerStoredProcedureParameter("P_SFZH", String.class, ParameterMode.IN)
                .registerStoredProcedureParameter("P_LXDZ", String.class, ParameterMode.IN)
                .registerStoredProcedureParameter("P_LXDH", String.class, ParameterMode.IN)
                .registerStoredProcedureParameter("P_ZY", Float.class, ParameterMode.IN)
                .registerStoredProcedureParameter("P_ERRMSG", String.class, ParameterMode.INOUT)
                .setParameter("P_BRID", brid)
                .setParameter("P_SFZH", sfzh)
                .setParameter("P_LXDZ", lxdz)
                .setParameter("P_LXDH", lxdh)
                .setParameter("P_ZY",zy);
        query.execute();
        String priceStr = (String) query.getOutputParameterValue("P_ERRMSG"); // 获取存储过程中的返回值
        return priceStr;
    }
    public String updateJzkh(Float brid,String ybkh) {
        StoredProcedureQuery query = entityManager
                .createStoredProcedureQuery("zksg.sp_zksg_jzkhxg@xec_link") // 被调用存储过程名称
                .registerStoredProcedureParameter("P_BRID", Float.class, ParameterMode.IN) // 注册参数
                .registerStoredProcedureParameter("P_YBKH", String.class, ParameterMode.IN)
                .registerStoredProcedureParameter("P_ERRMSG", String.class, ParameterMode.INOUT)
                .setParameter("P_BRID", brid)
                .setParameter("P_YBKH", ybkh);
        query.execute();
        String priceStr = (String) query.getOutputParameterValue("P_ERRMSG"); // 获取存储过程中的返回值
        return priceStr;
    }
    public String updateSfzh(Float brid,String sfzh) {
        StoredProcedureQuery query = entityManager
                .createStoredProcedureQuery("zksg.SP_ZKSG_sfzhxg@xec_link") // 被调用存储过程名称
                .registerStoredProcedureParameter("P_BRID", Float.class, ParameterMode.IN) // 注册参数
                .registerStoredProcedureParameter("P_SFZH", String.class, ParameterMode.IN)
                .registerStoredProcedureParameter("P_ERRMSG", String.class, ParameterMode.INOUT)
                .setParameter("P_BRID", brid)
                .setParameter("P_SFZH", sfzh);
        query.execute();
        String priceStr = (String) query.getOutputParameterValue("P_ERRMSG"); // 获取存储过程中的返回值
        return priceStr;
    }
}

+ 0 - 56
svr/svr-basic/src/main/java/com/yihu/jw/basic/interceptor/AuditInterceptor.java

@ -1,56 +0,0 @@
//package com.yihu.jw.basic.interceptor;
//
//import com.yihu.jw.util.thread.ContextAttributes;
//import com.yihu.jw.util.thread.LocalContext;
//import org.apache.commons.lang3.StringUtils;
//import org.hibernate.EmptyInterceptor;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.springframework.stereotype.Component;
//
///**
// * @author HZY
// * @vsrsion 1.0
// * Created at 2016/11/30.
// */
//@Component
//public class AuditInterceptor extends EmptyInterceptor {
//
//    private static final long serialVersionUID = 1L;
//    private static Logger logger = LoggerFactory.getLogger(AuditInterceptor.class);
//
//    @Override
//    public String onPrepareStatement(String sql) {
//        String schemaName = getSchema();
//        String completeSql = sql;
//        if (StringUtils.isNotEmpty(schemaName)) {
//            String myCatAnnotation = "/*#mycat:schema=" + schemaName + "*/ ";
//            completeSql = myCatAnnotation + sql;
//        }
////        logger.info("prepare " + completeSql);
//        return super.onPrepareStatement(completeSql);
//    }
//
////    @Override
////    public void onDelete(
////            Object entity,
////            Serializable id,
////            Object[] state,
////            String[] propertyNames,
////            Type[] types) {
////        System.out.println("33333333333333");
////        super.onDelete(entity,id,state,propertyNames,types);
////    }
//
//
////    @Override
////    public void preFlush(Iterator entities) {
////        System.out.println("preflush..............");
////        super.preFlush(entities);
////    }
//
//    private String getSchema() {
//        return LocalContext.getContext().getAttachment(ContextAttributes.SCHEMA);
//    }
//
//}

+ 926 - 0
svr/svr-basic/src/main/java/com/yihu/jw/basic/quota/controller/QuotaReportController.java

@ -0,0 +1,926 @@
package com.yihu.jw.basic.quota.controller;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.ehr.constants.ApiVersion;
import com.yihu.ehr.constants.ServiceApi;
import com.yihu.jw.basic.quota.service.*;
import com.yihu.jw.basic.resource.service.RsResourceQuotaService;
import com.yihu.jw.basic.util.BasesicUtil;
import com.yihu.jw.basic.util.ReportOption;
import com.yihu.jw.basic.util.model.ChartDataModel;
import com.yihu.jw.entity.ehr.quota.TjQuota;
import com.yihu.jw.entity.ehr.quota.TjQuotaDimensionMain;
import com.yihu.jw.entity.ehr.quota.TjQuotaDimensionSlave;
import com.yihu.jw.entity.ehr.resource.RsResourceQuota;
import com.github.abel533.echarts.Option;
import com.yihu.jw.restmodel.ehr.report.MQcDevice;
import com.yihu.jw.restmodel.ehr.resource.MChartInfoModel;
import com.yihu.jw.restmodel.ehr.resource.MRsResources;
import com.yihu.jw.restmodel.ehr.tj.DictModel;
import com.yihu.jw.restmodel.ehr.tj.SaveModel;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.ObjEnvelop;
import com.yihu.jw.restmodel.web.PageEnvelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.text.SimpleDateFormat;
import java.util.*;
/**
 * @author janseny
 */
@RestController
@RequestMapping(ApiVersion.Version1_0)
@Api(description = "指标报表统计 -指标报表统计控制入口")
public class QuotaReportController extends EnvelopRestEndpoint {
    @Autowired
    private ObjectMapper objectMapper;
    @Autowired
    private TjDimensionMainService tjDimensionMainService;
    @Autowired
    private TjDimensionSlaveService tjDimensionSlaveService;
    @Autowired
    private QuotaService quotaService;
    @Autowired
    private JdbcTemplate jdbcTemplate;
    @Autowired
    private RsResourceQuotaService resourceQuotaService;
    @Autowired
    private OrgHealthCategoryStatisticsService orgHealthCategoryStatisticsService;
    @Autowired
    private BaseStatistsService baseStatistsService;
    @Autowired
    private DeviceService deviceService;
    private BasesicUtil basesicUtil = new BasesicUtil();
    public static String orgHealthCategoryCode = "orgHealthCategoryCode";
    @RequestMapping(value = ServiceApi.TJ.GetYearDropdownList, method = RequestMethod.GET)
    @ApiOperation(value = "获取二维表查询年份下拉数据")
    public Envelop getDropdownList(
            @ApiParam(name = "type", value = "类型 1增量型报表 2 全量型报表")
            @RequestParam(value = "type" ,required =  true ) int type,
            @ApiParam(name = "index", value = "索引")
            @RequestParam(value = "index" ,required =  true ) String index) throws Exception {
        Envelop envelop = new Envelop();
        Map<String, List<String>> map = null;
        String sql = "select count(1) from "+ index +" group by date_histogram(field='quotaDate','interval'='year') order by quotaDate desc";
        map = baseStatistsService.getDataInfo(sql, "date_histogram(field=quotaDate,interval=year)");
        if (null != map && map.size() > 0) {
            Collections.sort(map.get("xData"), Collections.reverseOrder());
            if(type == 1){
                return ObjEnvelop.getSuccess("查询成功",map.get("xData"));
            }else {
                Map<String,String> resultMap = new HashMap<>();
                for(String key : map.get("xData")){
                    String filter = "quotaDate >= '" + key + "-01-01'" + " and quotaDate <= '" + key +"-12-31'";
                    sql = "select count(1) from "+ index +" where " + filter + " group by date_histogram(field='quotaDate','interval'='month') order by quotaDate desc";
                    System.out.println(sql);
                    Map<String, List<String>>  monthMap = baseStatistsService.getDataInfo(sql, "date_histogram(field=quotaDate,interval=month)");
                    if(monthMap != null && monthMap.size() > 0){
                        resultMap.put(key,monthMap.get("xData").get(0).toString());
                    }
                }
                return ObjEnvelop.getSuccess("查询成功",resultMap);
            }
        }
        return  success();
    }
    /**
     * 获取指标统计结果
     *
     * @param id
     * @return
     */
    @ApiOperation(value = "获取指标统计结果")
    @RequestMapping(value = ServiceApi.TJ.GetQuotaReport, method = RequestMethod.GET)
    public Envelop getQuotaReport(
            @ApiParam(name = "id", value = "指标任务ID", required = true)
            @RequestParam(value = "id", required = true) int id,
            @ApiParam(name = "filters", value = "检索条件", defaultValue = "")
            @RequestParam(value = "filters", required = false) String filters,
            @ApiParam(name = "dimension", value = "维度字段", defaultValue = "quotaDate")
            @RequestParam(value = "dimension", required = false) String dimension
    ) {
        Envelop envelop = new Envelop();
        try {
            return success();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return failed("查询失败");
    }
    @ApiOperation(value = "获取统计报表一个视图下多个指标组合  二维表数据")
    @RequestMapping(value = ServiceApi.TJ.GetQuotaReportTwoDimensionalTable, method = RequestMethod.GET)
    public List<Map<String, Object>> getQuotaReportTwoDimensionalTable(
            @ApiParam(name = "quotaCodeStr", value = "指标Code,多个用,拼接", required = true)
            @RequestParam(value = "quotaCodeStr", required = true) String quotaCodeStr,
            @ApiParam(name = "filter", value = "过滤", defaultValue = "")
            @RequestParam(value = "filter", required = false) String filter,
            @ApiParam(name = "dimension", value = "维度字段", defaultValue = "quotaDate")
            @RequestParam(value = "dimension", required = false) String dimension,
            @ApiParam(name = "top", value = "获取前几条数据")
            @RequestParam(value = "top", required = false) String top
    ) {
        return quotaService.getQuotaReportTwoDimensionalTable(quotaCodeStr,filter,dimension,top);
    }
    /**
     * 判断指标统计中 总计 是否已经计算过
     * @param code
     * @param dataList
     * @return
     */
    private String existsTotal(String code,List<Map<String, Object>> dataList){
        for(Map<String, Object> map : dataList){
            if(map.get("firstColumn") != null && map.get("firstColumn").toString().equals("合计") && map.get(code) != null){
                if(map.get(code).toString().equals("--")){
                    return "false";
                }else {
                    return map.get(code).toString();
                }
            }
        }
        return "false";
    }
    /**
     * 统计每列合计
     * @param sum
     * @param code
     * @param dataList
     * @return
     */
    private double calculateSum( double sum,String code,List<Map<String, Object>> dataList){
        for(Map<String, Object> map : dataList){
            if(map.get(code) != null){
                sum += Double.valueOf("--".equals(map.get(code)) ? "0" : map.get(code).toString());
            }
        }
        return sum;
    }
    @ApiOperation(value = "获取指标统计结果echart图表,支持多条组合")
    @RequestMapping(value = ServiceApi.TJ.GetMoreQuotaGraphicReportPreviews, method = RequestMethod.GET)
    public Envelop getQuotaGraphicReports(
            @ApiParam(name = "quotaIdStr", value = "指标ID,多个用,拼接", required = true)
            @RequestParam(value = "quotaIdStr" , required = true) String quotaIdStr,
            @ApiParam(name = "charstr", value = "多图表类型用,拼接,混合类型只支持柱状和线性", defaultValue = "1")
            @RequestParam(value = "charstr", required = true) String charstr,
            @ApiParam(name = "filter", value = "过滤", defaultValue = "")
            @RequestParam(value = "filter", required = false) String filter,
            @ApiParam(name = "dimension", value = "维度字段", defaultValue = "quotaDate")
            @RequestParam(value = "dimension", required = false) String dimension,
            @ApiParam(name = "title", value = "视图名称", defaultValue = "")
            @RequestParam(value = "title", required = false) String title,
            @ApiParam(name = "top", value = "获取前几条数据")
            @RequestParam(value = "top", required = false) String top,
            @ApiParam(name = "MRsResource json串")
            @RequestParam(value = "mRsResource", required = false) String mRsResource
            ) {
        String xName = "";
        String yName = "";
        List<String> quotaIds = Arrays.asList(quotaIdStr.split(","));
        List<String> charTypes = Arrays.asList(charstr.split(","));
        MChartInfoModel chartInfoModel = new MChartInfoModel();
        String dimensionName = dimension + "Name";
        if ("quotaName".equals(dimension)) {
            dimensionName = "quotaName";
        }
        try {
            Option option = null;
            List<List<Object>> optionData = new ArrayList<>();
            List<String> lineNames = new ArrayList<>();
            Map<String, Map<String, Object>> lineData = new LinkedHashMap<>();
            Map<String, String> xAxisMap = new LinkedHashMap<>();
            Integer i = 0;
            List<Map<String, Object>> listMap = new ArrayList<>();
            for (String quotaId : quotaIds) {
                Map<String, Object> dataMap = new LinkedHashMap<>();
                TjQuota tjQuota = quotaService.findOne(Long.valueOf(quotaId));
                if (tjQuota != null) {
                    List<Map<String, Object>> resultListMap = baseStatistsService.getSimpleQuotaReport(tjQuota.getCode(), filter, dimension,true, top);
                    if (resultListMap != null && resultListMap.size() > 0) {
                        for (Map<String, Object> map : resultListMap) {
                            if (map != null && map.size() > 0) {
                                if (map.containsKey("quotaName")) {
                                    map.put("quotaName",tjQuota.getName());
                                }
                                listMap.add(map);
                                //第一种 ES库中有定义的维度 如org,slaveKey1
                                //第二种 ES库中未定义的维度 如level,economic
                                if (map.containsKey(dimensionName)) {
                                    if(map.get(dimensionName) != null){
                                        dataMap.put(map.get(dimensionName).toString(), map.get("result"));
                                        xAxisMap.put(map.get(dimensionName).toString(), map.get(dimension).toString());
                                    }
                                } else {
                                    if(map.get(dimension) != null){
                                        dataMap.put(map.get(dimension).toString(), map.get("result"));
                                        xAxisMap.put(map.get(dimension).toString(), map.get(dimension).toString());
                                    }
                                }
                            }
                        }
                    }
                    lineData.put("" + i, dataMap);
                    lineNames.add(tjQuota.getName());
                    i++;
                }
            }
//            lineNames.add(title);
//            lineData.put("", dataMap);
            Map<String, Object> quotaMap = new LinkedHashMap<>();
            ReportOption reportOption = new ReportOption();
            int size = 0;
            String quota = "0";
            if (lineData != null && lineData.size() > 0) {
                for (String key : lineData.keySet()) {
                    int tempSize = lineData.get(key).size();
                    if (tempSize > size) {
                        size = tempSize;
                        quota = key;
                        quotaMap = lineData.get(key);
                    }
                }
                for (String key : lineData.keySet()) {
                    List<Object> dataList = new ArrayList<>();
                    Map<String, Object> valMap = lineData.get(key);
                    if (key != quota) {
                        for (String name : quotaMap.keySet()) {
                            if (valMap.containsKey(name)) {
                                dataList.add(valMap.get(name));
                            } else {
                                dataList.add(0);
                            }
                        }
                    } else {
                        for (String name : valMap.keySet()) {
                            dataList.add(valMap.get(name));
                        }
                    }
                    optionData.add(dataList);
                }
            }
            Object[] xData = (Object[]) quotaMap.keySet().toArray(new Object[quotaMap.size()]);
            for (String typeStr : charTypes) {
                if (typeStr.equals("common")) {
                    typeStr = "1";
                } else if (typeStr.equals("twoDimensional")) { // 这个需要与前端商榷  访问2次(二维表类型)
                    return null;
                }
                int type = Integer.valueOf(typeStr);
                String dataMeasurement = "";
                if (StringUtils.isNotEmpty(mRsResource)) {
                    MRsResources mRsResources = objectMapper.readValue(mRsResource, MRsResources.class);
                    dataMeasurement = mRsResources.getDataMeasurement();
                    String dataPosition = mRsResources.getDataPosition();
                    if (StringUtils.isNotEmpty(dataPosition) && "x".equalsIgnoreCase(dataPosition)) {
                        xName = "单位:" + mRsResources.getDataUnit();
                    } else if (StringUtils.isNotEmpty(dataPosition) && "y".equalsIgnoreCase(dataPosition)) {
                        yName = "单位:" + mRsResources.getDataUnit();
                    }
                }
                if (type == ReportOption.bar) {
                    option = reportOption.getLineEchartOptionMoreChart(title, xName, yName, xData, discountByMeasurement(optionData, dataMeasurement), lineNames, charTypes);
                } else if (type == ReportOption.line) {
                    option = reportOption.getLineEchartOptionMoreChart(title, xName, yName, xData, discountByMeasurement(optionData, dataMeasurement), lineNames, charTypes);
                } else if (type == ReportOption.pie) {
                    List<Map<String, Object>> datalist = new ArrayList<>();
                    for (Map<String, Object> resultMap : listMap) {
                        Map<String, Object> map = new HashMap<>();
                        map.put("NAME", null == resultMap.get(dimensionName) ? resultMap.get(dimension) : resultMap.get(dimensionName));
                        map.put("TOTAL", resultMap.get("result"));
                        if(resultMap.get(dimensionName) != null){
                            map.put("NAME",resultMap.get(dimensionName));
                        }else {
                            //非 指标中配置的维度 关联出来的字段
                            if(dimensionName.equals("levelName")){
                                if(resultMap.get(dimension).equals("1")){
                                    map.put("NAME","一级医院");
                                }else  if(resultMap.get(dimension).equals("2")){
                                    map.put("NAME","二级医院");
                                }else  if(resultMap.get(dimension).equals("3")){
                                    map.put("NAME","三级医院");
                                }
                            }
                        }
                        map.put("TOTAL",resultMap.get("result"));
                        datalist.add(map);
                    }
                    option = reportOption.getPieEchartOption(title, "", "", datalist, lineNames.get(0), null);
                }
            }
            chartInfoModel.setOption(option.toString());
            chartInfoModel.setTitle(title);
            chartInfoModel.setxAxisMap(xAxisMap);
            return ObjEnvelop.getSuccess("",chartInfoModel);
        } catch (Exception e) {
            e.printStackTrace();
            return failed("查询失败");
        }
    }
//    @ApiOperation(value = "获取指标统计结果echart图表,支持多条组合")
//    @RequestMapping(value = ServiceApi.TJ.GetMoreQuotaGraphicReportPreviews, method = RequestMethod.GET)
//    public MChartInfoModel getQuotaGraphicReports(
//            @ApiParam(name = "quotaIdStr", value = "指标ID,多个用,拼接", required = true)
//            @RequestParam(value = "quotaIdStr" , required = true) String quotaIdStr,
//            @ApiParam(name = "charstr", value = "多图表类型用,拼接,混合类型只支持柱状和线性", defaultValue = "1")
//            @RequestParam(value = "charstr" , required = true) String charstr,
//            @ApiParam(name = "filter", value = "过滤", defaultValue = "")
//            @RequestParam(value = "filter", required = false) String filter,
//            @ApiParam(name = "dimension", value = "维度字段", defaultValue = "quotaDate")
//            @RequestParam(value = "dimension", required = false) String dimension,
//            @ApiParam(name = "title", value = "视图名称", defaultValue = "")
//            @RequestParam(value = "title", required = false) String title
//    ) {
//        List<String> quotaIds = Arrays.asList(quotaIdStr.split(","));
//        List<String> charTypes = Arrays.asList(charstr.split(","));
//        MChartInfoModel chartInfoModel = new MChartInfoModel();
//        try {
//            Option option = null;
//            List<List<Object>> optionData = new ArrayList<>();
//            List<String> lineNames = new ArrayList<>();
//            Map<String,Map<String, Object>> lineData = new LinkedHashMap<>();
//            Map<String, String> xAxisMap = new LinkedHashMap<>();
//            for(String quotaId:quotaIds){
//                Map<String, Object> dataMap = new LinkedHashMap<>();
//                TjQuota tjQuota = quotaService.findOne(Integer.valueOf(quotaId));
//                if(tjQuota != null){
//                    String dictSql = getQuotaDimensionDictSql(tjQuota.getCode(),dimension);
//                    Map<String,String> dimensionDicMap = new HashMap<>();
//                    if(StringUtils.isNotEmpty(dictSql)){
//                        BasesicUtil baseUtil = new BasesicUtil();
//                        if(dimension.contains("slaveKey")){
//                            //查询字典数据
//                            List<DictModel> dictDatas = jdbcTemplate.query(dictSql, new BeanPropertyRowMapper(DictModel.class));
//                            for (DictModel dictModel : dictDatas) {
//                                String name = baseUtil.getFieldValueByName("name", dictModel);
//                                String val = baseUtil.getFieldValueByName("code", dictModel).toLowerCase();
//                                dimensionDicMap.put(val,name);
//                            }
//                        } else{
//                            List<SaveModel> dictDatas = jdbcTemplate.query(dictSql, new BeanPropertyRowMapper(SaveModel.class));
//                            if(dictDatas != null ) {
//                                for (SaveModel saveModel : dictDatas) {
//                                    String name = baseUtil.getFieldValueByName(dimension + "Name", saveModel);
//                                    String val = baseUtil.getFieldValueByName(dimension,saveModel).toLowerCase();
//                                    dimensionDicMap.put(val,name);
//                                }
//                            }
//                        }
//                    }
//
//                    Map<String, Object> groupDataMap = new HashMap<>();
//                    if(tjQuota.getResultGetType().trim().equals("1")){
//                        //使用分组计算 返回结果实例: groupDataMap -> "4205000000-儿-1": 200 =>group by 三个字段
//                        Map<String, Integer> resultDataMap =  quotaService.searcherSumByGroupBySql(tjQuota, dimension, filter,"result","","");
//                        for(String key: resultDataMap.keySet()){
//                            groupDataMap.put(key,resultDataMap.get(key));
//                        }
//                    }else{//二次统计指标获取 结果接口
//                        List<Map<String, Object>> listMap = baseStatistsService.getSimpleQuotaReport(tjQuota.getCode(), filter, dimension);
//                        if(listMap != null && listMap.size() > 0){
//                            for(Map<String, Object> map : listMap){
//                                String keyName = "";
//                                String val = "";
//                                for (String key : map.keySet()) {
//                                    if ("result".equals(key)) {
//                                        val = map.get(key).toString();
//                                    } else {
//                                        keyName = map.get(key).toString();
//                                    }
//                                }
//                                groupDataMap.put(keyName, val);
//                            }
//                        }
//
//                    }
//
//                    for(String key : groupDataMap.keySet()){
//                        key = key.toLowerCase();
//                        dataMap.put(dimensionDicMap.containsKey(key)?dimensionDicMap.get(key):key,groupDataMap.get(key));
//                        xAxisMap.put(dimensionDicMap.containsKey(key)?dimensionDicMap.get(key): key,key);
//                    }
//                    lineNames.add(tjQuota.getName());
//                    lineData.put(tjQuota.getCode(), dataMap);
//                }
//            }
//            Map<String, Object> quotaMap = new LinkedHashMap<>();
//            ReportOption reportOption = new ReportOption();
//
//            int size = 0;
//            String quota = "";
//            if(lineData != null && lineData.size() > 0){
//                for(String key : lineData.keySet()){
//                    int tempSize = lineData.get(key).size();
//                    if (tempSize > size){
//                        size = tempSize;
//                        quota = key;
//                        quotaMap = lineData.get(key);
//                    }
//                }
//                for(String key : lineData.keySet()){
//                    List<Object> dataList = new ArrayList<>();
//                    Map<String,Object> valMap = lineData.get(key);
//                    if(key != quota){
//                        for(String name :quotaMap .keySet()){
//                            if(valMap.containsKey(name)){
//                                dataList.add(valMap.get(name));
//                            }else {
//                                dataList.add(0);
//                            }
//                        }
//                    }else{
//                        for(String name :valMap .keySet()){
//                            dataList.add(valMap.get(name));
//                        }
//                    }
//                    optionData.add(dataList);
//                }
//            }
//            Object[] xData = (Object[])quotaMap.keySet().toArray(new Object[quotaMap.size()]);
//            option = reportOption.getLineEchartOptionMoreChart(title, "", "", xData, optionData, lineNames,charTypes);
//            chartInfoModel.setOption(option.toString());
//            chartInfoModel.setTitle(title);
//            chartInfoModel.setxAxisMap(xAxisMap);
//            return chartInfoModel;
//        } catch (Exception e) {
//            error(e);
//            invalidUserException(e, -1, "查询失败:" + e.getMessage());
//            return null;
//        }
//    }
    @ApiOperation(value = "指标统计分组查询")
    @RequestMapping(value = ServiceApi.TJ.GetQuotaGroupBy, method = RequestMethod.GET)
    public Envelop getQuotaGroupBy(
            @ApiParam(name = "id", value = "指标任务ID", required = true)
            @RequestParam(value = "id", required = true) Long id,
            @ApiParam(name = "filters", value = "检索条件", defaultValue = "")
            @RequestParam(value = "filters", required = false) String filters,
            @ApiParam(name = "dimension", value = "维度字段", defaultValue = "quotaDate")
            @RequestParam(value = "dimension", required = false) String dimension
    ) {
        Envelop envelop = new Envelop();
        try {
            TjQuota tjQuota = quotaService.findOne(id);
            Map<String, Integer>  resultMap = quotaService.searcherSumByGroupBySql(tjQuota,dimension, filters,"result","","");
            return ObjEnvelop.getSuccess("查询成功",resultMap);
        } catch (Exception e) {
            e.printStackTrace();
            return failed("查询失败");
        }
    }
    private String getQuotaDimensionDictSql(String quotaCode, String dimension) {
        String dictSql = "";
        //查询维度
        List<TjQuotaDimensionMain> dimensionMains = tjDimensionMainService.findTjQuotaDimensionMainByQuotaCode(quotaCode);
        if (dimensionMains != null && dimensionMains.size() > 0) {
            for (TjQuotaDimensionMain main : dimensionMains) {
                if (main.getMainCode().equals(dimension)) {
                    dictSql = main.getDictSql();
                }
            }
        }
        if (StringUtils.isEmpty(dictSql)) {
            List<TjQuotaDimensionSlave> dimensionSlaves = tjDimensionSlaveService.findTjQuotaDimensionSlaveByQuotaCode(quotaCode);
            if (dimensionSlaves != null && dimensionSlaves.size() > 0) {
                int slave = Integer.valueOf(dimension.substring(dimension.length() - 1, dimension.length()));
                if (dimensionSlaves.size() >= slave) {
                    dictSql = dimensionSlaves.get(slave - 1).getDictSql();
                }
            }
        }
        return dictSql;
    }
    @ApiOperation(value = "获取指标统计结果echart radar雷达图表")
    @RequestMapping(value = ServiceApi.TJ.GetQuotaRadarGraphicReportPreviews, method = RequestMethod.GET)
    public Envelop getQuotaRadarGraphicReports(
            @ApiParam(name = "quotaIdStr", value = "指标ID,多个用,拼接", required = true)
            @RequestParam(value = "quotaIdStr", required = true) String quotaIdStr,
            @ApiParam(name = "filter", value = "过滤", defaultValue = "")
            @RequestParam(value = "filter", required = false) String filter,
            @ApiParam(name = "dimension", value = "维度字段", defaultValue = "")
            @RequestParam(value = "dimension", required = false) String dimension,
            @ApiParam(name = "title", value = "名称", defaultValue = "")
            @RequestParam(value = "title", required = false) String title) {
        List<String> quotaIds = Arrays.asList(quotaIdStr.split(","));
        MChartInfoModel chartInfoModel = new MChartInfoModel();
        List<Integer> arrayNum = new ArrayList<>();
        Integer polorCount = 50;
        try {
            Option option = null;
            List<String> radarNames = new ArrayList<>();
            Map<String, Map<String, Object>> radarData = new HashMap<>();
            List<Map<String, Object>> listData = new ArrayList<>();
            Map<String, String> xAxisMap = new HashMap<>();
            for (String quotaId : quotaIds) {
                Map<String, Object> dataMap = new HashMap<>();
                TjQuota tjQuota = quotaService.findOne(Long.valueOf(quotaId));
                if (null != tjQuota) {
                    String dictSql = getQuotaDimensionDictSql(tjQuota.getCode(), dimension);
                    Map<String, String> dimensionDicMap = new HashMap<>();
                    dimensionDicMap = setDimensionMap(dictSql, dimension, dimensionDicMap);
                    //使用分组计算 返回结果实例: groupDataMap -> "4205000000-儿-1": 200 =>group by 三个字段
                    Map<String, Integer> groupDataMap = quotaService.searcherSumByGroupBySql(tjQuota, dimension, filter, "result", "", "");
                    for (String key : groupDataMap.keySet()) {
                        key = key.toLowerCase();
                        dataMap.put(dimensionDicMap.containsKey(key) ? dimensionDicMap.get(key) : key, groupDataMap.get(key));
                        xAxisMap.put(dimensionDicMap.containsKey(key) ? dimensionDicMap.get(key) : key, key);
                    }
                    radarNames.add(tjQuota.getName());
                    radarData.put(tjQuota.getCode(), dataMap);
                }
                Integer num = getNum(dataMap);
                arrayNum.add(num);
                Map<String, Object> map = new HashMap();
                map.put(tjQuota.getName(), num);
                listData.add(map);
            }
            ReportOption reportOption = new ReportOption();
            Integer[] array = arrayNum.toArray(new Integer[arrayNum.size()]);
            Arrays.sort(array); // 进行升序排序
            polorCount += array[arrayNum.size() - 1];   // 雷达图极坐标
            option = reportOption.getRadarEchartOption(title, listData, polorCount);
            chartInfoModel.setOption(option.toString());
            chartInfoModel.setTitle(title);
            chartInfoModel.setxAxisMap(xAxisMap);
            return ObjEnvelop.getSuccess("查询成功",chartInfoModel);
        } catch (Exception e) {
            e.printStackTrace();
            return failed("查询失败");
        }
    }
    @ApiOperation(value = "获取指标统计结果echart NestedPie图表")
    @RequestMapping(value = ServiceApi.TJ.GetQuotaNestedPieReportPreviews, method = RequestMethod.GET)
    public Envelop getQuotaNestedPieGraphicReports(
            @ApiParam(name = "resourceId", value = "资源ID", defaultValue = "")
            @RequestParam(value = "resourceId") String resourceId,
            @ApiParam(name = "quotaIdStr", value = "指标ID,多个用,拼接", required = true)
            @RequestParam(value = "quotaIdStr", required = true) String quotaIdStr,
            @ApiParam(name = "filter", value = "过滤", defaultValue = "")
            @RequestParam(value = "filter", required = false) String filter,
            @ApiParam(name = "dimension", value = "维度字段", defaultValue = "")
            @RequestParam(value = "dimension", required = false) String dimension,
            @ApiParam(name = "title", value = "名称", defaultValue = "")
            @RequestParam(value = "title", required = false) String title) {
        List<String> quotaIds = Arrays.asList(quotaIdStr.split(","));
        Option option = null;
        MChartInfoModel chartInfoModel = new MChartInfoModel();
        Map<String, String> xAxisMap = new HashMap<>();
        try {
            Integer quotaCount = resourceQuotaService.getQuotaCount(resourceId);
            // 获取最顶层的资源
            List<Integer> quotaId = new ArrayList<>();
            ChartDataModel chartDataModel = getChartDataModel(quotaId, quotaCount, resourceId, dimension, filter, xAxisMap);
            ReportOption reportOption = new ReportOption();
            option = reportOption.getNestedPieEchartOption(title, chartDataModel);
            chartInfoModel.setOption(option.toString());
            chartInfoModel.setTitle(title);
            chartInfoModel.setxAxisMap(xAxisMap);
            return ObjEnvelop.getSuccess("查询成功",chartInfoModel);
        } catch (Exception e) {
            e.printStackTrace();
            return failed("查询失败");
        }
    }
    private ChartDataModel getChartDataModel(List<Integer> quotaId, Integer count, String resourceId, String dimension, String filter, Map<String, String> xAxisMap) throws Exception {
        ChartDataModel chartDataModel = new ChartDataModel();
        List<RsResourceQuota> resultList = resourceQuotaService.getChildrenByPidList(quotaId, resourceId);
        quotaId.clear();
        for (RsResourceQuota rq : resultList) {
            quotaId.add(Integer.valueOf(rq.getQuotaId()));
        }
        count = count - resultList.size();
        if (null != resultList && resultList.size() > 0) {
            List<Map<String, Object>> list = new ArrayList<>();
            for (RsResourceQuota rq : resultList) {
                RsResourceQuota parent = rq;
                TjQuota tjQuota = quotaService.findOne(Long.valueOf(rq.getQuotaId()));
                Map<String, Object> dataMap = new HashMap<>();
                if (null != tjQuota) {
                    String dictSql = getQuotaDimensionDictSql(tjQuota.getCode(), dimension);
                    Map<String, String> dimensionDicMap = new HashMap<>();
                    dimensionDicMap = setDimensionMap(dictSql, dimension, dimensionDicMap);
                    //使用分组计算 返回结果实例: groupDataMap -> "4205000000-儿-1": 200 =>group by 三个字段
                    Map<String, Integer> groupDataMap = quotaService.searcherSumByGroupBySql(tjQuota, dimension, filter, "result", "", "");
                    for (String key : groupDataMap.keySet()) {
                        key = key.toLowerCase();
                        dataMap.put(dimensionDicMap.containsKey(key) ? dimensionDicMap.get(key) : key, groupDataMap.get(key));
                        xAxisMap.put(dimensionDicMap.containsKey(key) ? dimensionDicMap.get(key) : key, key);
                    }
                }
                Integer num = getNum(dataMap);
                List<Map<String, Object>> mapList = new ArrayList<>();
                Map<String, Object> map = new HashMap();
                map.put("NAME", tjQuota.getName());
                map.put("TOTAL", num);
                mapList.add(map);
                rq.setMapList(mapList);
                list.addAll(rq.getMapList());
            }
            chartDataModel.setList(list);
        }
        if (count > 0) {
            ChartDataModel chartDataModel2 = getChartDataModel(quotaId, count, resourceId, dimension, filter, xAxisMap);
            if (null != chartDataModel2) {
                chartDataModel.setChildren(chartDataModel2);
            }
        }
        return chartDataModel;
    }
    private Map<String, String> setDimensionMap(String dictSql, String dimension, Map<String, String> dimensionDicMap) {
        if (StringUtils.isNotEmpty(dictSql)) {
            BasesicUtil baseUtil = new BasesicUtil();
            if (dimension.contains("slaveKey")) {
                //查询字典数据
                List<DictModel> dictDatas = jdbcTemplate.query(dictSql, new BeanPropertyRowMapper(DictModel.class));
                for (DictModel dictModel : dictDatas) {
                    String name = baseUtil.getFieldValueByName("name", dictModel);
                    String val = baseUtil.getFieldValueByName("code", dictModel).toLowerCase();
                    dimensionDicMap.put(val, name);
                }
            } else {
                List<SaveModel> dictDatas = jdbcTemplate.query(dictSql, new BeanPropertyRowMapper(SaveModel.class));
                if (dictDatas != null) {
                    for (SaveModel saveModel : dictDatas) {
                        String name = baseUtil.getFieldValueByName(dimension + "Name", saveModel);
                        String val = baseUtil.getFieldValueByName(dimension, saveModel).toLowerCase();
                        dimensionDicMap.put(val, name);
                    }
                }
            }
        }
        return dimensionDicMap;
    }
    private Integer getNum(Map<String, Object> dataMap) {
        Integer num = 0;
        for (String key : dataMap.keySet()) {
            Integer result = null != dataMap.get(key) ? Integer.parseInt(dataMap.get(key).toString()) : 0;
            num += result;
        }
        return num;
    }
    @RequestMapping(value = "/tj/getCostAndNumOfOutPatient", method = RequestMethod.GET)
    @ApiOperation(value = "门急诊费用、人次")
    public Map<String, String> getCostOfOutPatient() {
        Map<String, String> map = new HashMap<>();
        String costOfOutPatient = baseStatistsService.getCostOfOutPatient();
        String numOfOutPatient = baseStatistsService.getNumOfOutPatient();
        map.put("costOfOutPatient", costOfOutPatient);
        map.put("numOfOutPatient", numOfOutPatient);
        return map;
    }
    @RequestMapping(value = "/tj/getCostAndNumOfInPatient", method = RequestMethod.GET)
    @ApiOperation(value = "入院费用、人次")
    public Map<String, String> getNumOfOutPatient() {
        Map<String, String> map = new HashMap<>();
        String costOfInPatient = baseStatistsService.getCostOfInPatient();
        String numOfInPatient = baseStatistsService.getNumOfInPatient();
        map.put("costOfInPatient", costOfInPatient);
        map.put("numOfInPatient", numOfInPatient);
        return map;
    }
    @RequestMapping(value = "/tj/getMedicalMonitorInfo", method = RequestMethod.GET)
    @ApiOperation(value = "医改监测信息")
    public Map<String, String> getMedicalMonitorInfo() {
        Map<String, String> map = new HashMap<>();
        String costOfMedicalMonitor = baseStatistsService.getCostOfMedicalMonitor();
        map.put("costOfMedicalMonitor", costOfMedicalMonitor);
        return map;
    }
    @ApiOperation(value = "首页费用组成")
    @RequestMapping(value = ServiceApi.TJ.GetCostComposeReports, method = RequestMethod.GET)
    public Envelop getCostComposeReports(
            @ApiParam(name = "quotaIdStr", value = "指标ID,多个用,拼接", required = true)
            @RequestParam(value = "quotaIdStr" , required = true) String quotaIdStr,
            @ApiParam(name = "charType", value = "图表类型用", defaultValue = "1")
            @RequestParam(value = "charType", required = true) String charType,
            @ApiParam(name = "filter", value = "过滤", defaultValue = "")
            @RequestParam(value = "filter", required = false) String filter,
            @ApiParam(name = "dimension", value = "维度字段", defaultValue = "quotaDate")
            @RequestParam(value = "dimension", required = false) String dimension,
            @ApiParam(name = "title", value = "视图名称", defaultValue = "")
            @RequestParam(value = "title", required = false) String title,
            @ApiParam(name = "top", value = "获取前几条数据")
            @RequestParam(value = "top", required = false) String top
    ) {
        List<String> quotaIds = Arrays.asList(quotaIdStr.split(","));
        MChartInfoModel chartInfoModel = new MChartInfoModel();
        String dimensionName = dimension + "Name";
        if ("quotaName".equals(dimension)) {
            dimensionName = "quotaName";
        }
        try {
            Option option = null;
            List<String> lineNames = new ArrayList<>();
            Map<String, Map<String, Object>> lineData = new LinkedHashMap<>();
            Map<String, String> xAxisMap = new LinkedHashMap<>();
            Integer i = 0;
            List<Map<String, Object>> listMap = new ArrayList<>();
            for (String quotaId : quotaIds) {
                Map<String, Object> dataMap = new LinkedHashMap<>();
                TjQuota tjQuota = quotaService.findOne(Long.valueOf(quotaId));
                if (tjQuota != null) {
                    List<Map<String, Object>> resultListMap = baseStatistsService.getSimpleQuotaReport(tjQuota.getCode(), filter, dimension,true, top);
                    if (resultListMap != null && resultListMap.size() > 0) {
                        for (Map<String, Object> map : resultListMap) {
                            if (map != null && map.size() > 0) {
                                if (map.containsKey("quotaName")) {
                                    map.put("quotaName",tjQuota.getName());
                                }
                                //第一种 ES库中有定义的维度 如org,slaveKey1
                                //第二种 ES库中未定义的维度 如level,economic
                                if (map.containsKey(dimensionName)) {
                                    if(map.get(dimensionName) != null){
                                        dataMap.put(map.get(dimensionName).toString(), map.get("result"));
                                        xAxisMap.put(map.get(dimensionName).toString(), map.get(dimension).toString());
                                    }
                                } else {
                                    if(map.get(dimension) != null){
                                        dataMap.put(map.get(dimension).toString(), map.get("result"));
                                        xAxisMap.put(map.get(dimension).toString(), map.get(dimension).toString());
                                    }
                                }
                            }
                        }
                    }
                }
                lineData.put("" + i, dataMap);
                lineNames.add(tjQuota.getName());
                i++;
            }
            Set<String> hashSet = new HashSet<>(lineNames);
            Map<String, Object> newMap = new HashMap<>();
            for (Map<String, Object> data : lineData.values()) {
                for (Map.Entry<String, Object> lastMap : data.entrySet()) {
                    if (newMap.containsKey(lastMap.getKey())) {
                        double v = Double.parseDouble(newMap.get(lastMap.getKey()) + "") + Double.parseDouble(lastMap.getValue() + "");
                        newMap.put(lastMap.getKey() + "", basesicUtil.decimalPointHandle(v));
                    } else {
                        newMap.put(lastMap.getKey(), lastMap.getValue());
                    }
                    hashSet.add(lastMap.getKey());
                }
            }
            lineNames.clear();
            lineNames.addAll(hashSet);
            lineData.clear();
            for (int j = 0; j < lineNames.size(); j++) {
                String name = lineNames.get(j);
                Map<String, Object> tempMap = new HashMap<>();
                tempMap.put(name, newMap.get(name));
                lineData.put("" + j, tempMap);
                Map<String, Object> listMapCon = new HashMap<>();
                listMapCon.put("quotaName", name);
                listMapCon.put("result", newMap.get(name));
                listMap.add(listMapCon);
            }
            ReportOption reportOption = new ReportOption();
            if (charType.equals("common")) {
                charType = "1";
            } else if (charType.equals("twoDimensional")) {
                return null;
            }
            List<String> charTypes = Arrays.asList(charType);
            int type = Integer.valueOf(charType);
            if (type == ReportOption.bar) {
                return null;    // 尚未拓展
            } else if (type == ReportOption.line) {
                return null;    // 尚未拓展
            } else if (type == ReportOption.pie) {
                List<Map<String, Object>> datalist = new ArrayList<>();
                for (Map<String, Object> resultMap : listMap) {
                    Map<String, Object> map = new HashMap<>();
                    map.put("NAME", null == resultMap.get(dimensionName) ? resultMap.get(dimension) : resultMap.get(dimensionName));
                    map.put("TOTAL", resultMap.get("result"));
                    if(resultMap.get(dimensionName) != null){
                        map.put("NAME",resultMap.get(dimensionName));
                    }else {
                        //非 指标中配置的维度 关联出来的字段
                        if(dimensionName.equals("levelName")){
                            if(resultMap.get(dimension).equals("1")){
                                map.put("NAME","一级医院");
                            }else  if(resultMap.get(dimension).equals("2")){
                                map.put("NAME","二级医院");
                            }else  if(resultMap.get(dimension).equals("3")){
                                map.put("NAME","三级医院");
                            }
                        }
                    }
                    map.put("TOTAL",resultMap.get("result"));
                    datalist.add(map);
                }
                option = reportOption.getPieEchartOption(title, "", "", datalist, lineNames.get(0), null);
            }
            chartInfoModel.setOption(option.toString());
            chartInfoModel.setTitle(title);
            chartInfoModel.setxAxisMap(xAxisMap);
            return ObjEnvelop.getSuccess("查询成功",chartInfoModel);
        } catch (Exception e) {
            return failed("查询失败");
        }
    }
    @RequestMapping(value = ServiceApi.TJ.GetDeviceReports, method = RequestMethod.GET)
    @ApiOperation(value = "报表-卫生设备一览")
    public Envelop getDeviceReports(
            @ApiParam(name = "year", value = "年份", required = true)
            @RequestParam(value = "year" , required = true) String year,
            @ApiParam(name = "district", value = "区县编码")
            @RequestParam(value = "district", required = false) String district,
            @ApiParam(name = "organization", value = "机构名称或者组织机构代码", defaultValue = "")
            @RequestParam(value = "organization", required = false) String organization,
            @ApiParam(name = "size", value = "分页大小", defaultValue = "15")
            @RequestParam(value = "size", required = false) int size,
            @ApiParam(name = "page", value = "页码", defaultValue = "1")
            @RequestParam(value = "page", required = false) int page) throws Exception{
        PageEnvelop envelop = new PageEnvelop();
        List<MQcDevice> list = new ArrayList<>();
        List<Map<String, Object>> dataList = deviceService.listMQcDeviceByYearAndDistrictAndOrg(year,district,organization,page ,size);
        for(int i=0; i<dataList.size(); i++){
            Map<String,Object> dataMap =dataList.get(i);
            MQcDevice newEntity = objectMapper.readValue(toJson(dataMap), MQcDevice.class);
            list.add(newEntity);
        }
        envelop.setDetailModelList(list);
        envelop.setStatus(200);
        envelop.setPageSize(size);
        envelop.setCurrPage(page);
//        envelop.setTotalPage((int)dataList.getPage());
//        envelop.setTotalCount((int)dataList.getCount());
        return envelop;
    }
    protected String toJson(Object obj) throws JsonProcessingException {
        objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd"));
        return objectMapper.writeValueAsString(obj);
    }
    /**
     * 如果有计量单位,则把数值换算成相应的数值单位
     * @param optionData
     * @param dataMeasurement
     * @return
     */
    public List<List<Object>> discountByMeasurement(List<List<Object>> optionData, String dataMeasurement) {
        if (!StringUtils.isEmpty(dataMeasurement)) {
            List<List<Object>> handleList = new ArrayList<>();
            double v = Double.parseDouble(dataMeasurement);
            optionData.forEach(one -> {
                List<Object> list = new ArrayList<>();
                one.forEach(item -> {
                    if(item != null && !item.toString().equals("--")){
                        item = basesicUtil.decimalPointHandle(Double.parseDouble(item.toString()) / v);
                        list.add(item);
                    }else {
                        list.add(0);
                    }
                });
                handleList.add(list);
            });
            return handleList;
        }
        return optionData;
    }
}

+ 3 - 4
svr/svr-basic/src/main/java/com/yihu/jw/basic/quota/controller/TjDataSaveEndPoint.java

@ -7,8 +7,8 @@ import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.ObjEnvelop;
import com.yihu.jw.restmodel.web.PageEnvelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import com.yihu.jw.rm.svrBasic.ApiVersion;
import com.yihu.jw.rm.svrBasic.ServiceApi;
import com.yihu.ehr.constants.ApiVersion;
import com.yihu.ehr.constants.ServiceApi;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
@ -28,8 +28,7 @@ import java.util.List;
@RequestMapping(ApiVersion.Version1_0)
@Api(value = "TjDataSave", description = "数据存储", tags = {"统计指标管理-数据存储"})
public class TjDataSaveEndPoint extends EnvelopRestEndpoint {
    @Autowired
    ObjectMapper objectMapper;
    @Autowired
    TjDataSaveService tjDataSaveService;

+ 2 - 2
svr/svr-basic/src/main/java/com/yihu/jw/basic/quota/controller/TjDataSourceEndPoint.java

@ -7,8 +7,8 @@ import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.ObjEnvelop;
import com.yihu.jw.restmodel.web.PageEnvelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import com.yihu.jw.rm.svrBasic.ApiVersion;
import com.yihu.jw.rm.svrBasic.ServiceApi;
import com.yihu.ehr.constants.ApiVersion;
import com.yihu.ehr.constants.ServiceApi;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;

+ 4 - 7
svr/svr-basic/src/main/java/com/yihu/jw/basic/quota/controller/TjDimensionMainEndPoint.java

@ -7,8 +7,8 @@ import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.PageEnvelop;
import com.yihu.jw.restmodel.web.ObjEnvelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import com.yihu.jw.rm.svrBasic.ApiVersion;
import com.yihu.jw.rm.svrBasic.ServiceApi;
import com.yihu.ehr.constants.ApiVersion;
import com.yihu.ehr.constants.ServiceApi;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
@ -29,9 +29,6 @@ import java.util.List;
@Api(value = "TjDimensionMain", description = "主维度", tags = {"主维度"})
public class TjDimensionMainEndPoint extends EnvelopRestEndpoint {
    @Autowired
    ObjectMapper objectMapper;
    
    @Autowired
    TjDimensionMainService tjDimensionMainService;
@ -88,7 +85,7 @@ public class TjDimensionMainEndPoint extends EnvelopRestEndpoint {
    public Envelop delete(
            @ApiParam(name = "id", value = "编号", defaultValue = "")
            @RequestParam(value = "id") Long id) throws Exception{
        TjDimensionMain tjDimensionMain = tjDimensionMainService.getTjDimensionMain(Integer.valueOf(id.toString()));
        TjDimensionMain tjDimensionMain = tjDimensionMainService.getTjDimensionMain(id);
        tjDimensionMain.setStatus(-1);
        tjDimensionMainService.save(tjDimensionMain);
        return ObjEnvelop.getSuccess("主维度删除成功!");
@ -97,7 +94,7 @@ public class TjDimensionMainEndPoint extends EnvelopRestEndpoint {
    @RequestMapping(value = ServiceApi.TJ.TjDimensionMainId, method = RequestMethod.GET)
    @ApiOperation(value = "获取主维度信息", notes = "获取主维度信息")
    TjDimensionMain getTjDimensionMain(
            @PathVariable(value = "id") Integer id){
            @PathVariable(value = "id") Long id){
        return tjDimensionMainService.getTjDimensionMain(id);
    };

+ 2 - 2
svr/svr-basic/src/main/java/com/yihu/jw/basic/quota/controller/TjDimensionSlaveEndPoint.java

@ -7,8 +7,8 @@ import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.ObjEnvelop;
import com.yihu.jw.restmodel.web.PageEnvelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import com.yihu.jw.rm.svrBasic.ApiVersion;
import com.yihu.jw.rm.svrBasic.ServiceApi;
import com.yihu.ehr.constants.ApiVersion;
import com.yihu.ehr.constants.ServiceApi;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;

+ 3 - 3
svr/svr-basic/src/main/java/com/yihu/jw/basic/quota/controller/TjQuotaCategoryEndPoint.java

@ -1,5 +1,6 @@
package com.yihu.jw.basic.quota.controller;
import com.yihu.ehr.constants.ErrorCode;
import com.yihu.jw.basic.quota.service.TjQuotaCategoryService;
import com.yihu.jw.basic.quota.service.TjQuotaService;
import com.yihu.jw.entity.ehr.quota.TjQuotaCategory;
@ -7,9 +8,8 @@ import com.yihu.jw.restmodel.ehr.tj.MQuotaCategory;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.PageEnvelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import com.yihu.jw.rm.svrBasic.ApiVersion;
import com.yihu.jw.rm.svrBasic.ErrorCode;
import com.yihu.jw.rm.svrBasic.ServiceApi;
import com.yihu.ehr.constants.ApiVersion;
import com.yihu.ehr.constants.ServiceApi;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;

+ 2 - 2
svr/svr-basic/src/main/java/com/yihu/jw/basic/quota/controller/TjQuotaChartEndPoint.java

@ -8,8 +8,8 @@ import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.ObjEnvelop;
import com.yihu.jw.restmodel.web.PageEnvelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import com.yihu.jw.rm.svrBasic.ApiVersion;
import com.yihu.jw.rm.svrBasic.ServiceApi;
import com.yihu.ehr.constants.ApiVersion;
import com.yihu.ehr.constants.ServiceApi;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;

+ 0 - 0
svr/svr-basic/src/main/java/com/yihu/jw/basic/quota/controller/TjQuotaDataSaveEndPoint.java


Деякі файли не було показано, через те що забагато файлів було змінено