Browse Source

Merge branch 'dev' of chenweida/patient-co-management into dev

chenweida 7 years ago
parent
commit
c4594abf54
100 changed files with 15621 additions and 0 deletions
  1. 5 0
      common-lib/pom.xml
  2. 149 0
      patient-co-service/wlyy_device/pom.xml
  3. 13 0
      patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/HosDeviceApplication.java
  4. 83 0
      patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/common/configuration/BloodSuggerConfiguration.java
  5. 91 0
      patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/common/configuration/HealthStandardConfig.java
  6. 44 0
      patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/common/configuration/SwaggerConfig.java
  7. 25 0
      patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/common/configuration/SystemConfig.java
  8. 16 0
      patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/common/dao/DeviceDetailDao.java
  9. 9 0
      patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/common/dao/DeviceInfoDao.java
  10. 11 0
      patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/common/dao/DeviceManufacturerDao.java
  11. 45 0
      patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/common/dao/MessageDao.java
  12. 17 0
      patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/common/dao/PatientBloodSuggerDao.java
  13. 56 0
      patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/common/dao/PatientDao.java
  14. 27 0
      patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/common/dao/PatientDeviceDao.java
  15. 55 0
      patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/common/dao/PatientHealthIndexDao.java
  16. 24 0
      patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/common/dao/PatientHealthStandardDao.java
  17. 14 0
      patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/common/dao/PatientHealthTimeDao.java
  18. 40 0
      patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/common/dao/SignFamilyDao.java
  19. 198 0
      patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/common/http/HttpClientUtil.java
  20. 159 0
      patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/common/http/HttpHelper.java
  21. 36 0
      patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/common/http/HttpResponse.java
  22. 1547 0
      patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/common/util/DateUtil.java
  23. 182 0
      patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/common/util/ETLConstantData.java
  24. 222 0
      patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/common/util/ImUtill.java
  25. 15 0
      patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/common/util/MessageType.java
  26. 649 0
      patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/common/util/NumberUtil.java
  27. 1121 0
      patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/common/util/StringUtil.java
  28. 113 0
      patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/controller/DeviceController.java
  29. 200 0
      patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/model/DeviceDetail.java
  30. 69 0
      patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/model/DeviceInfo.java
  31. 58 0
      patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/model/DeviceManufacturer.java
  32. 44 0
      patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/model/IdEntity.java
  33. 255 0
      patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/model/Message.java
  34. 322 0
      patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/model/Patient.java
  35. 226 0
      patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/model/PatientBloodSugger.java
  36. 116 0
      patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/model/PatientDevice.java
  37. 185 0
      patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/model/PatientHealthIndex.java
  38. 109 0
      patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/model/PatientHealthStandard.java
  39. 248 0
      patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/model/PatientHealthTime.java
  40. 61 0
      patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/model/Result.java
  41. 467 0
      patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/model/SignFamily.java
  42. 78 0
      patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/service/ApiOpenService.java
  43. 799 0
      patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/service/DeviceService.java
  44. 155 0
      patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/task/PushMsgTask.java
  45. 111 0
      patient-co-service/wlyy_device/src/main/resources/application.yml
  46. 185 0
      patient-co-service/wlyy_service/pom.xml
  47. 24 0
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/WlyyServiceApplication.java
  48. 43 0
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/common/SwaggerConfig.java
  49. 103 0
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/common/SystemConfig.java
  50. 25 0
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/common/http/HttpApiException.java
  51. 130 0
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/common/http/HttpClientUtil.java
  52. 158 0
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/common/http/HttpHelper.java
  53. 36 0
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/common/http/HttpResponse.java
  54. 37 0
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/common/model/IdEntity.java
  55. 76 0
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/common/model/Result.java
  56. 1707 0
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/common/util/DateUtil.java
  57. 106 0
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/common/util/IdCardUtil.java
  58. 52 0
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/common/util/MD5Util.java
  59. 649 0
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/common/util/NumberUtil.java
  60. 251 0
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/common/util/SOAPUtil.java
  61. 29 0
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/common/util/SpringContextHolder.java
  62. 1126 0
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/common/util/StringUtil.java
  63. 15 0
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/common/util/UUIDUtil.java
  64. 56 0
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/common/util/WebserviceUtil.java
  65. 111 0
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/controller/ArchivesController.java
  66. 248 0
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/controller/GuahaoController.java
  67. 137 0
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/controller/OpenApiController.java
  68. 98 0
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/controller/PrescriptionController.java
  69. 56 0
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/controller/SignController.java
  70. 400 0
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/controller/SmjkController.java
  71. 271 0
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/controller/ZysoftServiceController.java
  72. 32 0
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/dao/AdminTeamDao.java
  73. 60 0
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/dao/AdminTeamMemberDao.java
  74. 37 0
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/dao/DoctorDao.java
  75. 30 0
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/dao/DoctorMappingDao.java
  76. 29 0
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/dao/DoctorTeamDao.java
  77. 60 0
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/dao/DoctorTeamMemberDao.java
  78. 21 0
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/dao/FollowupContentDao.java
  79. 21 0
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/dao/FollowupDao.java
  80. 22 0
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/dao/FollowupDrugsDao.java
  81. 42 0
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/dao/HospitalDao.java
  82. 32 0
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/dao/HospitalMappingDao.java
  83. 19 0
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/dao/HttpLogDao.java
  84. 20 0
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/dao/MessageDao.java
  85. 36 0
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/dao/PatientDao.java
  86. 14 0
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/dao/PatientDeviceDao.java
  87. 21 0
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/dao/PatientDiseaseDao.java
  88. 39 0
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/dao/PatientFamilyMemberDao.java
  89. 38 0
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/dao/PatientReservationDao.java
  90. 24 0
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/dao/QuotaResultDao.java
  91. 62 0
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/dao/SignFamilyDao.java
  92. 22 0
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/dao/SignFamilyLogDao.java
  93. 46 0
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/dao/SignFamilyMappingDao.java
  94. 25 0
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/dao/SignFamilyRenewDao.java
  95. 28 0
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/dao/SignFamilyRenewLogDao.java
  96. 81 0
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/dao/SignPatientLabelInfoDao.java
  97. 16 0
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/dao/SystemDictDao.java
  98. 66 0
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/dao/device/PatientHealthIndexDao.java
  99. 80 0
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/entity/AdminTeam.java
  100. 0 0
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/entity/AdminTeamMember.java

+ 5 - 0
common-lib/pom.xml

@ -25,6 +25,11 @@
        <module>../patient-co/patient-co-statistics-es</module> <!--i健康 es 版本统计-->
        <!--<module>../patient-co-figure</module>-->
        <!--对外同步数据的项目-->
        <module>../patient-co-service/wlyy_service</module> <!--其他业务同步-->
        <module>../patient-co-service/wlyy_sign</module> <!--签约同步-->
        <module>../patient-co-service/wlyy_device</module> <!--设备-->
    </modules>
</project>

+ 149 - 0
patient-co-service/wlyy_device/pom.xml

@ -0,0 +1,149 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>wlyy_device</groupId>
    <artifactId>wlyy_device</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.4.0.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>1.8</java.version>
    </properties>
    <pluginRepositories>
        <pluginRepository>
            <id>pluginCentral</id>
            <name>pluginCentral</name>
            <url>http://172.19.103.47:8081/nexus/content/repositories/central/</url>
        </pluginRepository>
        <pluginRepository>
            <id>pluginReleases</id>
            <name>pluginReleases</name>
            <url>http://172.19.103.47:8081/nexus/content/repositories/releases/</url>
        </pluginRepository>
    </pluginRepositories>
    <!--用于发布到服务器 对应setting的对应server表情里面的id -->
    <distributionManagement>
        <repository>
            <id>Releases</id>
            <name>Releases</name>
            <url>http://172.19.103.47:8081/nexus/content/repositories/releases/</url>
        </repository>
        <snapshotRepository>
            <id>snapshots</id>
            <name>Snapshots</name>
            <url>http://172.19.103.47:8081/nexus/content/repositories/snapshots/</url>
        </snapshotRepository>
    </distributionManagement>
    <repositories>
        <repository>
            <id>repositoryCentral</id>
            <name>repositoryCentral</name>
            <url>http://172.19.103.47:8081/nexus/content/repositories/central/</url>
        </repository>
        <repository>
            <id>repositoryReleases</id>
            <name>repositoryReleases</name>
            <url>http://172.19.103.47:8081/nexus/content/repositories/releases/</url>
        </repository>
    </repositories>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.4</version>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.5.1</version>
            <exclusions>
                <exclusion>
                    <groupId>commons-logging</groupId>
                    <artifactId>commons-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpmime</artifactId>
            <version>4.5.1</version>
        </dependency>
        <dependency>
            <groupId>org.json</groupId>
            <artifactId>json</artifactId>
            <version>20151123</version>
        </dependency>
        <dependency>
            <groupId>net.sf.json-lib</groupId>
            <artifactId>json-lib</artifactId>
            <version>2.4</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
        <!--Swagger-->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.4.0</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.4.0</version>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <useSystemClassLoader>false</useSystemClassLoader>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

+ 13 - 0
patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/HosDeviceApplication.java

@ -0,0 +1,13 @@
package com.yihu.hos.device;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class HosDeviceApplication {
    public static void main(String[] args) throws Exception {
        SpringApplication application = new SpringApplication(HosDeviceApplication.class);
        application.run(args);
    }
}

+ 83 - 0
patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/common/configuration/BloodSuggerConfiguration.java

@ -0,0 +1,83 @@
package com.yihu.hos.device.common.configuration;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
/**
 * @created Airhead 2016/8/1.
 */
//@Configuration
/*
public class BloodSuggerConfiguration {
    @Value("${bloodSugger.fasting}")
    private String fasting;
    @Value("${bloodSugger.afterBreakfast}")
    private String afterBreakfast;
    @Value("${bloodSugger.beforeLunch}")
    private String beforeLunch;
    @Value("${bloodSugger.afterLunch}")
    private String afterLunch;
    @Value("${bloodSugger.beforeDinner}")
    private String beforeDinner;
    @Value("${bloodSugger.afterDinner}")
    private String afterDinner;
    @Value("${bloodSugger.beforeSleep}")
    private String beforeSleep;
    public String getFasting() {
        return fasting;
    }
    public void setFasting(String fasting) {
        this.fasting = fasting;
    }
    public String getAfterBreakfast() {
        return afterBreakfast;
    }
    public void setAfterBreakfast(String afterBreakfast) {
        this.afterBreakfast = afterBreakfast;
    }
    public String getBeforeLunch() {
        return beforeLunch;
    }
    public void setBeforeLunch(String beforeLunch) {
        this.beforeLunch = beforeLunch;
    }
    public String getAfterLunch() {
        return afterLunch;
    }
    public void setAfterLunch(String afterLunch) {
        this.afterLunch = afterLunch;
    }
    public String getBeforeDinner() {
        return beforeDinner;
    }
    public void setBeforeDinner(String beforeDinner) {
        this.beforeDinner = beforeDinner;
    }
    public String getAfterDinner() {
        return afterDinner;
    }
    public void setAfterDinner(String afterDinner) {
        this.afterDinner = afterDinner;
    }
    public String getBeforeSleep() {
        return beforeSleep;
    }
    public void setBeforeSleep(String beforeSleep) {
        this.beforeSleep = beforeSleep;
    }
}
*/

+ 91 - 0
patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/common/configuration/HealthStandardConfig.java

@ -0,0 +1,91 @@
package com.yihu.hos.device.common.configuration;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
/**
 * @created WangLr 2016/9/20.
 */
@Configuration
public class HealthStandardConfig {
	@Value("${healthStandard.xt_min_before}")
	private Double xt_min_before;
	@Value("${healthStandard.xt_max_before}")
	private Double xt_max_before;
	@Value("${healthStandard.xt_min_after}")
	private Double xt_min_after;
	@Value("${healthStandard.xt_max_after}")
	private Double xt_max_after;
	@Value("${healthStandard.szy_min}")
	private Double szy_min;
	@Value("${healthStandard.szy_max}")
	private Double szy_max;
	@Value("${healthStandard.ssy_min}")
	private Double ssy_min;
	@Value("${healthStandard.ssy_max}")
	private Double ssy_max;
	public Double getXt_min_before() {
		return xt_min_before;
	}
	public void setXt_min_before(Double xt_min_before) {
		this.xt_min_before = xt_min_before;
	}
	public Double getXt_max_before() {
		return xt_max_before;
	}
	public void setXt_max_before(Double xt_max_before) {
		this.xt_max_before = xt_max_before;
	}
	public Double getXt_min_after() {
		return xt_min_after;
	}
	public void setXt_min_after(Double xt_min_after) {
		this.xt_min_after = xt_min_after;
	}
	public Double getXt_max_after() {
		return xt_max_after;
	}
	public void setXt_max_after(Double xt_max_after) {
		this.xt_max_after = xt_max_after;
	}
	public Double getSzy_min() {
		return szy_min;
	}
	public void setSzy_min(Double szy_min) {
		this.szy_min = szy_min;
	}
	public Double getSzy_max() {
		return szy_max;
	}
	public void setSzy_max(Double szy_max) {
		this.szy_max = szy_max;
	}
	public Double getSsy_min() {
		return ssy_min;
	}
	public void setSsy_min(Double ssy_min) {
		this.ssy_min = ssy_min;
	}
	public Double getSsy_max() {
		return ssy_max;
	}
	public void setSsy_max(Double ssy_max) {
		this.ssy_max = ssy_max;
	}
}

+ 44 - 0
patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/common/configuration/SwaggerConfig.java

@ -0,0 +1,44 @@
package com.yihu.hos.device.common.configuration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.context.request.async.DeferredResult;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@Configuration
@EnableSwagger2
public class SwaggerConfig {
    private static final String PUBLIC_API = "Default";
    @Bean
    public Docket publicAPI() {
        return new Docket(DocumentationType.SWAGGER_2)
                .groupName(PUBLIC_API)
                .genericModelSubstitutes(DeferredResult.class)
                .useDefaultResponseMessages(false)
                .forCodeGeneration(true)
                .pathMapping("/")
                .select()
                .paths(PathSelectors.regex("/device.*"))
                .build()
                .apiInfo(publicApiInfo());
    }
    private ApiInfo publicApiInfo() {
        ApiInfo apiInfo = new ApiInfo("三师平台设备相关API",
                "向PC端,微信、App等应用提供功能与数据接口。",
                "1.0",
                "No terms of service",
                "admin@jkzl.com",
                "The Apache License, Version 2.0",
                "http://www.apache.org/licenses/LICENSE-2.0.html"
        );
        return apiInfo;
    }
}

+ 25 - 0
patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/common/configuration/SystemConfig.java

@ -0,0 +1,25 @@
package com.yihu.hos.device.common.configuration;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
/**
 * @created WangLr 2016/9/20.
 */
@Configuration
public class SystemConfig {
	@Value("${systemConfig.jw_server}")
	private String jwServer;
	@Value("${systemConfig.socket_server}")
	private String socketServer;
	public String getJwServer() {
		return jwServer;
	}
	public String getSocketServer(){
		return socketServer;
	}
}

+ 16 - 0
patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/common/dao/DeviceDetailDao.java

@ -0,0 +1,16 @@
package com.yihu.hos.device.common.dao;
import com.yihu.hos.device.model.DeviceDetail;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.CrudRepository;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@Transactional
public interface DeviceDetailDao extends CrudRepository<DeviceDetail, Long> {
    List<DeviceDetail> findByDeviceCode(String deviceCode);
    @Query("select a from DeviceDetail a where a.deviceCode = ?1 and a.manufacturerCode = ?2")
    DeviceDetail findByDeviceCodeAndManufacturerCode(String deviceCode,String manufacturerCode);
}

+ 9 - 0
patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/common/dao/DeviceInfoDao.java

@ -0,0 +1,9 @@
package com.yihu.hos.device.common.dao;
import com.yihu.hos.device.model.DeviceInfo;
import org.springframework.data.repository.CrudRepository;
import org.springframework.transaction.annotation.Transactional;
@Transactional
public interface DeviceInfoDao extends CrudRepository<DeviceInfo, Long> {
}

+ 11 - 0
patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/common/dao/DeviceManufacturerDao.java

@ -0,0 +1,11 @@
package com.yihu.hos.device.common.dao;
import com.yihu.hos.device.model.DeviceManufacturer;
import org.springframework.data.repository.CrudRepository;
import org.springframework.transaction.annotation.Transactional;
@Transactional
public interface DeviceManufacturerDao extends CrudRepository<DeviceManufacturer, Long> {
    DeviceManufacturer findByAppkey(String appkey);
}

+ 45 - 0
patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/common/dao/MessageDao.java

@ -0,0 +1,45 @@
/*******************************************************************************
 * Copyright (c) 2005, 2014 springside.github.io
 * <p>
 * Licensed under the Apache License, Version 2.0 (the "License");
 *******************************************************************************/
package com.yihu.hos.device.common.dao;
import com.yihu.hos.device.model.Message;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
public interface MessageDao extends PagingAndSortingRepository<Message, Long>, JpaSpecificationExecutor<Message> {
    @Query("select count(a) from Message a where a.type =1 and a.read= 1 and a.receiver=?1 ")
    int amountUnreadByReceiver(String doctor);
    @Query("select a from Message a where a.type =1 and a.read= 1 and a.receiver=?1 order by a.czrq desc")
    Page<Message> amountUnreadLastByReceiver(String doctor, Pageable pageRequest);
    @Query("select count(a) from Message a where a.type =2 and a.read= 1 and a.receiver=?1 ")
    int amountUnreadHealthByReceiver(String doctor);
    @Query("select a from Message a where (a.type =2 ) and a.read= 1 and a.receiver=?1 order by a.czrq desc")
    Page<Message> amountUnreadHealthLastByReceiver(String doctor, Pageable pageRequest);
    @Modifying
    @Query("update Message a set a.read = 0,a.over='0' where a.id = ?1")
    int read(long msgid);
    @Query("SELECT a FROM Message a WHERE a.sender=?1 AND a.receiver = ?2 and a.signStatus = ?3 and read=1")
    Message findByParams(String sender, String receiver, String signStatus);
    @Query("SELECT a FROM Message a WHERE a.sender=?1 AND a.receiver = ?2 and a.signStatus = ?3 ")
    Message findAllByParams(String sender, String receiver, String signStatus);
    @Query(" from Message a where a.read = 1 and over ='1' and a.sender = ?1 and a.receiver=?2 and a.signStatus='1'")
    Message findByPatient(String patient, String doctor);
    @Query("select count(a) from Message a where a.read = 0 and over ='0'  and a.receiver=?1 and a.type=?2 ")
    int findMessageNum(String doctor, Integer type);
}

+ 17 - 0
patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/common/dao/PatientBloodSuggerDao.java

@ -0,0 +1,17 @@
package com.yihu.hos.device.common.dao;
import com.yihu.hos.device.model.PatientBloodSugger;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.CrudRepository;
import org.springframework.transaction.annotation.Transactional;
/**
 * Created by Reece on 2017/5/11.
 */
@Transactional
public interface PatientBloodSuggerDao extends CrudRepository<PatientBloodSugger, Long> {
    //    按ID倒序查最近的有效默认时间段
    @Query(value = "select t.* from wlyy.wlyy_patient_blood_sugger t where t.del = 1 order by t.id desc limit 0,1 ",nativeQuery = true)
    PatientBloodSugger findRecent();
}

+ 56 - 0
patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/common/dao/PatientDao.java

@ -0,0 +1,56 @@
/*******************************************************************************
 * Copyright (c) 2005, 2014 springside.github.io
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 *******************************************************************************/
package com.yihu.hos.device.common.dao;
import com.yihu.hos.device.model.Patient;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
public interface PatientDao extends PagingAndSortingRepository<Patient, Long> {
	// 查询患者姓名
	@Query("select p.name from Patient p where p.code=?1 and p.status=1")
	String findNameByCode(String code);
	// 根據患者標識查詢患者信息
	@Query("select p from Patient p where p.code=?1 and p.status=1")
	Patient findByCode(String code);
	// 根據身份證號查詢患者信息
	@Query("select p from Patient p where p.idcard=?1 and p.status=1")
	Patient findByIdcard(String idcard);
	
	@Query("select p from Patient p where p.ssc=?1 and p.status=1")
	Patient findBySsc(String ssc);
	// 根據手机号查詢患者信息
	@Query("select p from Patient p where p.mobile=?1 and p.status=1")
	Patient findByMobile(String mobile);
	// 根據病情等级获取患者信息
	@Query("select p from Patient p where p.diseaseCondition=?1 and p.status=1")
	Iterable<Patient> findInfoByLevel(int level);
	@Query("select p from Patient p where p.openid=?1 and p.status=1")
	Patient findByOpenid(String openid);
	
	@Query("select count(1) from Patient p where p.openid=?1 and p.status=1")
	int countByOpenid(String openid);
	
	//清空openid
	@Modifying
	@Query("update Patient p set p.openid = null where p.code <> ?1 and p.openid = ?2 and p.status=1")
	int clearOpenid(String patient, String openid);
	@Query(" select p from Patient p,SignFamily s where p.code=s.patient and s.status > 0 ")
	List<Patient> findAllSignPatient();
	@Query(" select p from Patient p where password is null ")
	List<Patient> findAllIdCardPatientAndNoPassword();
}

+ 27 - 0
patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/common/dao/PatientDeviceDao.java

@ -0,0 +1,27 @@
package com.yihu.hos.device.common.dao;
import com.yihu.hos.device.model.PatientDevice;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
;
public interface PatientDeviceDao extends PagingAndSortingRepository<PatientDevice, Long>, JpaSpecificationExecutor<PatientDevice> {
    @Query("select a from PatientDevice a where a.user = ?1")
	Iterable<PatientDevice> findByUser(String user);
	List<PatientDevice> findByUser(String user, Pageable pageRequest);
	List<PatientDevice> findByUserAndDoctor(String user, String doctor, Pageable pageRequest);
	List<PatientDevice> findByDeviceSnAndCategoryCode(String deviceSn, String categoryCode);
	PatientDevice findByDeviceSnAndCategoryCodeAndUserType(String deviceSn, String categoryCode, String userType);
	PatientDevice findByDeviceIdAndDeviceSnAndUserType(Long deviceId, String deviceSn, String userType);
}

+ 55 - 0
patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/common/dao/PatientHealthIndexDao.java

@ -0,0 +1,55 @@
package com.yihu.hos.device.common.dao;
import com.yihu.hos.device.model.PatientHealthIndex;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.Date;
import java.util.List;
public interface PatientHealthIndexDao
		extends PagingAndSortingRepository<PatientHealthIndex, Long>, JpaSpecificationExecutor<PatientHealthIndex> {
	
	/**
	 * 按录入时间和患者标识查询健康记录
	 * @param patientCode
	 * @param date
	 * @return
	 */
	@Query("select a from PatientHealthIndex a where a.user = ?1 and type = ?2 and a.recordDate = ?3 and a.del = '1'")
	Iterable<PatientHealthIndex> findByPatienDate(String patientCode, int type, Date date);
	
	@Query("select a from PatientHealthIndex a where a.user = ?1 and a.type = ?2 and a.recordDate between ?3 and ?4 and a.del = '1' group by recordDate order by recordDate asc")
	Iterable<PatientHealthIndex> findByPatient(String user, int type, Date begin, Date end);
	
	@Query("select a.value1 from PatientHealthIndex a where a.user = ?1 and a.type = ?2 and a.recordDate < ?3 and a.value1 > 0 order by recordDate desc")
	Page<String> findValue1ByPatient(String user, int type, Date recordDate, Pageable pageRequest);
	
	@Query("select a.value2 from PatientHealthIndex a where a.user = ?1 and a.type = ?2 and a.recordDate < ?3 and a.value2 > 0 order by recordDate desc")
	Page<String> findValue2ByPatient(String user, int type, Date recordDate, Pageable pageRequest);
	
	@Query("select a.value3 from PatientHealthIndex a where a.user = ?1 and a.type = ?2 and a.recordDate < ?3 and a.value3 > 0 order by recordDate desc")
	Page<String> findValue3ByPatient(String user, int type, Date recordDate, Pageable pageRequest);
	
	@Query("select a.value4 from PatientHealthIndex a where a.user = ?1 and a.type = ?2 and a.recordDate < ?3 and a.value4 > 0 order by recordDate desc")
	Page<String> findValue4ByPatient(String user, int type, Date recordDate, Pageable pageRequest);
	
	@Query("select a.value5 from PatientHealthIndex a where a.user = ?1 and a.type = ?2 and a.recordDate < ?3 and a.value5 > 0 order by recordDate desc")
	Page<String> findValue5ByPatient(String user, int type, Date recordDate, Pageable pageRequest);
	
	@Query("select a.value6 from PatientHealthIndex a where a.user = ?1 and a.type = ?2 and a.recordDate < ?3 and a.value6 > 0 order by recordDate desc")
	Page<String> findValue6ByPatient(String user, int type, Date recordDate, Pageable pageRequest);
	
	@Query("select a.value7 from PatientHealthIndex a where a.user = ?1 and a.type = ?2 and a.recordDate < ?3 and a.value7 > 0 order by recordDate desc")
	Page<String> findValue7ByPatient(String user, int type, Date recordDate, Pageable pageRequest);
	@Query("select a from PatientHealthIndex a where a.user = ?1 and a.type = ?2 and a.recordDate >= ?3 and a.recordDate <= ?4 and a.del = '1' order by recordDate desc")
	Page<PatientHealthIndex> findIndexByPatient(String patient, int type, Date start, Date end, Pageable pageRequest);
	@Query("select a from PatientHealthIndex a where a.user = ?1 and a.deviceSn = ?2 and a.value1 = ?3 and a.type = ?4 and a.recordDate = ?5 and a.del = '1' ")
	List<PatientHealthIndex> findByType(String patient, String deviceSn, String value1, Integer type, Date recordDate);
	
}

+ 24 - 0
patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/common/dao/PatientHealthStandardDao.java

@ -0,0 +1,24 @@
/*******************************************************************************
 * Copyright (c) 2005, 2014 springside.github.io
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 *******************************************************************************/
package com.yihu.hos.device.common.dao;
import com.yihu.hos.device.model.PatientHealthStandard;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
public interface PatientHealthStandardDao extends PagingAndSortingRepository<PatientHealthStandard, Long>, JpaSpecificationExecutor<PatientHealthStandard> {
	// 查询患者健康指标预警值
	Iterable<PatientHealthStandard> findByPatient(String patient);
	@Modifying
	@Query("delete PatientHealthStandard a where a.patient = ?1")
	int deleteByPatient(String patient);
	@Query("select a from PatientHealthStandard a where a.patient = ?1 and a.type = ?2")
	PatientHealthStandard findByPatientType(String patient, int type);
}

+ 14 - 0
patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/common/dao/PatientHealthTimeDao.java

@ -0,0 +1,14 @@
package com.yihu.hos.device.common.dao;
import com.yihu.hos.device.model.PatientHealthTime;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
/**
 * Created by Reece on 2017/5/11.
 */
public interface PatientHealthTimeDao extends PagingAndSortingRepository<PatientHealthTime, Long> {
    //    根据居民和设备sn码查询自定义的血糖时间段
    @Query(value = "select t.* from wlyy.wlyy_patient_health_time t where t.del = 1 and t.user = ?1 and t.device_sn = ?2 ", nativeQuery = true)
    PatientHealthTime findByUserAndSN(String user, String deviceSN);
}

+ 40 - 0
patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/common/dao/SignFamilyDao.java

@ -0,0 +1,40 @@
/*******************************************************************************
 * Copyright (c) 2005, 2014 springside.github.io
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 *******************************************************************************/
package com.yihu.hos.device.common.dao;
import com.yihu.hos.device.model.SignFamily;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
public interface SignFamilyDao extends PagingAndSortingRepository<SignFamily, Long>, JpaSpecificationExecutor<SignFamily> {
	@Query("select a from SignFamily a where a.doctor = ?1 and a.idcard = ?2 and a.type = 2 and a.status >= 0")
	SignFamily findByDoctorIdcard(String doctor, String idcard);
	@Query("select a from SignFamily a where a.idcard = ?1 and a.type = 2 and a.status >= 0")
	SignFamily findByIdcard(String idcard);
	@Query("select a from SignFamily a where a.idcard = ?1 and a.type =1 and a.status >= 0")
	SignFamily findSSByIdcard(String idcard);
	@Query("select a from SignFamily a where a.idcard = ?1 ")
	List<SignFamily> findAllByIdcard(String idcard);
	@Query("select a from SignFamily a where a.patient = ?1 and a.type =2 and a.status = 1")
	SignFamily findByjiatingPatientYes(String code);
	@Query("select a from SignFamily a where a.patient = ?1 and a.type =1 and a.status = 1")
	SignFamily findBySanshiPatientYes(String id);
}

+ 198 - 0
patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/common/http/HttpClientUtil.java

@ -0,0 +1,198 @@
package com.yihu.hos.device.common.http;
import org.apache.http.Consts;
import org.apache.http.HttpEntity;
import org.apache.http.ParseException;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.*;
import org.apache.http.client.protocol.HttpClientContext;
import org.apache.http.client.utils.URLEncodedUtils;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import org.json.JSONObject;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.util.StringUtils;
import org.springframework.web.client.RestTemplate;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
 * Created by hzp on 2016/8/9.
 */
public class HttpClientUtil {
    /**************************** 私有方法 *****************************************/
    private static CloseableHttpClient getCloseableHttpClient(SSLConnectionSocketFactory ssl) {
        if(ssl == null)
        {
            return HttpClients.createDefault();
        }
        else{
            CloseableHttpClient httpClient = HttpClients.custom()
                    .setSSLSocketFactory(ssl)
                    .build();
            return httpClient;
        }
    }
    private static void close(CloseableHttpClient httpClient, CloseableHttpResponse response) {
        try {
            if (httpClient != null) {
                httpClient.close();
            }
        } catch (Exception e) {
            System.out.print("关闭httpClient失败");
        }
        try {
            if (response != null) {
                response.close();
            }
        } catch (Exception e) {
            System.out.print("关闭response失败");
        }
    }
    private static HttpRequestBase getRequest(String method,String url,Map<String,Object> params,Map<String,Object> header) throws Exception
    {
        List<BasicNameValuePair> jsonParams = new ArrayList<>();
        //配置参数
        if(params!=null) {
            for (String key : params.keySet()) {
                jsonParams.add(new BasicNameValuePair(key, String.valueOf(params.get(key))));
            }
        }
        HttpRequestBase request;
        if(method.equals("POST"))
        {
            request = new HttpPost(url + "?" + URLEncodedUtils.format(jsonParams, Consts.UTF_8));
        }
        else if(method.equals("PUT"))
        {
            request = new HttpPut(url + "?" + URLEncodedUtils.format(jsonParams, Consts.UTF_8));
        }
        else if(method.equals("DELETE"))
        {
            request = new HttpDelete(url + "?" + URLEncodedUtils.format(jsonParams, Consts.UTF_8));
        }
        else
        {
            request = new HttpGet(url + "?" + URLEncodedUtils.format(jsonParams, Consts.UTF_8));
        }
        //配置头部信息
        if(header!=null)
        {
            for (String key : header.keySet()) {
                request.addHeader(key, header.get(key).toString());
            }
        }
        return request;
    }
    /****************************** 公用方法 *******************************************/
    /**
     * get请求
     */
    public static HttpResponse request(String method,String url,Map<String,Object> params,Map<String,Object> header,SSLConnectionSocketFactory ssl,String user,String password) {
        HttpResponse re = new HttpResponse();
        CloseableHttpResponse response = null;
        CloseableHttpClient httpclient = getCloseableHttpClient(ssl);
        //设置请求信息
        try {
            RequestConfig requestConfig = RequestConfig.custom().
                    setAuthenticationEnabled(true).build();
            HttpRequestBase request = getRequest(method,url,params,header);
            request.setConfig(requestConfig);
            //需要验证
            if (!StringUtils.isEmpty(user) && !StringUtils.isEmpty(password)) {
                HttpClientContext context = HttpClientContext.create();
                //通过http的上下文设置账号密码
                CredentialsProvider credsProvider = new BasicCredentialsProvider();
                credsProvider.setCredentials(new org.apache.http.auth.AuthScope(org.apache.http.auth.AuthScope.ANY_HOST, org.apache.http.auth.AuthScope.ANY_PORT),new org.apache.http.auth.UsernamePasswordCredentials(user, password));
                context.setCredentialsProvider(credsProvider);
                response = httpclient.execute(request, context);
            } else {
                response = httpclient.execute(request);
            }
            re.setStatusCode(response.getStatusLine().getStatusCode());
            re.setBody(EntityUtils.toString(response.getEntity(), "UTF-8"));
        } catch (Exception e) {
            re.setStatusCode(201);
            re.setBody(e.getMessage());
        } finally {
            close(httpclient, response);
        }
        return re;
    }
    /**
     * 发送get请求
     * @param url 请求地址
     * @param chatSet 编码格式
     * @return
     */
    public static String get(String url, String chatSet) {
        CloseableHttpClient httpclient = HttpClients.createDefault();
        try {
            // 创建httpget.
            HttpGet httpget = new HttpGet(url);
            // 执行get请求.
            CloseableHttpResponse response = httpclient.execute(httpget);
            try {
                // 获取响应实体
                HttpEntity entity = response.getEntity();
                if (entity != null) {
                    return EntityUtils.toString(entity, chatSet);
                }
            } finally {
                response.close();
            }
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (ParseException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            // 关闭连接,释放资源
            try {
                httpclient.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return null;
    }
    public static String postBody(String url,JSONObject params){
        RestTemplate restTemplate = new RestTemplate();
        HttpHeaders headers = new HttpHeaders();
        MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
        headers.setContentType(type);
        headers.add("Accept", MediaType.APPLICATION_JSON.toString());
        org.springframework.http.HttpEntity<String> formEntity = new org.springframework.http.HttpEntity<String>(params.toString(), headers);
        String ret = restTemplate.postForObject(url, formEntity, String.class);
        return ret;
    }
    public static void putBody(String url,JSONObject params){
        RestTemplate restTemplate = new RestTemplate();
        HttpHeaders headers = new HttpHeaders();
        MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
        headers.setContentType(type);
        headers.add("Accept", MediaType.APPLICATION_JSON.toString());
        org.springframework.http.HttpEntity<String> formEntity = new org.springframework.http.HttpEntity<String>(params.toString(), headers);
        restTemplate.put(url, formEntity, String.class);
    }
}

+ 159 - 0
patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/common/http/HttpHelper.java

@ -0,0 +1,159 @@
package com.yihu.hos.device.common.http;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.conn.ssl.TrustSelfSignedStrategy;
import org.apache.http.ssl.SSLContexts;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import javax.net.ssl.SSLContext;
import java.io.File;
import java.util.Map;
/**
 * Created by hzp on 2016/8/9.
 */
@Service
public class HttpHelper {
    private String sslKeystore;
    private String sslPassword;
    private String httpsUser;
    private String httpsUserPassword;
    private SSLConnectionSocketFactory  getDefaultSSL()
    {
        try {
            if (sslKeystore != null && sslKeystore.length() > 0 && sslPassword != null && sslPassword.length() > 0) {
                SSLContext sslContext = SSLContexts.custom()
                        .loadTrustMaterial(new File(sslKeystore), sslPassword.toCharArray(),
                                new TrustSelfSignedStrategy())
                        .build();
                return new SSLConnectionSocketFactory(
                        sslContext,
                        new String[]{"TLSv1"},
                        null,
                        null);
            } else {
                return null;
            }
        }
        catch (Exception ex)
        {
            System.out.print("获取SSL配置失败!");
            return null;
        }
    }
    /************************** Get方法 ******************************************/
    public HttpResponse get(String url)
    {
        return get(url,null,null);
    }
    public HttpResponse get(String url,Map<String,Object> params)
    {
        return get(url,params,null);
    }
    public HttpResponse get(String url,Map<String,Object> params,Map<String,Object> header)
    {
        if(url.startsWith("https"))
        {
            return get(url,params,header,getDefaultSSL(),httpsUser,httpsUserPassword);
        }
        else{
            //默认http不走ssl和用户密码
            return get(url, params, header, null, null, null);
        }
    }
    public HttpResponse get(String url,Map<String,Object> params,Map<String,Object> header,SSLConnectionSocketFactory ssl,String user,String password)
    {
        return HttpClientUtil.request("GET", url, params, header, ssl, user, password);
    }
    /************************** Post方法 ******************************************/
    public HttpResponse post(String url)
    {
        return post(url, null, null);
    }
    public HttpResponse post(String url,Map<String,Object> params)
    {
        return post(url, params, null);
    }
    public HttpResponse post(String url,Map<String,Object> params,Map<String,Object> header)
    {
        if(url.startsWith("https"))
        {
            return post(url, params, header, getDefaultSSL(),httpsUser,httpsUserPassword);
        }
        else{
            //默认http不走ssl和用户密码
            return post(url, params, header, null, null, null);
        }
    }
    public HttpResponse post(String url,Map<String,Object> params,Map<String,Object> header,SSLConnectionSocketFactory ssl,String user,String password)
    {
        return HttpClientUtil.request("POST",url,params,header,ssl,user,password);
    }
    /************************** Put方法 ******************************************/
    public HttpResponse put(String url)
    {
        return put(url, null, null);
    }
    public HttpResponse put(String url,Map<String,Object> params)
    {
        return put(url, params, null);
    }
    public HttpResponse put(String url,Map<String,Object> params,Map<String,Object> header)
    {
        if(url.startsWith("https"))
        {
            return put(url, params, header, getDefaultSSL(),httpsUser,httpsUserPassword);
        }
        else{
            //默认http不走ssl和用户密码
            return put(url, params, header, null, null, null);
        }
    }
    public HttpResponse put(String url,Map<String,Object> params,Map<String,Object> header,SSLConnectionSocketFactory ssl,String user,String password)
    {
        return HttpClientUtil.request("PUT",url,params,header,ssl,user,password);
    }
    /************************** Delete方法 **************************************/
    public HttpResponse delete(String url)
    {
        return delete(url, null, null);
    }
    public HttpResponse delete(String url,Map<String,Object> params)
    {
        return delete(url, params, null);
    }
    public HttpResponse delete(String url,Map<String,Object> params,Map<String,Object> header)
    {
        if(url.startsWith("https"))
        {
            return delete(url, params, header, getDefaultSSL(),httpsUser,httpsUserPassword);
        }
        else{
            //默认http不走ssl和用户密码
            return delete(url, params, header, null, null, null);
        }
    }
    public static HttpResponse delete(String url,Map<String,Object> params,Map<String,Object> header,SSLConnectionSocketFactory ssl,String user,String password)
    {
        return HttpClientUtil.request("DELETE",url,params,header,ssl,user,password);
    }
}

+ 36 - 0
patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/common/http/HttpResponse.java

@ -0,0 +1,36 @@
package com.yihu.hos.device.common.http;
/**
 * add by hzp at 2016-8-9
 */
public class HttpResponse {
    public HttpResponse()
    {
    }
    public HttpResponse(int statusCode, String body) {
        this.statusCode = statusCode;
        this.body = body;
    }
    private int statusCode;
    private String body;
    public int getStatusCode() {
        return statusCode;
    }
    public void setStatusCode(int statusCode) {
        this.statusCode = statusCode;
    }
    public String getBody() {
        return body;
    }
    public void setBody(String body) {
        this.body = body;
    }
}

+ 1547 - 0
patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/common/util/DateUtil.java

@ -0,0 +1,1547 @@
/****************************************************************************
 * Copyright(c) Yamaha Motor Solutions CO.,Ltd. 2010 All Rights Reserved
 * <p>
 * System Name�?(smart)Human Resource Management System
 * SubSystem Name�?-
 * service for all substystems
 * <p>
 * File Name: DateUtil
 * <p>
 * HISTORY RECORD
 * Ver.   Date           Create User/Update     Comment
 * -------------------------------------------------------------------------
 * 1.0 �?  2010/07/12 �?  tuchengye              New Making
 ***************************************************************************/
package com.yihu.hos.device.common.util;
import java.sql.Date;
import java.sql.Time;
import java.sql.Timestamp;
import java.text.*;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Locale;
import java.util.TimeZone;
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 Locale PRINT_LOCALE = Locale.ENGLISH;
    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 final static String DEFAULT_SIMPLEDATE_FORMAT = "yyyy-MM-dd HH:mm:ss SSS";
    public final static 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 DATE_WORLD_FORMAT = "yyyy-MM-dd'T'HH:mm:ss'Z'";
    public static String changeFormat(String changeDate, String beforeFormat, String afterFormat) {
        if (StringUtil.isBlank(changeDate)) {
            return changeDate;
        }
        return formatDate(parseDate(changeDate, beforeFormat), afterFormat);
    }
    public static String changeToYMDFormatForPrint(String changeDate) {
        if (StringUtil.isBlank(changeDate)) {
            return "";
        }
        DateFormat df = new SimpleDateFormat(PRINT_DATE_YMD_FORMAT, Locale.ENGLISH);
        return df.format(parseDate(changeDate, DEFAULT_CHAR_DATE_YMD_FORMAT));
    }
    public static String changeToYMFormatForPrint(String changeDate) {
        if (StringUtil.isBlank(changeDate)) {
            return "";
        }
        DateFormat df = new SimpleDateFormat(PRINT_DATE_YM_FORMAT, Locale.ENGLISH);
        return df.format(parseDate(changeDate, DEFAULT_DATE_YM_FORMAT));
    }
    public static String getFirstDate(String yearMonthStr, String yearMonthFormat, String dateFormat) throws Exception {
        DateFormat dfYearMonth = new SimpleDateFormat(yearMonthFormat);
        DateFormat dfDate = new SimpleDateFormat(dateFormat);
        java.util.Date date;
        if (yearMonthStr == null || yearMonthStr.equals("")) {
            throw new Exception(yearMonthStr + " is invalid.");
        }
        try {
            date = dfYearMonth.parse(yearMonthStr);
        } catch (ParseException e) {
            throw new Exception(yearMonthStr + " is invalid.");
        }
        return dfDate.format(date);
    }
    public static String getLastDate(String dateSource, String dateSourceFormat, String dateFormat) throws Exception {
        DateFormat dsf = new SimpleDateFormat(dateSourceFormat);
        DateFormat df = new SimpleDateFormat(dateFormat);
        java.util.Date date;
        String resultDateString;
        if (dateSource == null || dateSource.equals("")) {
            throw new Exception(dateSource + " is invalid.");
        }
        try {
            date = dsf.parse(dateSource);
            Calendar cal = Calendar.getInstance();
            cal.setTime(date);
            cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
            resultDateString = df.format(cal.getTime());
        } catch (ParseException e) {
            throw new Exception(dateSource + " is invalid.");
        }
        return resultDateString;
    }
    public static String getYearFromDBDate(String dateStr) {
        if (dateStr == null || dateStr.length() != DEFAULT_CHAR_DATE_YMD_FORMAT.length()) {
            return null;
        }
        return changeFormat(dateStr, DEFAULT_CHAR_DATE_YMD_FORMAT, DEFAULT_DATE_YEAR_FORMAT);
    }
    public static String getMonthFromDBDate(String dateStr) {
        if (dateStr == null || dateStr.length() != DEFAULT_CHAR_DATE_YMD_FORMAT.length()) {
            return null;
        }
        return changeFormat(dateStr, DEFAULT_CHAR_DATE_YMD_FORMAT, DEFAULT_DATE_MONTH_FORMAT);
    }
    public static String getYMFromDBDate(String dateStr) {
        if (dateStr == null || dateStr.length() != DEFAULT_CHAR_DATE_YMD_FORMAT.length()) {
            return null;
        }
        return changeFormat(dateStr, DEFAULT_CHAR_DATE_YMD_FORMAT, DEFAULT_DATE_YM_FORMAT);
    }
    public static int getDifferenceOfDays(java.util.Date dateFrom, java.util.Date dateTo) {
        return new Long((dateTo.getTime() - dateFrom.getTime()) / 1000 / 60 / 60 / 24).intValue();
    }
    public static int getDifferenceOfDays(String dateFromStr, String dateToStr, String dateFormat) {
        java.util.Date dateFrom = parseDate(dateFromStr, dateFormat);
        java.util.Date dateTo = parseDate(dateToStr, dateFormat);
        return getDifferenceOfDays(dateFrom, dateTo);
    }
    public static int getDifferenceOfDays(String dateFromStr, String dateToStr) {
        return getDifferenceOfDays(dateFromStr, dateToStr, DEFAULT_CHAR_DATE_YMD_FORMAT);
    }
    public static String formatTime(String timeStr) {
        if (timeStr == null || timeStr.length() != 6) {
            return null;
        }
        return StringUtil.substring(timeStr, 0, 2)
                + ":" + StringUtil.substring(timeStr, 2, 4)
                + ":" + StringUtil.substring(timeStr, 4);
    }
    public static String toString(Date date) {
        return toString((java.util.Date) date);
    }
    public static String toString(java.util.Date date) {
        return toString(date, DEFAULT_DATE_YMD_FORMAT);
    }
    public static String toString(Date date, String format) {
        return toString((java.util.Date) date, format);
    }
    public static String toString(java.util.Date date, String format) {
        if (date == null) {
            return null;
        }
        if (format == null) {
            throw new IllegalArgumentException("The value of an argument is inaccurate.");
        }
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        return sdf.format(date);
    }
    public static String formatTimestamp(Timestamp time) {
        return formatTimestamp(time, DEFAULT_TIMESTAMP_FORMAT);
    }
    public static String formatTimestamp(Timestamp time, String format) {
        if (time == null) {
            return null;
        }
        if (format == null) {
            throw new IllegalArgumentException("The value of an argument is inaccurate.");
        }
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        return sdf.format(time);
    }
    public static String toString(Time time, String format) {
        if (time == null) {
            return null;
        }
        if (format == null) {
            throw new IllegalArgumentException("The value of an argument is inaccurate.");
        }
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        return sdf.format(time);
    }
    public static Date formatCharDateYMD(String str) {
        return formatCharDateYMD(str, DEFAULT_DATE_YMD_FORMAT);
    }
    public static Date formatCharDateYMD(String str, String format) {
        if (str == null || str.trim().length() == 0) {
            return null;
        }
        if (format == null) {
            throw new IllegalArgumentException("The value of an argument is inaccurate.");
        }
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        ParsePosition pos = new ParsePosition(0);
        java.util.Date date = sdf.parse(str, pos);
        if (date == null) {
            return null;
        }
        return new Date(date.getTime());
    }
    public static Date formatCharDateYMD(String yy, String mm, String dd) {
        if (yy == null || mm == null || dd == null || yy.trim().length() == 0 ||
                mm.trim().length() == 0 || dd.trim().length() == 0) {
            return null;
        }
        return formatCharDateYMD(yy + "-" + (mm != null && mm.length() == 1 ? "0" + mm : mm) + "-" +
                (dd != null && dd.length() == 1 ? "0" + dd : dd));
    }
    public static Timestamp toTimestamp(String str) {
        if (str == null) {
            return null;
        }
        try {
            return Timestamp.valueOf(str.trim());
        } catch (IllegalArgumentException iae) {
            return null;
        }
    }
    public static Timestamp toTimestamp(String str, String format) {
        if (str == null) {
            return null;
        }
        try {
            return new Timestamp(parseDate(str, format).getTime());
        } catch (Exception e) {
            return null;
        }
    }
    public static Time toTime(String str) {
        if (str == null) {
            return null;
        }
        try {
            return (str.length() == 5 ? Time.valueOf(str + ":00") : Time.valueOf(str));
        } catch (Exception e) {
            return null;
        }
    }
    public static String toString(Time time) {
        return toString(time, DEFAULT_TIME_FORMAT);
    }
    public static String toYM(String yy, String mm) {
        if (yy == null || mm == null) {
            return null;
        }
        if (yy.trim().length() == 0 && mm.trim().length() != 0 ||
                yy.trim().length() != 0 && mm.trim().length() == 0) {
            return null;
        }
        return yy + (mm != null && mm.length() == 1 ? "0" + mm : mm);
    }
    public static String getNowDate() {
        return getNowDate(DEFAULT_NOW_STRING_FORMAT);
    }
    public static String getNowDate(String format) {
        if (format == null) {
            return null;
        }
        SimpleDateFormat sdf = new SimpleDateFormat(format, Locale.JAPAN);
        java.util.Date date = Calendar.getInstance().getTime();
        if (date == null) {
            return null;
        }
        return sdf.format(date);
    }
    public static Date getSysDate() {
        return new Date(Calendar.getInstance().getTime().getTime());
    }
    public static java.util.Date getSysDateYMDHMS() {
        Date dSysDateYMD = DateUtil.getSysDate();
        Timestamp ts = formatYMDToYMDHMS(StringUtil.toString(dSysDateYMD));
        return ts;
    }
    public static Timestamp getSysDateTime() {
        return new Timestamp(Calendar.getInstance().getTime().getTime());
    }
    public static Time getSysTime() {
        return new Time(Calendar.getInstance().getTime().getTime());
    }
    public static String toAge(String birthDay) {
        if (birthDay == null || birthDay.length() != 8) {
            return null;
        }
        int birthYear = Integer.parseInt(birthDay.substring(0, 4));
        int birthMonth = Integer.parseInt(birthDay.substring(4, 6));
        int birthDayOfMonth = Integer.parseInt(birthDay.substring(6, 8));
        return toAge(birthYear, birthMonth, birthDayOfMonth);
    }
    public static String toAge(int birthYear, int birthMonth, int birthDayOfMonth) {
        Calendar cl = Calendar.getInstance();
        int year = cl.get(Calendar.YEAR);
        int month = cl.get(Calendar.MONTH) + 1;
        int day = cl.get(Calendar.DAY_OF_MONTH);
        int sa = 0;
        if (month > birthMonth) {
            sa = 0;
        } else if (month == birthMonth && day >= birthDayOfMonth) {
            sa = 0;
        } else {
            sa = 1;
        }
        int age = year - birthYear - sa;
        return Integer.toString(age);
    }
    public static Date addDate(int add, java.util.Date d) {
        return addDate(add, new Date(d.getTime()));
    }
    public static java.util.Date addDateTime(int add, java.util.Date d) {
        return addDateTime(add, new Date(d.getTime()));
    }
    public static Date addDate(int add, Date d) {
        if (d == null) {
            return null;
        }
        Calendar cal = Calendar.getInstance();
        cal.setTime((java.util.Date) d);
        cal.setTimeZone(TimeZone.getDefault());
        cal.add(Calendar.DAY_OF_MONTH, add);
        return new Date(cal.getTime().getTime());
    }
    public static java.util.Date addDateTime(int add, Date d) {
        if (d == null) {
            return null;
        }
        Calendar cal = Calendar.getInstance();
        cal.setTime((java.util.Date) d);
        cal.setTimeZone(TimeZone.getDefault());
        cal.add(Calendar.DAY_OF_MONTH, add);
        return cal.getTime();
    }
    public static String addDate(int add, String sDate) {
        if (sDate.length() < 8) {
            return null;
        }
        return formatDate(addDate(add, formatCharDateYMD(sDate, DEFAULT_CHAR_DATE_YMD_FORMAT)), DEFAULT_CHAR_DATE_YMD_FORMAT);
    }
    public static Date addMonth(int add, java.util.Date d) {
        return addMonth(add, new Date(d.getTime()));
    }
    public static Date addMonth(int add, Date d) {
        if (d == null) {
            return null;
        }
        Calendar cal = Calendar.getInstance();
        cal.setTime((java.util.Date) d);
        cal.setTimeZone(TimeZone.getDefault());
        cal.add(Calendar.MONTH, add);
        return new Date(cal.getTime().getTime());
    }
    public static String addMonth(int add, String sDate) {
        if (sDate.length() < 8) {
            return null;
        }
        return formatDate(addMonth(add, formatCharDateYMD(sDate, DEFAULT_CHAR_DATE_YMD_FORMAT)), DEFAULT_CHAR_DATE_YMD_FORMAT);
    }
    public static Date addYear(int add, java.util.Date d) {
        return addYear(add, new Date(d.getTime()));
    }
    public static Date addYear(int add, Date d) {
        if (d == null) {
            return null;
        }
        Calendar cal = Calendar.getInstance();
        cal.setTime((java.util.Date) d);
        cal.setTimeZone(TimeZone.getDefault());
        cal.add(Calendar.YEAR, add);
        return new Date(cal.getTime().getTime());
    }
    public static String addYear(int add, String sDate) {
        if (sDate.length() < 8) {
            return null;
        }
        return formatDate(addYear(add, formatCharDateYMD(sDate, DEFAULT_CHAR_DATE_YMD_FORMAT)), DEFAULT_CHAR_DATE_YMD_FORMAT);
    }
    public static String getNowDateTime() {
        SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss", Locale.JAPAN);
        df.setTimeZone(TimeZone.getDefault());
        return df.format(new java.util.Date());
    }
    public static String getCurrentString() {
        return getCurrentString(DEFAULT_SIMPLEDATE_FORMAT);
    }
    public static String getCurrentString(String pattern) {
        SimpleDateFormat f = new SimpleDateFormat(pattern);
        return f.format(Calendar.getInstance(TimeZone.getDefault()).getTime());
    }
    public static long compareDate(String pattern, String s1, String s2) {
        SimpleDateFormat f = new SimpleDateFormat(pattern);
        try {
            return f.parse(s1).getTime() - f.parse(s2).getTime();
        } catch (Exception e) {
            return -1;
        }
    }
    public static long compareDate(java.util.Date s1, java.util.Date s2) {
        try {
            return compareDate(DEFAULT_DATE_YMD_FORMAT, toString(s1), toString(s2));
        } catch (Exception e) {
            return -1;
        }
    }
    public static long compareDateTime(java.util.Date s1, java.util.Date s2) {
        return s1.getTime() - s2.getTime();
    }
    public static java.util.Date parseDate(String value, String pattern) {
        try {
            TimeZone tz = TimeZone.getDefault();
            String dateFormat = pattern;
            SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
            sdf.setTimeZone(tz);
            // Parse date
            java.util.Date parsed = null;
            parsed = sdf.parse(value);
            return parsed;
        } catch (ParseException e) {
            return null;
        }
    }
    public static String formatDate(java.util.Date value, String pattern) {
        TimeZone tz = TimeZone.getDefault();
        SimpleDateFormat sdf = new SimpleDateFormat(pattern);
        sdf.setTimeZone(tz);
        return sdf.format(value);
    }
    public static int getLastDay(Date dt) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(dt);
        int lastDay = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
        return lastDay;
    }
    public static String getYMDFormat(String datePtn) {
        final String[][] DATE_FORMAT_YMD_LIST = {{"1", "yyyy/MM/dd"},
                {"2", "yyyy.MM.dd"},
                {"3", "yyyy-MM-dd"},
                {"4", "MM/dd/yyyy"},
                {"5", "MM.dd.yyyy"},
                {"6", "MM-dd-yyyy"},
                {"7", "dd/MM/yyyy"},
                {"8", "dd.MM.yyyy"},
                {"9", "dd-MM-yyyy"},
                {"A", "dd/MM yyyy"}
        };
        String format = null;
        for (int i = 0; i < DATE_FORMAT_YMD_LIST.length; i++) {
            if (DATE_FORMAT_YMD_LIST[i][0].equals(datePtn)) {
                format = DATE_FORMAT_YMD_LIST[i][1];
                break;
            }
        }
        if (format == null) {
            throw new IllegalArgumentException("The value of an argument is inaccurate.");
        }
        return format;
    }
    public static String getYMFormat(String datePtn) {
        final String[][] DATE_FORMAT_YM_LIST = {{"1", "yyyy/MM"},
                {"2", "yyyy.MM"},
                {"3", "yyyy-MM"},
                {"4", "MM/yyyy"},
                {"5", "MM.yyyy"},
                {"6", "MM-yyyy"},
                {"7", "MM/yyyy"},
                {"8", "MM.yyyy"},
                {"9", "MM-yyyy"},
                {"A", "MM yyyy"},
                {"B", "yyyyMM"}
        };
        String format = null;
        for (int i = 0; i < DATE_FORMAT_YM_LIST.length; i++) {
            if (DATE_FORMAT_YM_LIST[i][0].equals(datePtn)) {
                format = DATE_FORMAT_YM_LIST[i][1];
                break;
            }
        }
        if (format == null) {
            throw new IllegalArgumentException("The value of an argument is inaccurate.");
        }
        return format;
    }
    public static String toYMD(Date date, String datePtn) {
        if (date == null) {
            return null;
        }
        return toString(date, getYMDFormat(datePtn));
    }
    public static String formatDateYMD(String str, String datePtn) {
        if (str == null || str.trim().length() == 0) {
            return null;
        }
        return toYMD(formatCharDateYMD(str), datePtn);
    }
    public static String formatDateYMD(String yy, String mm, String dd, String datePtn) {
        if (yy == null || mm == null || dd == null || yy.trim().length() == 0
                || mm.trim().length() == 0 || dd.trim().length() == 0) {
            return null;
        }
        return formatDateYMD(yy + "-" + (mm != null && mm.length() == 1 ? "0" + mm : mm)
                + "-" + (dd != null && dd.length() == 1 ? "0" + dd : dd), datePtn);
    }
    public static String formatDateYM(Date date, String datePtn) {
        if (date == null) {
            return null;
        }
        return toString(date, getYMFormat(datePtn));
    }
    public static String formatDateYM(String str, String datePtn) {
        if (str == null || str.trim().length() == 0) {
            return null;
        }
        return formatDateYM(formatCharDateYMD(str, DEFAULT_DATE_YM_FORMAT), datePtn);
    }
    public static String formatDateYM(String yy, String mm, String datePtn) {
        if (yy == null || mm == null || yy.trim().length() == 0 || mm.trim().length() == 0) {
            return null;
        }
        return formatDateYM(yy + (mm != null && mm.length() == 1 ? "0" + mm : mm), datePtn);
    }
    public static String getTimestampFormat(String dateStyleId) {
        return getYMDFormat(dateStyleId) + " HH:mm:ss";
    }
    public static Date toDateFromTime(String time) {
        try {
            return toDateFromTime(Long.parseLong(time));
        } catch (Exception iae) {
            return null;
        }
    }
    public static Date toDateFromTime(long time) {
        return new Date(time);
    }
    public static Timestamp toTimestampFromTime(String time) {
        try {
            return toTimestampFromTime(Long.parseLong(time));
        } catch (Exception iae) {
            return null;
        }
    }
    public static Timestamp toTimestampFromTime(long time) {
        return new Timestamp(time);
    }
    public static Timestamp toTimestampFromGMT(int yy, int mm, int dd, int hh, int mi, int ss) {
        return toTimestampFromGMT(
                String.valueOf(yy),
                String.valueOf(mm),
                String.valueOf(dd),
                String.valueOf(hh),
                String.valueOf(mi),
                String.valueOf(ss));
    }
    public static Timestamp toTimestampFromGMT(String yy, String mm, String dd,
                                               String hh, String mi, String ss) {
        mm = mm != null && mm.length() == 1 ? "0" + mm : mm;
        dd = dd != null && dd.length() == 1 ? "0" + dd : dd;
        hh = hh != null && hh.length() == 1 ? "0" + hh : hh;
        mi = mi != null && mi.length() == 1 ? "0" + mi : mi;
        ss = ss != null && ss.length() == 1 ? "0" + ss : ss;
        return toTimestampFromGMT(yy + "-" + mm + "-" + dd + " " + hh + ":" + mi + ":" + ss);
    }
    public static Timestamp toTimestampFromGMT(String str) {
        if (str == null) {
            return null;
        }
        SimpleDateFormat sdf = new SimpleDateFormat(DEFAULT_TIMESTAMP_FORMAT);
        sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
        ParsePosition pos = new ParsePosition(0);
        java.util.Date date = sdf.parse(str, pos);
        if (date == null) {
            return null;
        }
        return new Timestamp(date.getTime());
    }
    public static Timestamp toTimestampFromGMT(Timestamp time) {
        return toTimestampFromGMT(StringUtil.toString(time));
    }
    public static Timestamp toTimestampFromLocal(String yy, String mm, String dd, String hh,
                                                 String mi, String ss, String differTimeSign,
                                                 String differenceTime, String summerTimeFrom,
                                                 String summerTimeTo, String summerTime) {
        mm = mm != null && mm.length() == 1 ? "0" + mm : mm;
        dd = dd != null && dd.length() == 1 ? "0" + dd : dd;
        hh = hh != null && hh.length() == 1 ? "0" + hh : hh;
        mi = mi != null && mi.length() == 1 ? "0" + mi : mi;
        ss = ss != null && ss.length() == 1 ? "0" + ss : ss;
        return toTimestampFromLocal(
                yy + "-" + mm + "-" + dd + " " + hh + ":" + mi + ":" + ss,
                differTimeSign,
                differenceTime,
                summerTimeFrom,
                summerTimeTo,
                summerTime);
    }
    public static Timestamp toTimestampFromLocal(String str, String differTimeSign,
                                                 String differenceTime, String summerTimeFrom,
                                                 String summerTimeTo, String summerTime) {
        if (str == null) {
            return null;
        }
        Timestamp time = toTimestamp(str);
        if (time == null) {
            return null;
        }
        long localTime = toGMTTimeFromLocalTime(
                time.getTime(),
                differTimeSign,
                differenceTime,
                summerTimeFrom,
                summerTimeTo,
                summerTime);
        return toTimestampFromGMT(new Timestamp(localTime));
    }
    public static Timestamp toTimestampFromLocal(Timestamp time, String differTimeSign,
                                                 String differenceTime, String summerTimeFrom,
                                                 String summerTimeTo, String summerTime) {
        return toTimestampFromLocal(
                StringUtil.toString(time),
                differTimeSign,
                differenceTime,
                summerTimeFrom,
                summerTimeTo,
                summerTime);
    }
    public static long toGMTTime(long local) {
        SimpleDateFormat sdf = new SimpleDateFormat(DEFAULT_TIMESTAMP_FORMAT);
        sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
        ParsePosition pos = new ParsePosition(0);
        java.util.Date date = sdf.parse(StringUtil.toString(new Timestamp(local)), pos);
        if (date == null) {
            return -1;
        }
        return date.getTime();
    }
    public static long toGMTTime(Timestamp local) {
        if (local == null) {
            return -1;
        }
        return toGMTTime(local.getTime());
    }
    public static Timestamp toGMTTimestamp(long local) {
        long time = toGMTTime(local);
        if (time == -1) {
            return null;
        }
        return new Timestamp(time);
    }
    public static Timestamp toGMTTimestamp(Timestamp local) {
        if (local == null) {
            return null;
        }
        return toGMTTimestamp(local.getTime());
    }
    public static String toYMD(String yy, String mm, String dd) {
        if (yy == null || mm == null || dd == null) {
            return null;
        }
        if (yy.trim().length() == 0 || mm.trim().length() == 0) {
            return "";
        }
        mm = mm != null && mm.length() == 1 ? "0" + mm : mm;
        if (dd != null && dd.length() == 0) {
            dd = "  ";
        }
        if (dd != null && dd.length() == 1) {
            dd = "0" + dd;
        }
        return yy + mm + dd;
    }
    public static String getYearFromYM(String ym) {
        if (ym == null || ym.length() != DEFAULT_DATE_YM_FORMAT.length()) {
            return null;
        }
        return ym.substring(0, 4);
    }
    public static String getMonthFromYM(String ym) {
        if (ym == null || ym.length() != DEFAULT_DATE_YM_FORMAT.length()) {
            return null;
        }
        return ym.substring(4, 6);
    }
    public static String getYearFromYMD(Date ymd) {
        return getYearFromYMD(toString(ymd));
    }
    public static String getMonthFromYMD(Date ymd) {
        return getMonthFromYMD(toString(ymd));
    }
    public static String getDateFromYMD(Date ymd) {
        return getDateFromYMD(toString(ymd));
    }
    public static String getYearFromYMD(String ymd) {
        if (ymd == null || ymd.length() != DEFAULT_DATE_YMD_FORMAT.length()) {
            return null;
        }
        return ymd.substring(0, 4);
    }
    public static String getMonthFromYMD(String ymd) {
        if (ymd == null || ymd.length() != DEFAULT_DATE_YMD_FORMAT.length()) {
            return null;
        }
        return ymd.substring(5, 7);
    }
    public static String getDateFromYMD(String ymd) {
        if (ymd == null || ymd.length() != DEFAULT_DATE_YMD_FORMAT.length()) {
            return null;
        }
        return ymd.substring(8, 10);
    }
    public static String getDateFromDateTime(String dateTime) {
        if (dateTime == null || dateTime.length() < DEFAULT_DATE_YMD_FORMAT.length()) {
            return null;
        }
        return dateTime.substring(0, 10);
    }
    public static String getHourFromHMS(String hms) {
        if (hms == null || hms.length() != DEFAULT_TIME_FORMAT.length()) {
            return null;
        }
        return hms.substring(0, 2);
    }
    public static String getMinuteFromHMS(String hms) {
        if (hms == null || hms.length() != DEFAULT_TIME_FORMAT.length()) {
            return null;
        }
        return hms.substring(3, 5);
    }
    public static String getSecondFromHMS(String hms) {
        if (hms == null || hms.length() != DEFAULT_TIME_FORMAT.length()) {
            return null;
        }
        return hms.substring(6, 8);
    }
    public static String formatDateYMD(Date date, String dateStyleId) {
        if (date == null) {
            return null;
        }
        return toString(date, getYMDFormat(dateStyleId));
    }
    public static long getSystemTime() {
        return Calendar.getInstance().getTime().getTime();
    }
    public static Timestamp getSystemTimestamp() {
        return new Timestamp(getSystemTime());
    }
    public static long getSystemTimeGMTToday() {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
        Timestamp today = toTimestamp(sdf.format(Calendar.getInstance().getTime()) + " 00:00:00");
        return toGMTTime(today);
    }
    public static Timestamp getSystemTimestampGMTToday() {
        long time = getSystemTimeGMTToday();
        if (time == -1) {
            return null;
        }
        return new Timestamp(time);
    }
    public static Date getSysDateGMTToday() {
        long time = getSystemTimeGMTToday();
        if (time == -1) {
            return null;
        }
        return new Date(getSystemTimeGMTToday());
    }
    public static String formatTimestamp(Timestamp time, String differTimeSign,
                                         String differenceTime, String summerTimeFrom,
                                         String summerTimeTo, String summerTime) {
        if (time == null) {
            return null;
        }
        return toStringFormatLocalTime(
                time.getTime(),
                differTimeSign,
                differenceTime,
                summerTimeFrom,
                summerTimeTo,
                summerTime,
                DEFAULT_TIMESTAMP_FORMAT);
    }
    public static String formatTimestamp(Timestamp time, String differTimeSign,
                                         String differenceTime, String summerTimeFrom,
                                         String summerTimeTo, String summerTime, String dateStyleId) {
        if (time == null) {
            return null;
        }
        return toStringFormatLocalTime(
                time.getTime(),
                differTimeSign,
                differenceTime,
                summerTimeFrom,
                summerTimeTo,
                summerTime,
                getTimestampFormat(dateStyleId));
    }
    public static String formatTimestamp(long time, String differTimeSign, String differenceTime,
                                         String summerTimeFrom, String summerTimeTo, String summerTime) {
        return toStringFormatLocalTime(
                time,
                differTimeSign,
                differenceTime,
                summerTimeFrom,
                summerTimeTo,
                summerTime,
                DEFAULT_TIMESTAMP_FORMAT);
    }
    public static String formatTimestamp(long time, String differTimeSign, String differenceTime,
                                         String summerTimeFrom, String summerTimeTo,
                                         String summerTime, String dateStyleId) {
        return toStringFormatLocalTime(
                time,
                differTimeSign,
                differenceTime,
                summerTimeFrom,
                summerTimeTo,
                summerTime,
                getTimestampFormat(dateStyleId));
    }
    public static String formatTimestampToDate(Timestamp time, String differTimeSign,
                                               String differenceTime, String summerTimeFrom,
                                               String summerTimeTo, String summerTime) {
        if (time == null) {
            return null;
        }
        return toStringFormatLocalTime(
                time.getTime(),
                differTimeSign,
                differenceTime,
                summerTimeFrom,
                summerTimeTo,
                summerTime,
                DEFAULT_DATE_YMD_FORMAT);
    }
    public static String formatTimestampToDate(Timestamp time, String differTimeSign,
                                               String differenceTime, String summerTimeFrom,
                                               String summerTimeTo, String summerTime, String dateStyleId) {
        if (time == null) {
            return null;
        }
        return toStringFormatLocalTime(
                time.getTime(),
                differTimeSign,
                differenceTime,
                summerTimeFrom,
                summerTimeTo,
                summerTime,
                getYMDFormat(dateStyleId));
    }
    public static String formatTimestampToDate(long time, String differTimeSign,
                                               String differenceTime, String summerTimeFrom,
                                               String summerTimeTo, String summerTime) {
        return toStringFormatLocalTime(
                time,
                differTimeSign,
                differenceTime,
                summerTimeFrom,
                summerTimeTo,
                summerTime,
                DEFAULT_DATE_YMD_FORMAT);
    }
    public static String formatTimestampToDate(long time, String differTimeSign,
                                               String differenceTime, String summerTimeFrom,
                                               String summerTimeTo, String summerTime, String dateStyleId) {
        return toStringFormatLocalTime(
                time,
                differTimeSign,
                differenceTime,
                summerTimeFrom,
                summerTimeTo,
                summerTime,
                getYMDFormat(dateStyleId));
    }
    public static String toStringFormatLocalTime(long time, String differTimeSign,
                                                 String differenceTime, String summerTimeFrom,
                                                 String summerTimeTo, String summerTime, String format) {
        long localTime = time;
        long differenceTimeLong = toDifferenceTimeLong(differenceTime);
        long summerTimeLong = toSummerTimeLong(summerTime);
        if (differTimeSign != null && differTimeSign.equals("+")) {
            localTime += differenceTimeLong;
        } else {
            localTime -= differenceTimeLong;
        }
        if (isSummerTime(time, summerTimeFrom, summerTimeTo)) {
            localTime -= summerTimeLong;
        }
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
        return sdf.format(new java.util.Date(localTime));
    }
    public static long toGMTTimeFromLocalTime(long localTime, String differTimeSign,
                                              String differenceTime, String summerTimeFrom,
                                              String summerTimeTo, String summerTime) {
        long time = localTime;
        long differenceTimeLong = toDifferenceTimeLong(differenceTime);
        long summerTimeLong = toSummerTimeLong(summerTime);
        if (differTimeSign != null && differTimeSign.equals("+")) {
            time -= differenceTimeLong;
        } else {
            time += differenceTimeLong;
        }
        if (isSummerTime(localTime, summerTimeFrom, summerTimeTo)) {
            time += summerTimeLong;
        }
        return time;
    }
    public static long toDifferenceTimeLong(String differenceTime) {
        long differenceTimeLong;
        try {
            long differenceTimeM = Long.parseLong(differenceTime.substring(0, 2));
            long differenceTimeS = Long.parseLong(differenceTime.substring(2, 4));
            differenceTimeLong = (differenceTimeM * 60 * 60 * 1000) + (differenceTimeS * 60 * 1000);
        } catch (Exception e) {
            differenceTimeLong = 0;
        }
        return differenceTimeLong;
    }
    public static long toSummerTimeLong(String summerTime) {
        long summerTimeLong;
        try {
            long summerTimeM = Long.parseLong(summerTime.substring(0, 2));
            long summerTimeS = Long.parseLong(summerTime.substring(2, 4));
            summerTimeLong = (summerTimeM * 60 * 60 * 1000) + (summerTimeS * 60 * 1000);
        } catch (Exception e) {
            summerTimeLong = 0;
        }
        return summerTimeLong;
    }
    public static boolean isSummerTime(long time, String summerTimeFrom, String summerTimeTo) {
        if (summerTimeFrom == null || summerTimeFrom.trim().length() != 4 ||
                summerTimeTo == null || summerTimeTo.trim().length() != 4) {
            return false;
        }
        SimpleDateFormat sdf = new SimpleDateFormat(DEFAULT_DATE_MD_FORMAT);
        sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
        String md = sdf.format(new java.util.Date(time));
        if (md.compareTo(summerTimeFrom) >= 0 && md.compareTo(summerTimeTo) <= 0) {
            // サマータイム
            return true;
        } else {
            return false;
        }
    }
    public static String formatGMTTimestamp(Timestamp time) {
        return toStringFormatGMTTime(time, DEFAULT_TIMESTAMP_FORMAT);
    }
    public static String formatGMTTimestamp(Timestamp time, String dateStyleId) {
        return toStringFormatGMTTime(time, getTimestampFormat(dateStyleId));
    }
    public static String formatGMTTimestamp(long time) {
        return toStringFormatGMTTime(time, DEFAULT_TIMESTAMP_FORMAT);
    }
    public static String formatGMTTimestamp(long time, String dateStyleId) {
        return toStringFormatGMTTime(time, getTimestampFormat(dateStyleId));
    }
    public static String formatGMTTimestampToDate(Timestamp time) {
        return toStringFormatGMTTime(time, DEFAULT_DATE_YMD_FORMAT);
    }
    public static String formatGMTTimestampToDate(Timestamp time, String dateStyleId) {
        return toStringFormatGMTTime(time, getYMDFormat(dateStyleId));
    }
    public static String formatGMTTimestampToDate(long time) {
        return toStringFormatGMTTime(time, DEFAULT_DATE_YMD_FORMAT);
    }
    public static String formatGMTTimestampToDate(long time, String dateStyleId) {
        return toStringFormatGMTTime(time, getYMDFormat(dateStyleId));
    }
    public static String toStringFormatGMTTime(Timestamp time, String format) {
        if (time == null) {
            return null;
        }
        return toStringFormatGMTTime(time.getTime(), format);
    }
    public static String toStringFormatGMTTime(long time, String format) {
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
        return sdf.format(new java.util.Date(time));
    }
    public static String toStringFormatTime(long time, String format) {
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        return sdf.format(new java.util.Date(time));
    }
    public static int getLastDay(int yy, int mm) {
        GregorianCalendar gc = new GregorianCalendar(yy, mm - 1, 1);
        return gc.getActualMaximum(GregorianCalendar.DATE);
    }
    public static String getLocalPattern(Locale locale) {
        SimpleDateFormat f = new SimpleDateFormat();
        f.setCalendar(Calendar.getInstance(locale));
        return f.toLocalizedPattern();
    }
    public static int getYears(java.util.Date date0, java.util.Date date1) {
        Calendar calendar0 = Calendar.getInstance();
        calendar0.setTime(date0);
        Calendar calendar1 = Calendar.getInstance();
        calendar1.setTime(date1);
        int year0 = calendar0.get(Calendar.YEAR);
        int year1 = calendar1.get(Calendar.YEAR);
        int years = year1 - year0;
        return years;
    }
    public static String getDifferenceOfYears(java.util.Date dateFrom, java.util.Date dateTo) {
        String years = DEFAULT_YEARS;
        if (dateFrom == null || dateTo == null) {
            years = DEFAULT_YEARS;
        } else {
            int days = getDifferenceOfDays(dateFrom, dateTo);
            DecimalFormat df = new DecimalFormat("#.0");
            years = df.format(days / 365.0);
        }
        return years;
    }
    public static Date formatCharDateYMDHMS(String str) {
        String format = DEFAULT_YMDHMSDATE_FORMAT;
        if (str == null || str.trim().length() == 0) {
            return null;
        }
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        ParsePosition pos = new ParsePosition(0);
        java.util.Date date = sdf.parse(str, pos);
        if (date == null) {
            return null;
        }
        return new Date(date.getTime());
    }
    public static Timestamp formatYMDToYMDHMS(String str) {
        String format = DEFAULT_YMDHMSDATE_FORMAT;
        if (str == null || str.trim().length() == 0) {
            return null;
        }
        str += " 00:00:00";
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        ParsePosition pos = new ParsePosition(0);
        java.util.Date date = sdf.parse(str, pos);
        if (date == null) {
            return null;
        }
        Timestamp ts = DateUtil.fromatDateToTimestamp(new Date(date.getTime()));
        return ts;
    }
    public static Timestamp fromatDateToTimestamp(java.util.Date date) {
        Timestamp ts = new Timestamp(System.currentTimeMillis());
        try {
            SimpleDateFormat df = new SimpleDateFormat(DEFAULT_YMDHMSDATE_FORMAT);
            String time = df.format(date);
            ts = Timestamp.valueOf(time);
        } catch (Exception e) {
            return null;
        }
        return ts;
    }
    /**
     * 获取标准时区偏移
     * @return
     */
    public static int geTimeZoneOffset(){
        int offset=0;
        Calendar cal = Calendar.getInstance();
        TimeZone timeZone = cal.getTimeZone();
        offset=timeZone.getRawOffset()/(1000*60*60);
        return offset;
    }
    /**
     *  凌晨0点的时间
     * @param date  时间
     * @param days  正数�? days天后 ,负数为 days天前
     * @return
     */
    public static java.util.Date getTimesmorning(java.util.Date date,int days){
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        cal.set(Calendar.DATE, cal.get(Calendar.DATE) +(days));
        cal.set(Calendar.HOUR_OF_DAY, 0);
        cal.set(Calendar.SECOND, 0);
        cal.set(Calendar.MINUTE, 0);
        cal.set(Calendar.MILLISECOND, 0);
        return  cal.getTime();
    }
    /**
     *  晚上24点的时间
     * @param date  时间
     * @param days  正数�? days天后 ,负数为 days天前
     * @return
     */
    public static java.util.Date getTimesnight(java.util.Date date,int days){
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        cal.set(Calendar.DATE, cal.get(Calendar.DATE) +(days));
        cal.set(Calendar.HOUR_OF_DAY, 24);
        cal.set(Calendar.SECOND, 0);
        cal.set(Calendar.MINUTE, 0);
        cal.set(Calendar.MILLISECOND, 0);
        return  cal.getTime();
    }
    /**
     *  日期加减天数 (可优化�?
     * @param date 时间
     * @param days 天数�?
     * @return
     */
    public static java.util.Date setDateTime(java.util.Date date,int days){
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        cal.set(Calendar.DATE, cal.get(Calendar.DATE) +(days));
        return  cal.getTime();
    }
    public static Boolean isExpire(java.util.Date fromDate, java.util.Date endDate, Integer expiresIn){
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        long diff = (endDate.getTime() - fromDate.getTime())/1000;
        if(diff > expiresIn){
            return true;
        }
        else{
            return false;
        }
    }
    public static String getUtcDate(String dateStr,String format){
        SimpleDateFormat sdf1 = new SimpleDateFormat(DATE_WORLD_FORMAT);
        SimpleDateFormat sdf2 = new SimpleDateFormat(format);
        String date= null;
        try {
            date = sdf1.format(sdf2.parse(dateStr));
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return date;
    }
    public static String getUtcDate(java.util.Date date){
        SimpleDateFormat sdf1 = new SimpleDateFormat(DATE_WORLD_FORMAT);
        String utcDate = sdf1.format(date);
        return utcDate;
    }
    //utc时间转换
    public static String utcToDate(String utcTime,String format){
        SimpleDateFormat utcSdf = new SimpleDateFormat(DATE_WORLD_FORMAT);
        SimpleDateFormat newSdf = new SimpleDateFormat(format);
        String date= null;
        try {
            if (!StringUtil.isEmpty(utcTime))
                date = newSdf.format(utcSdf.parse(utcTime));
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return date;
    }
    /**
     * 得到一个时间延后或前移几分钟的时间,nowdate为时间,delay为前移或后延的分钟数
     */
    public static java.util.Date getNextMin(java.util.Date date, int delay) {
        try {
            Calendar cal = Calendar.getInstance();
            cal.setTime(date);
            cal.add(Calendar.MINUTE, delay);
            return cal.getTime();
        } catch (Exception e) {
            return null;
        }
    }
}

+ 182 - 0
patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/common/util/ETLConstantData.java

@ -0,0 +1,182 @@
package com.yihu.hos.device.common.util;
/**
 * Created by lyr-pc on 2017/2/20.
 */
public class ETLConstantData {
    /***************************体征指标正常范围*******************************/
    // 血糖餐前最小值
    public static final double HEALTH_STANDARD_ST_MIN_BEFORE = 4;
    // 血糖餐前最大值
    public static final double HEALTH_STANDARD_ST_MAX_BEFORE = 7;
    // 血糖餐后最小值
    public static final double HEALTH_STANDARD_ST_MIN_AFTER = 4;
    // 血糖餐后最大值
    public static final double HEALTH_STANDARD_ST_MAX_AFTER = 11.1;
    // 舒张压最小值
    public static final int HEALTH_STANDARD_SZY_MIN = 60;
    // 舒张压最大值
    public static final int HEALTH_STANDARD_SZY_MAX = 90;
    // 收缩压最小值
    public static final int HEALTH_STANDARD_SSY_MIN = 90;
    // 收缩压最大值
    public static final int HEALTH_STANDARD_SSY_MAX = 140;
    //心率最小值
    public static final int HEALTH_STANDARD_HEARTRATE_MIN = 50;
    //心率最大值
    public static final int HEALTH_STANDARD_HEARTRATE_MAX = 100;
    /**
     * 性别
     *
     * @return
     */
    public static String sexName(int sex) {
        switch (sex) {
            case 1:
                return "男";
            case 2:
                return "女";
            default:
                return "其他";
        }
    }
    /**
     * 年龄段
     *
     * @param age
     * @return
     */
    public static String ageInterval(int age) {
        if (age < 7) {
            return "儿童";
        } else if (age >= 7 && age <= 14) {
            return "少年";
        } else if (age >= 15 && age <= 35) {
            return "青年";
        } else if (age >= 36 && age <= 60) {
            return "中年";
        } else {
            return "老年";
        }
    }
    /**
     * 获取城市名称
     *
     * @param city
     * @return
     */
    public static String cityName(String city) {
        return "";
    }
    /**
     * 体质指数转换
     *
     * @param bmi
     * @return
     */
    public static String bmiName(double bmi) {
        if (bmi < 18.5) {
            return "偏瘦";
        } else if (bmi >= 18.5 && bmi < 24) {
            return "体重正常";
        } else if (bmi >= 24 && bmi < 27) {
            return "超重";
        } else if (bmi >= 27 && bmi < 30) {
            return "偏胖";
        } else if (bmi >= 30 && bmi < 35) {
            return "肥胖";
        } else if (bmi >= 35 && bmi < 40) {
            return "重度肥胖";
        } else {
            return "极重度肥胖";
        }
    }
    /**
     * 心律情况
     *
     * @param rate
     * @return
     */
    public static int heartRate(double rate) {
        if (rate < ETLConstantData.HEALTH_STANDARD_HEARTRATE_MIN) {
            return -1;
        }
        if (rate > ETLConstantData.HEALTH_STANDARD_HEARTRATE_MAX) {
            return 1;
        }
        return 0;
    }
    /**
     * 空腹血糖判断
     *
     * @param value
     * @return
     */
    public static int xueTangBefore(double value) {
        if (value < ETLConstantData.HEALTH_STANDARD_ST_MIN_BEFORE) {
            return -1;
        }
        if (value > ETLConstantData.HEALTH_STANDARD_ST_MAX_BEFORE) {
            return 1;
        }
        return 0;
    }
    /**
     * 餐后血糖判断
     *
     * @param value
     * @return
     */
    public static int xueTangAfter(double value) {
        if (value < ETLConstantData.HEALTH_STANDARD_ST_MIN_AFTER) {
            return -1;
        }
        if (value > ETLConstantData.HEALTH_STANDARD_ST_MAX_AFTER) {
            return 1;
        }
        return 0;
    }
    /**
     * 收缩压比较
     *
     * @param value
     * @return
     */
    public static int ssy(double value) {
        if (value < ETLConstantData.HEALTH_STANDARD_SSY_MIN) {
            return -1;
        }
        if (value > ETLConstantData.HEALTH_STANDARD_SSY_MAX) {
            return 1;
        }
        return 0;
    }
    /**
     * 舒张压比较
     *
     * @param value
     * @returnz
     */
    public static int szy(double value) {
        if (value < ETLConstantData.HEALTH_STANDARD_SZY_MIN) {
            return -1;
        }
        if (value > ETLConstantData.HEALTH_STANDARD_SZY_MAX) {
            return 1;
        }
        return 0;
    }
}

+ 222 - 0
patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/common/util/ImUtill.java

@ -0,0 +1,222 @@
package com.yihu.hos.device.common.util;
import com.yihu.hos.device.common.http.HttpClientUtil;
import org.json.JSONObject;
/**
 * Created by 卓 on 2017/1/13.
 */
public class ImUtill {
    /**
     * 发送消息给IM
     *
     * @param from        来自
     * @param contentType 1文字 2图片消息
     * @param content     内容
     */
    public static String sendImMsg(String baseUrl,String from,String fromName, String sessionId, String contentType, String content,String businessType) {
        String imAddr = baseUrl + "/api/v2/sessions/"+sessionId+"/messages";
        JSONObject params = new JSONObject();
        params.put("sender_id", from);
        params.put("sender_name", fromName);
        params.put("content_type", contentType);
        params.put("content", content);
        params.put("session_id", sessionId);
        params.put("business_type", businessType);
        String response = HttpClientUtil.postBody(imAddr, params);
        return response;
    }
    /**
     * 发送消息给IM
     *
     * @param from        来自
     * @param contentType 1文字 2图片消息
     * @param content     内容
     */
    public static String sendTopicIM(String baseUrl,String from,String fromName, String topicId, String contentType, String content) {
        String url = baseUrl+ ("api/v2/sessions/topic/"+topicId+"/messages");
        JSONObject params = new JSONObject();
        params.put("sender_id", from);
        params.put("sender_name", fromName);
        params.put("content_type", contentType);
        params.put("content", content);
        params.put("topic_id", topicId);;
        String response = HttpClientUtil.postBody(url, params);
        return response;
    }
    /**
     * 结束议题
     *
     * @param topicId  议题ID
     * @param endUser  结束人
     * @param endUserName 结束人名字
     * @param sessionId 会话ID
     */
    public static JSONObject endTopics(String baseUrl,String sessionId,String endUser, String endUserName,String topicId) {
        String imAddr = baseUrl + "api/v2/sessions/"+sessionId+"/topics/"+topicId+"/ended";
        JSONObject params = new JSONObject();
        params.put("session_id", sessionId);
        params.put("end_user", endUser);
        params.put("end_user_name",endUserName);
        params.put("topic_id", topicId);
        String ret = HttpClientUtil.postBody(imAddr,params);
        JSONObject obj  = null;
        try{
            obj = new JSONObject(ret);
        }catch (Exception e){
            return null;
        }
        return obj;
    }
    /**
     * 议题邀请人员
     * @param user 结束人名字
     * @param sessionId 会话ID
     */
    public static void updateTopicUser(String baseUrl,String sessionId,String user) {
        String imAddr = baseUrl + "api/v2/sessions/"+sessionId+"/participants/"+user;
        JSONObject params = new JSONObject();
        params.put("user", user+":"+0);
        HttpClientUtil.putBody(imAddr,params);
    }
    /**
     * 创建议题
     *
     * @param topicId  议题ID
     * @param topicName  议题名称
     * @param participants 成员
     */
    public static JSONObject createTopics(String baseUrl,String sessionId, String topicId, String topicName, JSONObject participants, JSONObject messages, String sessionType) {
        String imAddr = baseUrl + "api/v2/sessions/"+topicId+"/topics";
        JSONObject params = new JSONObject();
        params.put("topic_id", topicId);
        params.put("topic_name", topicName);
        params.put("participants", participants.toString());
        params.put("messages", messages.toString());
        params.put("session_id", sessionId);
        params.put("session_type", sessionType);
        String ret = HttpClientUtil.postBody(imAddr,params);
        JSONObject obj  = null;
        try{
            obj = new JSONObject(ret);
        }catch (Exception e){
            return null;
        }
        return obj;
    }
    /**
     * 创建会话(system)
     *
     */
    public static JSONObject createSession(String baseUrl,JSONObject participants,String sessionType,String sessionName,String sessionId) {
        String imAddr = baseUrl + "api/v2/sessions";
        JSONObject params = new JSONObject();
        params.put("participants", participants.toString());
        params.put("session_name", sessionName);
        params.put("session_type", sessionType);
        params.put("session_id", sessionId);
        String ret = HttpClientUtil.postBody(imAddr,params);
        JSONObject obj  = null;
        try{
            obj = new JSONObject(ret);
        }catch (Exception e){
            return null;
        }
        return obj;
    }
    /**
     * 获取会话实例的消息对象
     * @param senderId
     * @param senderName
     * @param title
     * @param description
     * @param images
     * @return
     */
    public static JSONObject getCreateTopicMessage(String senderId,String senderName,String title,String description,String images){
        JSONObject messages = new JSONObject();
        messages.put("description",description);
        messages.put("title",title);
        messages.put("img",images);
        messages.put("sender_id",senderId);
        messages.put("sender_name",senderName);
        return messages;
    }
    public static JSONObject getTopicMessage(String baseUrl,String topicId,String startMsgId,String endMsgId,int page,int pagesize,String uid){
        String url = baseUrl
                + "api/v2/sessions/topic/"+topicId+"/messages?topic_id="+topicId+"&end="+startMsgId
                +"&start="+(endMsgId==null?"":endMsgId)+"&page="+page+"&pagesize="+pagesize+"&user="+uid;
        try{
            String ret = HttpClientUtil.get(url, "UTF-8");
            JSONObject obj = new JSONObject(ret);
            if(obj.getInt("status")==-1){
                throw new RuntimeException(obj.getString("message"));
            }else{
                return  obj.getJSONObject("data");
            }
        }catch (Exception e){
            return null;
        }
    }
    /**
     * 删除对应的成员信息在MUC模式中
     * @param userId
     * @param oldUserId
     * @param sessionId
     * @return
     */
    public static JSONObject deleteMucUser(String baseUrl,String userId,String oldUserId,String sessionId) throws  Exception{
        String url = baseUrl
                + "api/v2/sessions/"+sessionId+"/participant/update";
        try{
            JSONObject params = new JSONObject();
            params.put("user_id", userId);
            params.put("old_user_id", oldUserId);
            params.put("session_id", sessionId);
            String ret = HttpClientUtil.postBody(url,params);
            JSONObject obj = new JSONObject(ret);
            if(obj.getInt("status")==-1){
                throw new RuntimeException("人员更换失败!");
            }else{
                return obj;
            }
        }catch (Exception e){
           throw new RuntimeException("人员更换失败!");
        }
    }
    /**
     * 获取议题
     * @param topicId
     * @return
     */
    public static JSONObject getTopic(String baseUrl,String topicId) throws  Exception{
        String url =baseUrl
                + "api/v2/sessions/topics/"+topicId+"?topic_id="+topicId;
        try{
            String ret = HttpClientUtil.get(url,"utf-8");
            JSONObject obj = new JSONObject(ret);
            if(obj.getInt("status")==-1){
                throw new RuntimeException("获取议题失败!");
            }else{
                return obj;
            }
        }catch (Exception e){
            throw new RuntimeException("获取议题失败!");
        }
    }
}

+ 15 - 0
patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/common/util/MessageType.java

@ -0,0 +1,15 @@
package com.yihu.hos.device.common.util;
public class MessageType {
	// 系统消息
	public static enum MESSAGE_TYPE_SYSTEM {
		SYSTEM, 系统消息
	};
	// ===================================医生端======================================
	public static enum MESSAGE_TYPE_DOCTOR_HEALTH_INDEX {
		D_HI_01, 体征指标
	};
}

+ 649 - 0
patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/common/util/NumberUtil.java

@ -0,0 +1,649 @@
package com.yihu.hos.device.common.util;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.text.DecimalFormat;
import java.text.NumberFormat;
public class NumberUtil {
    public static final BigDecimal DEFAULT_NUMBER = BigDecimal.ZERO;
    public static final String DECIMAL_FORMAT = "#,##0.00";
    public static final String INTEGER_FORMAT = "#,##0";
    public static final String DEFAULT_NUM_GROUP_STYLE_ID = "1";
    public static final String DEFAULT_DECIMAL_STYLE_ID = "2";
    public static final String[][] DECIMAL_STYLE_LIST = {
            {"1", ",", "Comma"},
            {"2", ".", "Period"}
    };
    public static final String[][] NUM_GROUP_STYLE_LIST = {
            {"1", ",", "Comma"},
            {"2", ".", "Period"},
            {"3", " ", "Space"}
    };
    protected NumberUtil() {
    }
    public static boolean isDivisible(BigDecimal dividend, BigDecimal divisor) {
        if (dividend == null || divisor == null) {
            return false;
        }
        if (compare(dividend.remainder(divisor), DEFAULT_NUMBER) == 0) {
            return true;
        }
        return false;
    }
    public static String changeToDecimalFormat(Number num) {
        return formatNumber(num, DECIMAL_FORMAT);
    }
    public static String changeToIntegerFormat(Number num) {
        return formatNumber(num, INTEGER_FORMAT);
    }
    public static String formatNumber(Number num, String format) {
        DecimalFormat noFormat = new DecimalFormat(format);
        return noFormat.format(num);
    }
    public static int compare(BigDecimal num1, BigDecimal num2) {
        if (num1 == null) {
            num1 = DEFAULT_NUMBER;
        }
        if (num2 == null) {
            num2 = DEFAULT_NUMBER;
        }
        return num1.compareTo(num2);
    }
    public static boolean gt(BigDecimal num1, BigDecimal num2) {
        if (compare(num1, num2) > 0) {
            return true;
        }
        return false;
    }
    public static boolean ge(BigDecimal num1, BigDecimal num2) {
        return !lt(num1, num2);
    }
    public static boolean lt(BigDecimal num1, BigDecimal num2) {
        if (compare(num1, num2) < 0) {
            return true;
        }
        return false;
    }
    public static boolean le(BigDecimal num1, BigDecimal num2) {
        return !gt(num1, num2);
    }
    public static boolean equals(BigDecimal num1, BigDecimal num2) {
        if (compare(num1, num2) == 0) {
            return true;
        }
        return false;
    }
    public static boolean equals(int num1, int num2) {
        if (compare(new BigDecimal(String.valueOf(num1)), new BigDecimal(String.valueOf(num2))) == 0) {
            return true;
        }
        return false;
    }
    public static boolean isPositive(BigDecimal num) {
        if (num == null) {
            return false;
        }
        if (gt(num, BigDecimal.ZERO)) {
            return true;
        }
        return false;
    }
    public static boolean isZero(BigDecimal num) {
        if (num == null) {
            return false;
        }
        if (equals(num, BigDecimal.ZERO)) {
            return true;
        }
        return false;
    }
    public static BigDecimal subtractBigDecimal(BigDecimal dec1, BigDecimal dec2) {
        return (dec1 != null ? dec1 : DEFAULT_NUMBER).subtract(dec2 != null ? dec2 : DEFAULT_NUMBER);
    }
    public static BigDecimal multiplyBigDecimal(BigDecimal dec1, BigDecimal dec2) {
        return (dec1 != null ? dec1 : DEFAULT_NUMBER).multiply(dec2 != null ? dec2 : DEFAULT_NUMBER);
    }
    public static BigDecimal divideBigDecimal(BigDecimal dec1, BigDecimal dec2) {
        if (dec2 == null || dec2.equals(DEFAULT_NUMBER)) {
            return DEFAULT_NUMBER;
        }
        return (dec1 != null ? dec1 : DEFAULT_NUMBER).divide(dec2, 2, BigDecimal.ROUND_HALF_UP);
    }
    public static BigDecimal divideBigDecimal(BigDecimal dec1, BigDecimal dec2, int scale) {
        if (dec2 == null || dec2.equals(DEFAULT_NUMBER)) {
            return DEFAULT_NUMBER;
        }
        return (dec1 != null ? dec1 : DEFAULT_NUMBER).divide(dec2, scale, BigDecimal.ROUND_HALF_UP);
    }
    public static BigDecimal floorDivideBigDecimal(BigDecimal dec1, BigDecimal dec2) {
        if (dec2 == null || dec2.equals(DEFAULT_NUMBER)) {
            return DEFAULT_NUMBER;
        }
        return (dec1 != null ? dec1 : DEFAULT_NUMBER).divide(dec2, 0, BigDecimal.ROUND_FLOOR);
    }
    public static BigDecimal ceilingDivideBigDecimal(BigDecimal dec1, BigDecimal dec2) {
        if (dec2 == null || dec2.equals(DEFAULT_NUMBER)) {
            return DEFAULT_NUMBER;
        }
        return (dec1 != null ? dec1 : DEFAULT_NUMBER).divide(dec2, 0, BigDecimal.ROUND_CEILING);
    }
    public static BigDecimal toBigDecimal(int num) {
        return toBigDecimal(StringUtil.toString(num));
    }
    public static Integer toInteger(long num) {
        return toInteger(StringUtil.toString(num));
    }
    public static BigDecimal roundBigDecimal(BigDecimal dec1, int scale) {
        return (dec1 != null ? dec1 : DEFAULT_NUMBER).divide(new BigDecimal("1"), scale, BigDecimal.ROUND_HALF_UP);
    }
    public static BigDecimal floorBigDecimal(BigDecimal dec1, int scale) {
        return (dec1 != null ? dec1 : DEFAULT_NUMBER).divide(new BigDecimal("1"), scale, BigDecimal.ROUND_FLOOR);
    }
    public static BigDecimal ceilingBigDecimal(BigDecimal dec1, int scale) {
        return (dec1 != null ? dec1 : DEFAULT_NUMBER).divide(new BigDecimal("1"), scale, BigDecimal.ROUND_CEILING);
    }
    public static Boolean toBoolean(String str) {
        try {
            return new Boolean(str);
        } catch (Exception e) {
            return null;
        }
    }
    public static boolean isZero(Integer num) {
        if (num == null) {
            return true;
        }
        if (num == 0) {
            return true;
        }
        return false;
    }
    public static int toInt(String str) {
        Integer integer = toInteger(str);
        return (integer == null ? 0 : integer.intValue());
    }
    public static int toInt(Integer integer) {
        return (integer == null ? 0 : integer.intValue());
    }
    public static Integer toInteger(String str) {
        if (str == null) {
            return null;
        }
        if (StringUtil.isBlank(str)) {
            return 0;
        }
        try {
            return new Integer(str.trim());
        } catch (NumberFormatException nfe) {
            return null;
        }
    }
    public static Integer toInteger(int i) {
        try {
            return new Integer(i);
        } catch (NumberFormatException nfe) {
            return null;
        }
    }
    public static BigInteger toBigInteger(String str) {
        if (str == null) {
            return null;
        }
        try {
            return new BigInteger(str.trim());
        } catch (NumberFormatException nfe) {
            return null;
        }
    }
    public static BigDecimal toBigDecimal(String str) {
        if (str == null) {
            return null;
        }
        if (StringUtil.isBlank(str)) {
            return BigDecimal.ZERO;
        }
        try {
            return new BigDecimal(str.trim());
        } catch (NumberFormatException nfe) {
            return null;
        }
    }
    public static BigDecimal toBigDecimal(String str, String decPoPtn) {
        return toBigDecimal(formatDecDefault(str, decPoPtn));
    }
    public static Float toFloat(String str) {
        if (str == null) {
            return null;
        }
        try {
            return new Float(str.trim());
        } catch (NumberFormatException nfe) {
            return null;
        }
    }
    public static float totoPrimitiveFloat(String str) {
        return (str == null ? 0 : Float.parseFloat(str));
    }
    public static Long toLong(String str) {
        if (str == null) {
            return null;
        }
        try {
            return new Long(str.trim());
        } catch (NumberFormatException nfe) {
            return null;
        }
    }
    public static long totoPrimitiveLong(String str) {
        return (str == null ? 0 : Long.parseLong(str));
    }
    public static Double toDouble(String str) {
        if (str == null) {
            return null;
        }
        try {
            return new Double(str.trim());
        } catch (NumberFormatException nfe) {
            return null;
        }
    }
    public static double totoPrimitiveDouble(String str) {
        return (str == null ? 0 : Double.parseDouble(str));
    }
    public static String getDecimalStyleName(String decimalStyleId) {
        String value = null;
        for (int i = 0; i < DECIMAL_STYLE_LIST.length; i++) {
            if (DECIMAL_STYLE_LIST[i][0].equals(decimalStyleId)) {
                value = DECIMAL_STYLE_LIST[i][2];
                break;
            }
        }
        if (value == null) {
            throw new IllegalArgumentException("The value of an argument is inaccurate.");
        }
        return value;
    }
    public static String getDecPo(String decPoPtn) {
        return String.valueOf(getDecimalStyleValue(decPoPtn));
    }
    public static String getDecimalStyleValue(String decimalStyleId) {
        String value = null;
        for (int i = 0; i < DECIMAL_STYLE_LIST.length; i++) {
            if (DECIMAL_STYLE_LIST[i][0].equals(decimalStyleId)) {
                value = DECIMAL_STYLE_LIST[i][1];
                break;
            }
        }
        if (value == null) {
            throw new IllegalArgumentException("The value of an argument is inaccurate.");
        }
        return value;
    }
    public static char getDecimalStyleValueChar(String decimalStyleId) {
        return getDecimalStyleValue(decimalStyleId).charAt(0);
    }
    public static String formatIntValue(int n) {
        return formatIntValue(new Integer(n));
    }
    public static String formatIntView(int n, String numSepPtn) {
        return formatIntView(new Integer(n), numSepPtn);
    }
    public static String formatIntValue(Integer num) {
        if (num == null) {
            return null;
        }
        String format = "#####0";
        return formatNum(num, format, null, null);
    }
    public static String formatIntView(Integer num, String numGroupStyleId) {
        if (num == null) {
            return null;
        }
        String format = "###,##0";
        return formatNum(num, format, null, numGroupStyleId);
    }
    public static String formatDecValue(BigDecimal dec, String decimalStyleId) {
        return formatDecValue(dec, -1, decimalStyleId);
    }
    public static String formatDecValue(BigDecimal dec, Integer decLength, String decimalStyleId) {
        return formatDecValue(dec, decLength != null ? decLength.intValue() : -1, decimalStyleId);
    }
    public static String formatDecValue(BigDecimal dec, int decLength, String decimalStyleId) {
        if (dec == null) {
            return null;
        }
        String format = "#####0";
        if (decLength > 0) {
            // С������ָ������
            for (int i = 0; i < decLength; i++) {
                if (i == 0) {
                    format += ".";
                }
                format += "0";
            }
        } else {
            // С������ָ���ʤ�
            format += ".##########";
        }
        return formatNum(dec, format, decimalStyleId, null);
    }
    public static String formatDecView(BigDecimal dec, String decimalStyleId, String numGroupStyleId) {
        return formatDecView(dec, -1, decimalStyleId, numGroupStyleId);
    }
    public static String formatDecView(BigDecimal dec, Integer decLength,
                                       String decimalStyleId, String numGroupStyleId) {
        return formatDecView(dec,
                decLength != null ? decLength.intValue() : -1,
                decimalStyleId,
                numGroupStyleId);
    }
    public static String formatDecView(BigDecimal dec, int decLength,
                                       String decimalStyleId, String numGroupStyleId) {
        if (dec == null) {
            return null;
        }
        String format = "###,##0";
        if (decLength > 0) {
            // С������ָ������
            for (int i = 0; i < decLength; i++) {
                if (i == 0) {
                    format += ".";
                }
                format += "0";
            }
        } else {
            // С������ָ���ʤ�
            format += ".##########";
        }
        return formatNum(dec, format, decimalStyleId, numGroupStyleId);
    }
    protected static String formatNum(Object obj, String format, String decimalStyleId, String numGroupStyleId) {
        char decPo = decimalStyleId != null ? getDecimalStyleValueChar(decimalStyleId) : ' ';
        char numSep = numGroupStyleId != null ? getNumGroupStyleValueChar(numGroupStyleId) : ' ';
        DecimalFormat df = (DecimalFormat) NumberFormat.getInstance();
        df.applyPattern(format);
        String str = df.format(obj);
        if (str == null) {
            return null;
        }
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < str.length(); i++) {
            char c = str.charAt(i);
            if (c == ',') {
                sb.append(numSep);
                continue;
            }
            if (c == '.') {
                sb.append(decPo);
                if (i != str.length()) {
                    sb.append(str.substring(i + 1, str.length()));
                }
                break;
            }
            sb.append(c);
        }
        return sb.toString();
    }
    public static String formatDecDefault(String str, String decPoPtn) {
        if (str == null) {
            return null;
        }
        char decPo = getDecimalStyleValueChar(decPoPtn);
        StringBuffer sb = new StringBuffer(str);
        int idx = sb.toString().indexOf(String.valueOf(decPo));
        if (idx != -1) {
            sb.replace(idx, idx + String.valueOf(decPo).length(), String.valueOf('.'));
        }
        return sb.toString();
    }
    public static String getNumGroupStyleValue(String numGroupStyleId) {
        String value = null;
        for (int i = 0; i < NUM_GROUP_STYLE_LIST.length; i++) {
            if (NUM_GROUP_STYLE_LIST[i][0].equals(numGroupStyleId)) {
                value = NUM_GROUP_STYLE_LIST[i][1];
                break;
            }
        }
        if (value == null) {
            throw new IllegalArgumentException("The value of an argument is inaccurate.");
        }
        return value;
    }
    public static char getNumGroupStyleValueChar(String numGroupStyleId) {
        return getNumGroupStyleValue(numGroupStyleId).charAt(0);
    }
    public static String getNumGroupStyleName(String numGroupStyleId) {
        String value = null;
        for (int i = 0; i < NUM_GROUP_STYLE_LIST.length; i++) {
            if (NUM_GROUP_STYLE_LIST[i][0].equals(numGroupStyleId)) {
                value = NUM_GROUP_STYLE_LIST[i][2];
                break;
            }
        }
        if (value == null) {
            throw new IllegalArgumentException("The value of an argument is inaccurate.");
        }
        return value;
    }
    public static String roundString(String str) {
        BigDecimal dec = toBigDecimal(str);
        return (dec == null ? str : StringUtil.toString(roundBigDecimal(dec)));
    }
    public static BigDecimal roundBigDecimal(BigDecimal dec) {
        return (dec == null ? dec : dec.divide(new BigDecimal("1"), 0, BigDecimal.ROUND_HALF_UP));
    }
    public static int roundBigDecimal(int num) {
        return toInt(roundString(StringUtil.toString(num)));
    }
    public static String fomatNumber(double amount, String pattern) {
        NumberFormat nf = NumberFormat.getCurrencyInstance();
        DecimalFormat df = (DecimalFormat) nf;
        df.setMinimumFractionDigits(2);
        df.setMaximumFractionDigits(2);
        df.setDecimalSeparatorAlwaysShown(true);
        df.applyPattern(pattern);
        return df.format(amount);
    }
    public static String fomatNumber(long amount, String pattern) {
        NumberFormat nf = NumberFormat.getCurrencyInstance();
        DecimalFormat df = (DecimalFormat) nf;
        df.setMinimumFractionDigits(2);
        df.setMaximumFractionDigits(2);
        df.setDecimalSeparatorAlwaysShown(true);
        df.applyPattern(pattern);
        return df.format(amount);
    }
    public static BigDecimal addBigDecimal(BigDecimal dec1, BigDecimal dec2) {
        return (dec1 != null ? dec1 : new BigDecimal(0)).add(dec2 != null ? dec2 : new BigDecimal(0));
    }
    public static boolean isInteger(String target) {
        if (target == null) {
            return false;
        }
        char[] digit = new char[]{'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};
        for (int i = 0; i < target.length(); i++) {
            for (int j = 0; j < digit.length; j++) {
                if (target.charAt(i) == digit[j]) {
                    break;
                }
                if (i == 0 && target.charAt(i) == '-') {
                    break;
                }
                if (i == 0 && target.charAt(i) == '+') {
                    break;
                }
                if (j == digit.length - 1) {
                    return false;
                }
            }
        }
        return true;
    }
}

+ 1121 - 0
patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/common/util/StringUtil.java

@ -0,0 +1,1121 @@
package com.yihu.hos.device.common.util;
import org.apache.commons.lang3.StringUtils;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.io.StringWriter;
import java.io.UnsupportedEncodingException;
import java.io.Writer;
import java.sql.Clob;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class StringUtil {
    public static String substring(String str, int start) {
        return StringUtils.substring(str, start);
    }
    public static String substring(String str, int start, int end) {
        return StringUtils.substring(str, start, end);
    }
    public static boolean isBlank(String str) {
        return StringUtils.isBlank(str);
    }
    public static String toString(Object obj) {
        if (obj == null) {
            return null;
        }
        return obj.toString();
    }
    public static String trimLeft(String value) {
        if (value == null)
            return "";
        String result = value;
        char ch[] = result.toCharArray();
        int index = -1;
        for (int i = 0; i < ch.length; i++) {
            if (Character.isWhitespace(ch[i])) {
                index = i;
            } else {
                break;
            }
        }
        if (index != -1) {
            result = result.substring(index + 1);
        }
        return result;
    }
    public static String trimRight(String value) {
        if (value == null)
            return "";
        String result = value;
        char ch[] = result.toCharArray();
        int endIndex = -1;
        for (int i = ch.length - 1; i > -1; i--) {
            if (Character.isWhitespace(ch[i])) {
                endIndex = i;
            } else {
                break;
            }
        }
        if (endIndex != -1) {
            result = result.substring(0, endIndex);
        }
        return result;
    }
    public static String fillHeadCharsLen(String strOri, int len) {
        return fillHeadCharsLen(strOri, "0", len);
    }
    public static String fillBackCharsLen(String strOri, int len) {
        return fillBackCharsLen(strOri, "0", len);
    }
    public static String fillHeadCharsLen(String strOri, String subStr, int len) {
        if (strOri == null || strOri.trim().length() == 0) {
            strOri = "";
        }
        if (subStr == null) {
            subStr = " ";
        }
        String fillStr = "";
        for (int i = 0; i < len; i++) {
            fillStr = fillStr + subStr;
        }
        subStr = fillStr + strOri;
        return (subStr.substring(subStr.length() - len, subStr.length()));
    }
    public static String fillBackCharsLen(String strOri, String subStr, int len) {
        if (strOri == null || strOri.trim().length() == 0) {
            strOri = "";
        }
        if (subStr == null) {
            subStr = " ";
        }
        String fillStr = "";
        for (int i = 0; i < len; i++) {
            fillStr = fillStr + subStr;
        }
        subStr = strOri + fillStr;
        return (subStr.substring(0, len));
    }
    public static String fillHeadChars(String strOri, int counter) {
        return fillHeadChars(strOri, "0", counter);
    }
    public static String fillBackChars(String strOri, int counter) {
        return fillBackChars(strOri, "0", counter);
    }
    public static String fillHeadChars(String strOri, String subStr, int counter) {
        if (strOri == null || strOri.trim().length() == 0) {
            strOri = "";
        }
        if (counter <= 0 || subStr == null) {
            return strOri;
        }
        String fillStr = "";
        for (int i = 0; i < counter; i++) {
            fillStr = fillStr + subStr;
        }
        return (fillStr + strOri);
    }
    public static String fillBackChars(String strOri, String subStr, int counter) {
        if (strOri == null || strOri.trim().length() == 0) {
            strOri = "";
        }
        if (counter <= 0 || subStr == null) {
            return strOri;
        }
        String fillStr = "";
        for (int i = 0; i < counter; i++) {
            fillStr = fillStr + subStr;
        }
        return (strOri + fillStr);
    }
    public static boolean isEmpty(Object strObj) {
        if (strObj == null || strObj.toString().trim().length() < 1) {
            return true;
        } else {
            return false;
        }
    }
    public static boolean isStrEmpty(String str) {
        if ((str == null) || (str.trim().length() < 1) || "null".endsWith(str.toLowerCase())) {
            return true;
        } else {
            return false;
        }
    }
    public static String getValue(String str) {
        if (str == null) {
            return "";
        }
        if (str.trim().length() <= 0)
            return "";
        str = "H" + str;
        str = str.trim();
        str = str.substring(1);
        return str;
    }
    public static boolean chkTextLen(String text, int len) {
        if (text == null || text.length() > len) {
            return false;
        } else {
            return true;
        }
    }
    public static boolean chkTextTrimLen(String text, int len) {
        if (text == null || text.trim().length() > len) {
            return false;
        } else {
            return true;
        }
    }
    public static boolean isStrEn(String text) {
        for (int i = 0; i < text.length(); i++) {
            if (text.charAt(i) > 127) {
                return false;
            }
        }
        return true;
    }
    public static boolean isCharNum(char ch) {
        if (ch > 47 && ch < 58) {
            return true;
        } else {
            return false;
        }
    }
    public static boolean isStrNum(String str) {
        if (isStrEmpty(str)) {
            return true;
        }
        boolean notNum = false;
        for (int i = 0; i < str.length(); i++) {
            if (!isCharNum(str.charAt(i))) {
                notNum = true;
            }
        }
        return !notNum;
    }
    public static boolean isNum(String strSrc) throws Exception {
        for (int i = 0; i < strSrc.length(); i++) {
            if (!isCharNum(strSrc.charAt(i)))
                return false;
        }
        return true;
    }
    public static boolean isCharLetter(char ch) {
        if ((ch >= 65 && ch <= 90) && (ch >= 97 && ch <= 122)) {
            return true;
        } else {
            return false;
        }
    }
    public static boolean isStrLetter(String str) {
        if (isStrEmpty(str))
            return true;
        boolean notLetter = false;
        for (int i = 0; i < str.length(); i++) {
            if (!isCharLetter(str.charAt(i))) {
                notLetter = true;
            }
        }
        return !notLetter;
    }
    public static char strToChar(String src) {
        src = src.trim();
        char result = src.charAt(0);
        return result;
    }
    public static String encodeSQL(String sql) {
        StringBuffer tempBuff = new StringBuffer();
        for (int i = 0; i < sql.length(); i++) {
            tempBuff.append(Integer.toHexString(sql.charAt(i)));
        }
        return tempBuff.toString();
    }
    public static String decodeSQL(String encoded) {
        StringBuffer tempBuff = new StringBuffer();
        for (int i = 0; i < encoded.length(); i += 2) {
            tempBuff.append((char) Integer.parseInt(
                    encoded.substring(i, i + 2), 16));
        }
        return tempBuff.toString();
    }
    public static String getAbsolutePath(String path1, String context1) {
        int i1 = path1.indexOf(context1);
        if (i1 < 0) {
            return path1;
        } else {
            return path1.substring(path1.indexOf(context1) + context1.length());
        }
    }
    public static String getSubString(String str1, int sindex, int eindex) {
        if (str1 == null) {
            return "";
        }
        if (str1.trim().length() <= 0)
            return "";
        if (str1.length() > sindex) {
            if (eindex >= 0)
                return str1.substring(sindex, eindex);
            else if (eindex < 0)
                return str1.substring(sindex);
        }
        return "";
    }
    public static String[] getValues(String[] strs, int size1) {
        String[] strs1 = new String[size1];
        for (int i = 0; i < size1; i++) {
            strs1[i] = "";
        }
        if (strs == null) {
            return strs1;
        } else {
            if (strs.length < size1) {
                for (int i = 0; i < strs.length; i++) {
                    strs1[i] = strs[i];
                }
                return strs1;
            } else {
                return strs;
            }
        }
    }
    public static String replaceStrAll(String strSource, String strFrom,
                                       String strTo) {
        String strDest = "";
        int intFromLen = strFrom.length();
        int intPos;
        while ((intPos = strSource.indexOf(strFrom)) != -1) {
            strDest = strDest + strSource.substring(0, intPos);
            strDest = strDest + strTo;
            strSource = strSource.substring(intPos + intFromLen);
        }
        strDest = strDest + strSource;
        return strDest;
    }
    public static String replaceStr(String strTarget, String strNew) {
        int iIndex = -1;
        while (true) {
            iIndex = strTarget.indexOf('\n');
            if (iIndex < 0) {
                break;
            }
            String strTemp = null;
            strTemp = strTarget.substring(0, iIndex);
            strTarget = strTemp + strNew + strTarget.substring(iIndex + 1);
        }
        return strTarget;
    }
    public static boolean includestr(String str1, String[] strarray) {
        if (strarray == null || strarray.length <= 0)
            return false;
        for (int i = 0; i < strarray.length; i++) {
            if (strarray[i] == null) {
                if (str1 == null)
                    return true;
                else
                    continue;
            }
            if (strarray[i].trim().equals(str1)) {
                return true;
            }
        }
        return false;
    }
    public static String[] getAreaValues(String fvalue) {
        String tmpstr = fvalue;
        int i = 0;
        if (tmpstr == null)
            return null;
        if (tmpstr.trim().equals(""))
            return null;
        while (tmpstr.indexOf("\n") >= 0) {
            i++;
            tmpstr = tmpstr.substring(tmpstr.indexOf("\n") + 1);
        }
        if (tmpstr.trim().equals("")) {
            i--;
        }
        String[] fvalues = new String[i + 1];
        tmpstr = fvalue;
        i = 0;
        while (tmpstr.indexOf("\n") >= 0) {
            fvalues[i] = tmpstr.substring(0, tmpstr.indexOf("\n"));
            if (fvalues[i].indexOf("\r") >= 0)
                fvalues[i] = fvalues[i].substring(0, fvalues[i].indexOf("\r"));
            i++;
            tmpstr = tmpstr.substring(tmpstr.indexOf("\n") + 1);
        }
        if (!tmpstr.trim().equals(""))
            fvalues[i] = tmpstr;
        return fvalues;
    }
    public static String getrealAreaValues(String fvalue) {
        String tmpstr = fvalue;
        String returnstr = "";
        if (tmpstr == null)
            return null;
        if (tmpstr.trim().equals(""))
            return "";
        while (tmpstr.indexOf("|") > 0) {
            returnstr += tmpstr.substring(0, tmpstr.indexOf("|")) + "\n";
            tmpstr = tmpstr.substring(tmpstr.indexOf("|") + 1);
        }
        return returnstr;
    }
    public static int countChar(String strInput, char chr) {
        int iCount = 0;
        char chrTmp = ' ';
        if (strInput.trim().length() == 0)
            return 0;
        for (int i = 0; i < strInput.length(); i++) {
            chrTmp = strInput.charAt(i);
            if (chrTmp == chr) {
                iCount++;
            }
        }
        return iCount;
    }
    public static String strArrayToStr(String[] strs) {
        return strArrayToStr(strs, null);
    }
    public static void printStrs(String[] strs) {
        for (int i = 0; i < strs.length; i++) {
            System.out.println(strs[i]);
        }
    }
    public static void printDualStr(String[][] dualStr) {
        for (int i = 0; i < dualStr.length; i++) {
            for (int j = 0; j < dualStr[i].length; j++) {
                System.out.print(dualStr[i][j] + " ");
            }
            System.out.println();
        }
    }
    public static String[][] rowToColumn(String[][] dualStr) {
        String[][] returnDualStr = null;
        if (dualStr != null) {
            returnDualStr = new String[dualStr[0].length][dualStr.length];
            for (int i = 0; i < dualStr.length; i++)
                for (int j = 0; j < dualStr[0].length; j++)
                    returnDualStr[j][i] = dualStr[i][j];
        }
        return returnDualStr;
    }
    public static String latinString(String inStr) {
        String res = inStr;
        if (null == res)
            return null;
        res = replaceStrAll(res, "\"", "\\\"");
        res = replaceStrAll(res, "'", "\\'");
        return res;
    }
    public static String replaceWhiteSpace(String strTarget, String strNew) {
        int iIndex = -1;
        while (true) {
            char cRep = 32;
            iIndex = strTarget.indexOf(cRep);
            if (iIndex < 0) {
                break;
            }
            String strTemp = null;
            strTemp = strTarget.substring(0, iIndex);
            strTarget = strTemp + strNew + strTarget.substring(iIndex + 1);
        }
        return strTarget;
    }
    public static String double2str(double amount, int length) {
        String strAmt = Double.toString(amount);
        int pos = strAmt.indexOf('.');
        if (pos != -1 && strAmt.length() > length + pos + 1)
            strAmt = strAmt.substring(0, pos + length + 1);
        return strAmt;
    }
    public static String[] doSplit(String str, char chr) {
        int iCount = 0;
        char chrTmp = ' ';
        // ?????????????????
        for (int i = 0; i < str.length(); i++) {
            chrTmp = str.charAt(i);
            if (chrTmp == chr) {
                iCount++;
            }
        }
        String[] strArray = new String[iCount];
        for (int i = 0; i < iCount; i++) {
            int iPos = str.indexOf(chr);
            if (iPos == 0) {
                strArray[i] = "";
            } else {
                strArray[i] = str.substring(0, iPos);
            }
            str = str.substring(iPos + 1); // ??iPos+1??????,str????????��
        }
        return strArray;
    }
    public static String[] strSplit(String src, String splitchar) {
        int resultSize = 0;
        int len = src.length();
        int idx = 0;
        String strTemp = "";
        for (int i = 0; i < len; i++) {
            if (src.substring(i, i + 1).equals(splitchar)) {
                resultSize++;
            }
        }
        if ((len > 1) & (!src.substring(len - 1, len).equals(splitchar))) {
            resultSize++;
        }
        String result[] = new String[resultSize];
        for (int i = 0; i < len; i++) {
            if (src.substring(i, i + 1).equals(splitchar)) {
                result[idx] = strTemp;
                idx++;
                strTemp = "";
            } else {
                strTemp = String.valueOf(strTemp)
                        + String.valueOf(src.charAt(i));
            }
        }
        if (!strTemp.equals("")) {
            result[idx] = strTemp;
        }
        return result;
    }
    public static String[] split(String strToSplit, String strSeparator,
                                 int iLimit) {
        ArrayList tmpList = new ArrayList();
        int iFromIndex = 0;
        int iCurIndex = strToSplit.length();
        String strUnitInfo = "";
        int iCurCounts = 0;
        while ((iCurIndex != -1) && (iFromIndex < strToSplit.length())
                && (iCurCounts < iLimit)) {
            iCurIndex = strToSplit.indexOf(strSeparator, iFromIndex);
            if (iCurIndex == -1) {
                strUnitInfo = strToSplit.substring(iFromIndex, strToSplit
                        .length());
            } else {
                strUnitInfo = strToSplit.substring(iFromIndex, iCurIndex);
                iFromIndex = iCurIndex + 1;
            }
            tmpList.add(strUnitInfo);
            iCurCounts++;
        }
        int iCounts = tmpList.size();
        String tmpArray[] = new String[iCounts];
        for (int i = 0; i < iCounts; i++) {
            tmpArray[i] = (String) tmpList.get(i);
        }
        return tmpArray;
    }
    public static String strIntercept(String src, int len) {
        if (src == null) {
            return "";
        }
        if (src.length() > len) {
            src = String.valueOf(String.valueOf(src.substring(0, len))).concat(
                    "...");
        }
        return src;
    }
    public static String strtochn(String str_in) {
        try {
            String temp_p = str_in;
            if (temp_p == null) {
                temp_p = "";
            }
            String temp = "";
            if (!temp_p.equals("")) {
                byte[] byte1 = temp_p.getBytes("ISO8859_1");
                temp = new String(byte1);
            }
            return temp;
        } catch (Exception e) {
        }
        return "null";
    }
    public static String ISO2GBK(String strvalue) {
        try {
            if (strvalue == null)
                return null;
            else {
                strvalue = new String(strvalue.getBytes("ISO8859_1"), "GBK");
                return strvalue;
            }
        } catch (Exception e) {
            return null;
        }
    }
    /**
     * ***************************************************** ??
     * ?????????????????????��?????? ????????param str ??????????????? ????????? ?? ???return String
     * ????????????? ??????? ******************************************************
     */
    public static String cnCodeTrans(String str) {
        String s = "";
        try {
            s = new String(str.getBytes("GB2312"), "8859_1");
        } catch (UnsupportedEncodingException a) {
            System.out.print("chinese thansform exception");
        }
        return s;
    }
    /**
     * ***************************************************** ??
     * ????��?????????????????STaaaa????ST****** ????????param strSource???????????????param
     * strRule???? ????????? ?? ???return false:???????????true:????????? ???????
     * ******************************************************
     */
    public static boolean judgeMatch(String strSource, String strRule) {
        int i = 0;
        // ????????��?
        if ((null == strSource) || (strSource.length() == 0))
            return false;
        // ????????��?
        if ((null == strRule) || (strRule.length() == 0))
            return false;
        // ??????????
        if (strSource.length() > strRule.length())
            return false;
        // ??��???��?
        for (i = 0; i < strRule.length(); i++) {
            // ?????????
            if (strSource.length() < i + 1) {
                break;
            }
            if ((strRule.charAt(i) != '*')
                    && (strSource.charAt(i) != strRule.charAt(i))) {
                return false;
            }
        }
        // ??????????????????????????????'*'?????????
        for (; i < strRule.length(); i++) {
            if (strRule.charAt(i) != '*')
                return false;
        }
        return true;
    }
    public static String column2Property(String column) {
        column = column.toLowerCase();
        int i = column.indexOf("_");
        while (i != -1) {
            if (i != column.length() - 1) {
                char temp = column.charAt(i + 1);
                String strTemp = String.valueOf(temp);
                column = column.replaceFirst("_" + strTemp, strTemp
                        .toUpperCase());
                i = column.indexOf("_");
            } else {
                break;
            }
        }
        return column;
    }
    public static String strArrayToStr(String[] strs, String separator) {
        StringBuffer returnstr = new StringBuffer("");
        if (strs == null)
            return "";
        if (separator == null)
            separator = "";
        for (int i = 0; i < strs.length; i++) {
            returnstr.append(strs[i]);
            if (i < strs.length - 1)
                returnstr.append(separator);
        }
        return returnstr.toString();
    }
    public static String objectArrayToStr(Object[] objects, String separator) {
        StringBuffer returnstr = new StringBuffer("");
        if (objects == null)
            return "";
        if (separator == null)
            separator = "";
        for (int i = 0; i < objects.length; i++) {
            returnstr.append(String.valueOf(objects[i]));
            if (i < objects.length - 1)
                returnstr.append(separator);
        }
        return returnstr.toString();
    }
    public static String listToStr(List element, String separator) {
        StringBuffer returnstr = new StringBuffer("");
        if (element == null)
            return "";
        if (separator == null)
            separator = "";
        Iterator it = element.iterator();
        while (it.hasNext()) {
            returnstr.append(String.valueOf(it.next()));
            if (it.hasNext())
                returnstr.append(separator);
        }
        return returnstr.toString();
    }
    public static String[] listToStrArray(List element) {
        if (element == null || element.size() == 0)
            return null;
        Iterator it = element.iterator();
        String[] strArray = new String[element.size()];
        int i = 0;
        while (it.hasNext()) {
            strArray[i] = String.valueOf(it.next());
            i++;
        }
        return strArray;
    }
    public static List strToList(String str, String separator) {
        if (str == null || str.equals(""))
            return null;
        if (separator == null)
            separator = "";
        String[] strArr = str.split(separator);
        int size = strArr.length;
        List list = new ArrayList();
        for (int i = 0; i < size; i++) {
            list.add(strArr[i]);
        }
        return list;
    }
    public static StringBuffer populate(StringBuffer bf, String value,
                                        boolean isNotLast) {
        if (value == null) {
            return bf;
        }
        // ???????????????????�I??????????????????????????????SQL???????????
        System.out.println(value.replaceAll("'", "''"));
        bf.append("'").append(value.replaceAll("'", "''")).append("'");
        if (isNotLast)
            bf.append(",");
        return bf;
    }
    public static boolean isExist(String str, String substr, String sepatator) {
        if (str == null || str.trim().equals(""))
            return false;
        if (substr == null || substr.trim().equals(""))
            return false;
        String[] strArr = str.split(sepatator);
        int size = strArr.length;
        for (int i = 0; i < size; i++) {
            if (strArr[i].equals(substr))
                return true;
        }
        return false;
    }
    public static boolean isExist(String str, String substr) {
        return isExist(str, substr, ",");
    }
    public static String leftInclude(String str) {
        if (str == null || str.equals(""))
            return str;
        return str + "%";
    }
    public static String rightInclude(String str) {
        if (str == null || str.equals(""))
            return str;
        return "%" + str;
    }
    public static String include(String str) {
        if (str == null || str.equals(""))
            return str;
        return "%" + str + "%";
    }
    public static String nvl(Object source, Object target) {
        return source != null ? String.valueOf(source)
                : (target != null ? String.valueOf(target) : null);
    }
    public static String clob2Str(Object clobValue) throws SQLException {
        return ((Clob) clobValue).getSubString(1, (int) ((Clob) clobValue)
                .length());
    }
    public static String getRemoteAddr(HttpServletRequest request) {
        String ip = request.getHeader("x-forwarded-for");
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("Proxy-Client-IP");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("WL-Proxy-Client-IP");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getRemoteAddr();
        }
        return ip;
    }
    public static String hideFlowStr(String str, int maxLen) {
        if (str == null || maxLen == 0) {
            return "";
        }
        if (str.length() > maxLen) {
            str = str.substring(0, maxLen) + "...";
        }
        return str;
    }
    public static String escapeLuceneSpecialCharacters(String str) {
        if (str == null) {
            return null;
        }
        try {
            StringWriter writer = new StringWriter(str.length() * 2);
            escapeLuceneSpecialCharacterString(writer, str);
            return writer.toString();
        } catch (IOException ex) {
            //LogService.getLogger(StringUtil.class).error(ex.getMessage());
            return null;
        }
    }
    private static void escapeLuceneSpecialCharacterString(Writer out,
                                                           String str) throws IOException {
        if (str == null) {
            return;
        }
        int sz = str.length();
        for (int i = 0; i < sz; i++) {
            char ch = str.charAt(i);
            /*
             * Reference link:
			 * http://lucene.apache.org/java/docs/queryparsersyntax.html Lucene
			 * supports escaping special characters that are part of the query
			 * syntax. The current list special characters are: + - && || ! ( ) { } [ ] ^ " ~ * ? : \
			 * To escape these character use the \ before the character.
			 */
            switch (ch) {
                case '+':
                case '-':
                case '!':
                case '(':
                case ')':
                case '{':
                case '}':
                case '[':
                case ']':
                case '^':
                case '\"':
                case '~':
                case '*':
                case '?':
                case ':':
                case '\\':
                    out.write('\\');
                    out.write(ch);
                    break;
                case '&':
                case '|':
                    // check if it is '&&' or '||' ~ check if the next char is '&'
                    // or '|'
                    if ((i + 1) < sz && str.charAt(i + 1) == ch) {
                        out.write('\\');
                        out.write(ch);
                        i++;
                    }
                    out.write(ch);
                    break;
                default:
                    out.write(ch);
                    break;
            }
        }
    }
    public static String getFirstLetter(String chinese) {
        final int[] li_SecPosValue = {1601, 1637, 1833, 2078, 2274, 2302,
                2433, 2594, 2787, 3106, 3212, 3472, 3635, 3722, 3730, 3858,
                4027, 4086, 4390, 4558, 4684, 4925, 5249, 5590};
        final String[] lc_FirstLetter = {"A", "B", "C", "D", "E", "F", "G",
                "H", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T",
                "W", "X", "Y", "Z"};
        if (chinese == null || chinese.trim().length() == 0) {
            return "";
        }
        chinese = conversionStr(chinese, "GB2312", "ISO8859-1");
        if (chinese.length() > 1) { // ?��?????????
            int li_SectorCode = (int) chinese.charAt(0); // ????????
            int li_PositionCode = (int) chinese.charAt(1); // ????��??
            li_SectorCode = li_SectorCode - 160;
            li_PositionCode = li_PositionCode - 160;
            int li_SecPosCode = li_SectorCode * 100 + li_PositionCode;// ??????��??
            if (li_SecPosCode > 1600 && li_SecPosCode < 5590) {
                for (int i = 0; i < 23; i++) {
                    if (li_SecPosCode >= li_SecPosValue[i]
                            && li_SecPosCode < li_SecPosValue[i + 1]) {
                        chinese = lc_FirstLetter[i];
                        break;
                    }
                }
            } else {
                chinese = conversionStr(chinese, "ISO8859-1", "GB2312");
                chinese = chinese.substring(0, 1);
            }
        }
        return chinese;
    }
    private static String conversionStr(String str, String charsetName,
                                        String toCharsetName) {
        try {
            str = new String(str.getBytes(charsetName), toCharsetName);
        } catch (UnsupportedEncodingException ex) {
        }
        return str;
    }
    public static String checkStr(String html) {
        try {
            html = html.replaceAll("\r", "");
            html = html.replaceAll("\n", "");
            html = html.replaceAll("\"", "'");
            html = html.replaceAll("\t", " ");
            Pattern p_script;
            Matcher m_script;
            Pattern p_href;
            Matcher m_href;
            Pattern p_a;
            Matcher m_a;
            Pattern p_on;
            Matcher m_on;
            Pattern p_iframe;
            Matcher m_iframe;
            Pattern p_frameset;
            Matcher m_frameset;
            Pattern p_img;
            Matcher m_img;
            Pattern p_p1;
            Matcher m_p1;
            Pattern p_p2;
            Matcher m_p2;
            String stript_str = "<script[\\s\\S]+</script *>";
            String href_str = " href *= *[\\s\\S]*script *:";
            String on_str = " on[\\s\\S]*=";
            String iframe_str = "<iframe[\\s\\S]+</iframe *>";
            String frameset_str = "<frameset[\\s\\S]+</frameset *>";
            String a_str = "<a ([^>])*>.*?</a([^>])*>";
            //String img_str = "\\<img[^\\>]+\\>";
            String p_str1 = "</p>";
            String p_str2 = "<p>";
            p_script = Pattern.compile(stript_str, Pattern.CASE_INSENSITIVE);
            m_script = p_script.matcher(html);
            html = m_script.replaceAll(""); // ????script???
            p_href = Pattern.compile(href_str, Pattern.CASE_INSENSITIVE);
            m_href = p_href.matcher(html);
            html = m_href.replaceAll(""); // ????script???
            p_a = Pattern.compile(a_str, Pattern.CASE_INSENSITIVE);
            m_a = p_a.matcher(html);
            html = m_a.replaceAll(""); // ????script???
            p_on = Pattern.compile(on_str, Pattern.CASE_INSENSITIVE);
            m_on = p_on.matcher(html);
            html = m_on.replaceAll(""); // ????script???
            p_iframe = Pattern.compile(iframe_str, Pattern.CASE_INSENSITIVE);
            m_iframe = p_iframe.matcher(html);
            html = m_iframe.replaceAll(""); // ????script???
            p_frameset = Pattern
                    .compile(frameset_str, Pattern.CASE_INSENSITIVE);
            m_frameset = p_frameset.matcher(html);
            html = m_frameset.replaceAll(""); // ????script???
            // p_img = Pattern.compile(img_str, Pattern.CASE_INSENSITIVE);
            // m_img = p_img.matcher(html);
            // html = m_img.replaceAll(""); // ????script???
            p_p1 = Pattern.compile(p_str1, Pattern.CASE_INSENSITIVE);
            m_p1 = p_p1.matcher(html);
            html = m_p1.replaceAll(""); // ????script???
            p_p2 = Pattern.compile(p_str2, Pattern.CASE_INSENSITIVE);
            m_p2 = p_p2.matcher(html);
            html = m_p2.replaceAll(""); // ????script???
        } catch (Exception e) {
            System.err.println("Html2Text: " + e.getMessage());
        }
        return html;
    }
    public static String substr(String value, int maxlength, String postfix) {
        int k = 0;
        int l = 0;
        for (int i = 0; i < value.length() && maxlength > l * 2 + k; i++) {
            if (value.charAt(i) > '\200') {
                l++;
            } else {
                k++;
            }
        }
        if (l + k >= value.length()) {
            return value;
        } else if (maxlength >= l * 2 + k && l + k > 0) {
            value = value.substring(0, l + k);
        } else if (l + k > 0) {
            value = value.substring(0, (l + k) - 1);
        } else {
            return value;
        }
        if (!StringUtils.isEmpty(postfix)) {
            value += postfix;
        }
        return value;
    }
    public String nullToSpace(String Content) {
        if (Content == null) {
            Content = "";
        }
        return Content;
    }
    public String GBK2ISO(String strvalue) throws Exception {
        try {
            if (strvalue == null)
                return null;
            else {
                strvalue = new String(strvalue.getBytes("GBK"), "ISO8859_1");
                return strvalue;
            }
        } catch (Exception e) {
            return null;
        }
    }
    public static   String replaceBlank(String str) {
        String dest = "";
        if (str!=null) {
            Pattern p = Pattern.compile("\\s*|\t|\r|\n");
            Matcher m = p.matcher(str);
            dest = m.replaceAll("");
        }
        return dest;
    }
}

+ 113 - 0
patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/controller/DeviceController.java

@ -0,0 +1,113 @@
package com.yihu.hos.device.controller;
import com.yihu.hos.device.model.PatientHealthIndex;
import com.yihu.hos.device.model.Result;
import com.yihu.hos.device.service.ApiOpenService;
import com.yihu.hos.device.service.DeviceService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
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 javax.annotation.Resource;
import java.util.HashMap;
import java.util.Map;
/**
 * Created by lingfeng on 2016/8/19.
 */
@RestController
@RequestMapping("/device")
@Api(value = "设备相关服务", description = "设备相关服务")
public class DeviceController {
    @Resource(name = DeviceService.BEAN_ID)
    DeviceService deviceService;
    @Autowired
    ApiOpenService apiOpenService;
    @ApiOperation("福州设备数据上传接口(原始数据)")
    @RequestMapping(value = "/data", produces = "application/json;charset=UTF-8", method = RequestMethod.POST)
    public Result pushData(
            @ApiParam(name="deviceData",value="设备数据",defaultValue = "5A25001010215L000002000000069141201120107B1_460040280101438_FFFFFFFFFFFFFFFFFFFFFFFFF")
            @RequestParam(value = "deviceData") String deviceData,
            @ApiParam(name="deviceType",value="设备类型",defaultValue = "1")
            @RequestParam(value = "deviceType") String deviceType) {
        try {
            return deviceService.pushData(deviceData, deviceType);
        } catch (Exception e) {
            return Result.error("Device data incoming failure");
        }
    }
    @ApiOperation("福州设备数据上传接口(标准协议)")
    @RequestMapping(value = "/upload", produces = "application/json;charset=UTF-8", method = RequestMethod.POST)
    public Result uploadDevicesData(
            @ApiParam(value="推送类型(44代表体征推送)",defaultValue = "44")
            @RequestParam(value = "typeId", required = false)  Integer typeId ,
            @ApiParam(value="体征数据",defaultValue = "{\"button\":\"1\",\"data\":\"1.81\",\"deviceSn\":\"16C000337\",\"deviceType\":2,\"id\":2377,\"manufacturerCode\":\"threeNod\",\"manufacturerName\":\"三诺\",\"sendTime\":\"2017-03-13 13:47:42\",\"state\":0,\"unit\":\"mmol/L\",\"uploadTime\":\"2017-03-13 13:46:59\"}")
            @RequestParam(value = "data", required = true)  String data)
    {
        try{
            System.out.println("typeId="+typeId+";data="+data);
            return deviceService.uploadDevicesData(data);
        }
        catch (Exception ex)
        {
            return Result.error("Device data incoming failure!"+ex.getMessage());
        }
    }
    @ApiOperation("设备数据查询接口")
    @RequestMapping(value = "/data", produces = "application/json;charset=UTF-8", method = RequestMethod.GET)
    public Result getData(
            @ApiParam(name="deviceCode",value="设备sn码",defaultValue = "")
            @RequestParam(value = "deviceCode", required = false) String deviceCode) {
        try {
            return deviceService.getData(deviceCode);
        } catch (Exception e) {
            return  Result.error("Device data acquisition failure");
        }
    }
    /**
     *  {"time":"2016-08-22 09:00:00","dia":"90","sys":"110","pul":"91","ano":"1","user":"2"}
     */
    @ApiOperation("设备数据上传接口")
    @RequestMapping(value = "/data/patient",method = RequestMethod.POST)
    public Result savePatientDeviceData(
            @ApiParam(name="appkey",value="应用key",defaultValue = "yre")
            @RequestParam(value="appkey",required = true) String appkey,
            @ApiParam(name="sign",value="签名校验",defaultValue = "6799BED57FF58EDFCF68C96415BF9F25F53BFA3B")
            @RequestParam(value="sign",required = true) String sign,
            @ApiParam(name="timestamp",value="时间戳",defaultValue = "2016-09-10 11:20:59")
            @RequestParam(value="timestamp",required = true) String timestamp,
            @ApiParam(name="data",value="设备数据",defaultValue = "")
            @RequestParam(value="data",required = true) String data,
            @ApiParam(name="type",value="指标类型1血糖2血压3体重4腰围",defaultValue = "")
            @RequestParam(value="type",required = true) String type,
            @ApiParam(name="sn",value="设备sn码",defaultValue = "")
            @RequestParam(value="sn",required = true) String sn) {
        try {
            Map<String, String> paramMap = new HashMap<>();
            paramMap.put("timestamp",timestamp);
            paramMap.put("data",data);
            paramMap.put("type",data);
            paramMap.put("sn",sn);
            apiOpenService.checkRequest(appkey,sign,timestamp,paramMap);
            PatientHealthIndex re = deviceService.savePatientDeviceData(data, type, sn);
            return Result.success("Device data incoming success. ");
        } catch (Exception e) {
            return  Result.error("Device data incoming failure. "+e.getMessage());
        }
    }
}

+ 200 - 0
patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/model/DeviceDetail.java

@ -0,0 +1,200 @@
package com.yihu.hos.device.model;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
 * Created by lingfeng on 2016/8/19.
 */
@Entity
@Table(name = "wlyy_devices")
public class DeviceDetail extends IdEntity{
    private String deviceName;
    private String deviceModel;
    private String deviceCode;
    private String manufacturer;
    private String applyDate;;
    private String orgName;
    private String linkman;
    private String tel;
    private String serverIp;
    private String manufacturerCode;
    private String address;
    private String representative;
    private String applicantName;
    private String applicantIdentity;
    private String applicantTel;
    private String applicantMail;
    /** default constructor */
    public DeviceDetail() {
    }
    /** full constructor */
    public DeviceDetail(String deviceName, String deviceModel, String deviceCode, String manufacturer, String applyDate
            , String orgName, String linkman, String tel, String serverIp, String manufacturerCode, String address
            , String representative, String applicantName, String applicantIdentity, String applicantTel, String applicantMail) {
        this.deviceName = deviceName;
        this.deviceModel = deviceModel;
        this.deviceCode = deviceCode;
        this.manufacturer = manufacturer;
        this.applyDate = applyDate;
        this.orgName = orgName;
        this.linkman = linkman;
        this.tel = tel;
        this.serverIp = serverIp;
        this.manufacturerCode = manufacturerCode;
        this.address = address;
        this.representative = representative;
        this.applicantName = applicantName;
        this.applicantIdentity = applicantIdentity;
        this.applicantTel = applicantTel;
        this.applicantMail = applicantMail;
    }
    @Column(name = "device_name")
    public String getDeviceName() {
        return deviceName;
    }
    public void setDeviceName(String deviceName) {
        this.deviceName = deviceName;
    }
    @Column(name = "device_model")
    public String getDeviceModel() {
        return deviceModel;
    }
    public void setDeviceModel(String deviceModel) {
        this.deviceModel = deviceModel;
    }
    @Column(name = "device_code")
    public String getDeviceCode() {
        return deviceCode;
    }
    public void setDeviceCode(String deviceCode) {
        this.deviceCode = deviceCode;
    }
    @Column(name = "manufacturer")
    public String getManufacturer() {
        return manufacturer;
    }
    public void setManufacturer(String manufacturer) {
        this.manufacturer = manufacturer;
    }
    @Column(name = "apply_date")
    public String getApplyDate() {
        return applyDate;
    }
    public void setApplyDate(String applyDate) {
        this.applyDate = applyDate;
    }
    @Column(name = "org_name")
    public String getOrgName() {
        return orgName;
    }
    public void setOrgName(String orgName) {
        this.orgName = orgName;
    }
    @Column(name = "linkman")
    public String getLinkman() {
        return linkman;
    }
    public void setLinkman(String linkman) {
        this.linkman = linkman;
    }
    @Column(name = "tel")
    public String getTel() {
        return tel;
    }
    public void setTel(String tel) {
        this.tel = tel;
    }
    @Column(name = "server_ip")
    public String getServerIp() {
        return serverIp;
    }
    public void setServerIp(String serverIp) {
        this.serverIp = serverIp;
    }
    @Column(name = "manufacturerCode")
    public String getManufacturerCode() {
        return manufacturerCode;
    }
    public void setManufacturerCode(String manufacturerCode) {
        this.manufacturerCode = manufacturerCode;
    }
    @Column(name = "address")
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
    @Column(name = "representative")
    public String getRepresentative() {
        return representative;
    }
    public void setRepresentative(String representative) {
        this.representative = representative;
    }
    @Column(name = "applicant_name")
    public String getApplicantName() {
        return applicantName;
    }
    public void setApplicantName(String applicantName) {
        this.applicantName = applicantName;
    }
    @Column(name = "applicant_identity")
    public String getApplicantIdentity() {
        return applicantIdentity;
    }
    public void setApplicantIdentity(String applicantIdentity) {
        this.applicantIdentity = applicantIdentity;
    }
    @Column(name = "applicant_tel")
    public String getApplicantTel() {
        return applicantTel;
    }
    public void setApplicantTel(String applicantTel) {
        this.applicantTel = applicantTel;
    }
    @Column(name = "applicant_mail")
    public String getApplicantMail() {
        return applicantMail;
    }
    public void setApplicantMail(String applicantMail) {
        this.applicantMail = applicantMail;
    }
}

+ 69 - 0
patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/model/DeviceInfo.java

@ -0,0 +1,69 @@
package com.yihu.hos.device.model;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.sql.Timestamp;
import java.util.Date;
/**
 * Created by lingfeng on 2016/8/19.
 */
@Entity
@Table(name = "wlyy_devices_data_record")
public class DeviceInfo extends IdEntity {
    private String deviceData;
    private String deviceType;
    private Timestamp pushDate;
    private String status;
    // Constructors
    /** default constructor */
    public DeviceInfo() {
    }
    /** full constructor */
    public DeviceInfo(String deviceData, String deviceType,
                      Timestamp pushDate, String status) {
        this.deviceData = deviceData;
        this.deviceType = deviceType;
        this.pushDate = pushDate;
        this.status = status;
    }
    @Column(name = "device_data")
    public String getDeviceData() {
        return deviceData;
    }
    public void setDeviceData(String deviceData) {
        this.deviceData = deviceData;
    }
    @Column(name = "device_type")
    public String getDeviceType() {
        return deviceType;
    }
    public void setDeviceType(String deviceType) {
        this.deviceType = deviceType;
    }
    @Column(name = "push_date")
    public Date getPushDate() {
        return pushDate;
    }
    public void setPushDate(Timestamp pushDate) {
        this.pushDate = pushDate;
    }
    @Column(name = "status")
    public String getStatus() {
        return status;
    }
    public void setStatus(String status) {
        this.status = status;
    }
}

+ 58 - 0
patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/model/DeviceManufacturer.java

@ -0,0 +1,58 @@
package com.yihu.hos.device.model;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.sql.Timestamp;
import java.util.Date;
/**
 * Created by hzp on 2016/9/10.
 * 设备厂家
 */
@Entity
@Table(name = "wlyy_devices_manufacturer")
public class DeviceManufacturer extends IdEntity {
    private String manufacturer;
    private String appkey;
    private String secret;
    private String status;
    @Column(name = "manufacturer")
    public String getManufacturer() {
        return manufacturer;
    }
    public void setManufacturer(String manufacturer) {
        this.manufacturer = manufacturer;
    }
    @Column(name = "appkey")
    public String getAppkey() {
        return appkey;
    }
    public void setAppkey(String appkey) {
        this.appkey = appkey;
    }
    @Column(name = "secret")
    public String getSecret() {
        return secret;
    }
    public void setSecret(String secret) {
        this.secret = secret;
    }
    @Column(name = "status")
    public String getStatus() {
        return status;
    }
    public void setStatus(String status) {
        this.status = status;
    }
}

+ 44 - 0
patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/model/IdEntity.java

@ -0,0 +1,44 @@
/*******************************************************************************
 * Copyright (c) 2005, 2014 springside.github.io
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 *******************************************************************************/
package com.yihu.hos.device.model;
import java.io.Serializable;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.MappedSuperclass;
/**
 * 统一定义id的entity基类.
 * 
 * 基类统一定义id的属性名称、数据类型、列名映射及生成策略.
 * Oracle需要每个Entity独立定义id的SEQUCENCE时,不继承于本类而改为实现一个Idable的接口。
 * 
 * @author calvin
 */
// JPA 基类的标识
@MappedSuperclass
public abstract class IdEntity implements Serializable {
	/**
	 * 
	 */
	private static final long serialVersionUID = 3673803562328635206L;
	
	// 非业务主键
	protected Long id;
	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
}

File diff suppressed because it is too large
+ 255 - 0
patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/model/Message.java


+ 322 - 0
patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/model/Patient.java

@ -0,0 +1,322 @@
package com.yihu.hos.device.model;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
 * 患者信息
 * @author George
 *
 */
@Entity
@Table(name = "wlyy_patient",schema="wlyy",catalog="wlyy")
public class Patient extends IdEntity implements Serializable {
	/**
	 * 
	 */
	private static final long serialVersionUID = 8358924836164389434L;
	public Patient(){}
	// 业务主键
	private String code;
	// 身份证号
	private String idcard;
	// 登录密码
	private String password;
	private String salt;
	// 姓名
	private String name;
	// 生日
	private Date birthday;
	// 性別,1男,2女
	private Integer sex;
	// 手機號
	private String mobile;
	// 聯繫電話
	private String phone;
	// 社保卡號
	private String ssc;
	// 頭像HTTP地址
	private String photo;
	// 省代碼
	private String province;
	// 城市代碼
	private String city;
	// 區縣代碼
	private String town;
	// 街道代码
	private String street;
	// 省名
	private String provinceName;
	// 市名
	private String cityName;
	// 區縣名
	private String townName;
	// 街道名称
	private String streetName;
	// 地址
	private String address;
	// 疾病类型,0健康,1高血压,2糖尿病,3高血压+糖尿病
	private Integer disease;
	// 病情:0绿标,1黄标,2红标
	private Integer diseaseCondition;
	// 病历记录总数
	private Integer recordAmount;
	// 總積分
	private Integer points;
	// 更新時間
	private Date czrq;
	// 微信编号
	private String openid;
	// 用户状态:1正常,0禁用,-1恶意注册,2审核中
	private Integer status;
	public Patient(Long id) {
		this.id = id;
	}
	public String getCode() {
		return code;
	}
	public void setCode(String code) {
		this.code = code;
	}
	public String getIdcard() {
		return idcard;
	}
	public void setIdcard(String idcard) {
		this.idcard = idcard;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String getSalt() {
		return salt;
	}
	public void setSalt(String salt) {
		this.salt = salt;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+08:00")
	public Date getBirthday() {
		return birthday;
	}
	public void setBirthday(Date birthday) {
		this.birthday = birthday;
	}
	public Integer getSex() {
		return sex;
	}
	public void setSex(Integer sex) {
		this.sex = sex;
	}
	public String getMobile() {
		return mobile;
	}
	public void setMobile(String mobile) {
		this.mobile = mobile;
	}
	public String getPhone() {
		return phone;
	}
	public void setPhone(String phone) {
		this.phone = phone;
	}
	public String getSsc() {
		return ssc;
	}
	public void setSsc(String ssc) {
		this.ssc = ssc;
	}
	public String getPhoto() {
		return photo;
	}
	public void setPhoto(String photo) {
		this.photo = photo;
	}
	public String getProvince() {
		return province;
	}
	public void setProvince(String province) {
		this.province = province;
	}
	public String getCity() {
		return city;
	}
	public void setCity(String city) {
		this.city = city;
	}
	public String getTown() {
		return town;
	}
	public void setTown(String town) {
		this.town = town;
	}
	public String getStreet() {
		return street;
	}
	public void setStreet(String street) {
		this.street = street;
	}
	@Column(name = "province_name")
	public String getProvinceName() {
		return provinceName;
	}
	public void setProvinceName(String provinceName) {
		this.provinceName = provinceName;
	}
	@Column(name = "city_name")
	public String getCityName() {
		return cityName;
	}
	public void setCityName(String cityName) {
		this.cityName = cityName;
	}
	@Column(name = "town_name")
	public String getTownName() {
		return townName;
	}
	public void setTownName(String townName) {
		this.townName = townName;
	}
	@Column(name = "street_name")
	public String getStreetName() {
		return streetName;
	}
	public void setStreetName(String streetName) {
		this.streetName = streetName;
	}
	public static long getSerialversionuid() {
		return serialVersionUID;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	public Integer getDisease() {
		return disease;
	}
	public void setDisease(Integer disease) {
		this.disease = disease;
	}
	@Column(name = "disease_condition")
	public Integer getDiseaseCondition() {
		return diseaseCondition;
	}
	public void setDiseaseCondition(Integer diseaseCondition) {
		this.diseaseCondition = diseaseCondition;
	}
	@Column(name = "record_amount")
	public Integer getRecordAmount() {
		return recordAmount;
	}
	public void setRecordAmount(Integer recordAmount) {
		this.recordAmount = recordAmount;
	}
	public Integer getPoints() {
		return points;
	}
	public void setPoints(Integer points) {
		this.points = points;
	}
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
	public Date getCzrq() {
		return czrq;
	}
	public void setCzrq(Date czrq) {
		this.czrq = czrq;
	}
	public String getOpenid() {
		return openid;
	}
	public void setOpenid(String openid) {
		this.openid = openid;
	}
	@Override
	public String toString() {
		return ToStringBuilder.reflectionToString(this);
	}
	public Integer getStatus() {
		return status;
	}
	public void setStatus(Integer status) {
		this.status = status;
	}
}

+ 226 - 0
patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/model/PatientBloodSugger.java

@ -0,0 +1,226 @@
package com.yihu.hos.device.model;
import com.fasterxml.jackson.annotation.JsonFormat;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.util.Date;
/**
 * Created by Reece on 2017/5/11.
 */
@Entity
@Table(name = "wlyy_patient_blood_sugger",catalog = "wlyy")
public class PatientBloodSugger extends IdEntity {
    //    早餐前开始时间
    private String fastingStart;
    //    '早餐前截止时间'
    private String fastingEnd;
    //    '早餐后开始时间'
    private String afterBreakfastStart;
    //    '早餐后截止时间'
    private String afterBreakfastEnd;
    //    '午餐前开始时间'
    private String beforeLunchStart;
    //    '午餐前截止时间'
    private String beforeLunchEnd;
    //    '午餐后开始时间'
    private String afterLunchStart;
    //    '午餐后截止时间'
    private String afterLunchEnd;
    //    '晚餐前开始时间'
    private String beforeDinnerStart;
    //    '晚餐前截止时间'
    private String beforeDinnerEnd;
    //    '晚餐后开始时间'
    private String afterDinnerStart;
    //    '晚餐后截止时间'
    private String afterDinnerEnd;
    //    '睡前开始时间'
    private String beforeSleepStart;
    //    '睡前截止时间'
    private String beforeSleepEnd;
    //    '添加时间'
    private Date czrq;
    //    是否作废,1正常,0作废
    private int del;
    public PatientBloodSugger() {
    }
    @Column(name = "fasting_start")
    @JsonFormat(pattern = "HH:mm:ss", timezone = "GMT+08:00")
    public String getFastingStart() {
        return fastingStart;
    }
    public void setFastingStart(String fastingStart) {
        this.fastingStart = fastingStart;
    }
    @Column(name = "fasting_end")
    @JsonFormat(pattern = "HH:mm:ss", timezone = "GMT+08:00")
    public String getFastingEnd() {
        return fastingEnd;
    }
    public void setFastingEnd(String fastingEnd) {
        this.fastingEnd = fastingEnd;
    }
    @Column(name = "after_breakfast_start")
    @JsonFormat(pattern = "HH:mm:ss", timezone = "GMT+08:00")
    public String getAfterBreakfastStart() {
        return afterBreakfastStart;
    }
    public void setAfterBreakfastStart(String afterBreakfastStart) {
        this.afterBreakfastStart = afterBreakfastStart;
    }
    @Column(name = "after_breakfast_end")
    @JsonFormat(pattern = "HH:mm:ss", timezone = "GMT+08:00")
    public String getAfterBreakfastEnd() {
        return afterBreakfastEnd;
    }
    public void setAfterBreakfastEnd(String afterBreakfastEnd) {
        this.afterBreakfastEnd = afterBreakfastEnd;
    }
    @Column(name = "before_lunch_start")
    @JsonFormat(pattern = "HH:mm:ss", timezone = "GMT+08:00")
    public String getBeforeLunchStart() {
        return beforeLunchStart;
    }
    public void setBeforeLunchStart(String beforeLunchStart) {
        this.beforeLunchStart = beforeLunchStart;
    }
    @Column(name = "before_lunch_end")
    @JsonFormat(pattern = "HH:mm:ss", timezone = "GMT+08:00")
    public String getBeforeLunchEnd() {
        return beforeLunchEnd;
    }
    public void setBeforeLunchEnd(String beforeLunchEnd) {
        this.beforeLunchEnd = beforeLunchEnd;
    }
    @Column(name = "after_lunch_start")
    @JsonFormat(pattern = "HH:mm:ss", timezone = "GMT+08:00")
    public String getAfterLunchStart() {
        return afterLunchStart;
    }
    public void setAfterLunchStart(String afterLunchStart) {
        this.afterLunchStart = afterLunchStart;
    }
    @Column(name = "after_lunch_end")
    @JsonFormat(pattern = "HH:mm:ss", timezone = "GMT+08:00")
    public String getAfterLunchEnd() {
        return afterLunchEnd;
    }
    public void setAfterLunchEnd(String afterLunchEnd) {
        this.afterLunchEnd = afterLunchEnd;
    }
    @Column(name = "before_dinner_start")
    @JsonFormat(pattern = "HH:mm:ss", timezone = "GMT+08:00")
    public String getBeforeDinnerStart() {
        return beforeDinnerStart;
    }
    public void setBeforeDinnerStart(String beforeDinnerStart) {
        this.beforeDinnerStart = beforeDinnerStart;
    }
    @Column(name = "before_dinner_end")
    @JsonFormat(pattern = "HH:mm:ss", timezone = "GMT+08:00")
    public String getBeforeDinnerEnd() {
        return beforeDinnerEnd;
    }
    public void setBeforeDinnerEnd(String beforeDinnerEnd) {
        this.beforeDinnerEnd = beforeDinnerEnd;
    }
    @Column(name = "after_dinner_start")
    @JsonFormat(pattern = "HH:mm:ss", timezone = "GMT+08:00")
    public String getAfterDinnerStart() {
        return afterDinnerStart;
    }
    public void setAfterDinnerStart(String afterDinnerStart) {
        this.afterDinnerStart = afterDinnerStart;
    }
    @Column(name = "after_dinner_end")
    @JsonFormat(pattern = "HH:mm:ss", timezone = "GMT+08:00")
    public String getAfterDinnerEnd() {
        return afterDinnerEnd;
    }
    public void setAfterDinnerEnd(String afterDinnerEnd) {
        this.afterDinnerEnd = afterDinnerEnd;
    }
    @Column(name = "before_sleep_start")
    @JsonFormat(pattern = "HH:mm:ss", timezone = "GMT+08:00")
    public String getBeforeSleepStart() {
        return beforeSleepStart;
    }
    public void setBeforeSleepStart(String beforeSleepStart) {
        this.beforeSleepStart = beforeSleepStart;
    }
    @Column(name = "before_sleep_end")
    @JsonFormat(pattern = "HH:mm:ss", timezone = "GMT+08:00")
    public String getBeforeSleepEnd() {
        return beforeSleepEnd;
    }
    public void setBeforeSleepEnd(String beforeSleepEnd) {
        this.beforeSleepEnd = beforeSleepEnd;
    }
    @Column(name = "czrq")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    public Date getCzrq() {
        return czrq;
    }
    public void setCzrq(Date czrq) {
        this.czrq = czrq;
    }
    public int getDel() {
        return del;
    }
    public void setDel(int del) {
        this.del = del;
    }
}

+ 116 - 0
patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/model/PatientDevice.java

@ -0,0 +1,116 @@
package com.yihu.hos.device.model;
import com.fasterxml.jackson.annotation.JsonFormat;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.util.Date;
@Entity
@Table(name = "wlyy_patient_device",schema="wlyy",catalog="wlyy")
public class PatientDevice extends IdEntity {
	public PatientDevice(){}
	// 设备ID
	private Long deviceId;
	// 设备标识
	private String deviceSn;
	// 设备名称
	private String deviceName;
	// 用户code
	private String user;
	// 设备类型标识
	private String categoryCode;
	// 用户类型标准 -1代表单用户
	private String userType;
	// 用户身份证
	private String userIdcard;
	// 操作医生代码
	private String doctor;
	// 操作时间
	private Date czrq;
	@Column(name="device_id")
	public Long getDeviceId() {
		return deviceId;
	}
	public void setDeviceId(Long deviceId) {
		this.deviceId = deviceId;
	}
	@Column(name="device_sn")
	public String getDeviceSn() {
		return deviceSn;
	}
	public void setDeviceSn(String deviceSn) {
		this.deviceSn = deviceSn;
	}
	@Column(name="device_name")
	public String getDeviceName() {
		return deviceName;
	}
	public void setDeviceName(String deviceName) {
		this.deviceName = deviceName;
	}
	@Column(name="user")
	public String getUser() {
		return user;
	}
	public void setUser(String user) {
		this.user = user;
	}
	@Column(name="category_code")
	public String getCategoryCode() {
		return categoryCode;
	}
	public void setCategoryCode(String categoryCode) {
		this.categoryCode = categoryCode;
	}
	@Column(name="user_type")
	public String getUserType() {
		return userType;
	}
	public void setUserType(String userType) {
		this.userType = userType;
	}
	@Column(name="user_idcard")
	public String getUserIdcard() {
		return userIdcard;
	}
	public void setUserIdcard(String userIdcard) {
		this.userIdcard = userIdcard;
	}
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
	@Column(name="czrq")
	public Date getCzrq() {
		return czrq;
	}
	public void setCzrq(Date czrq) {
		this.czrq = czrq;
	}
	@Column(name="doctor")
	public String getDoctor() {
		return doctor;
	}
	public void setDoctor(String doctor) {
		this.doctor = doctor;
	}
}

+ 185 - 0
patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/model/PatientHealthIndex.java

@ -0,0 +1,185 @@
package com.yihu.hos.device.model;
import com.fasterxml.jackson.annotation.JsonFormat;
import javax.persistence.*;
import java.util.Date;
/**
 * 健康指标
 * @author George
 *
 */
@Entity
@Table(name = "wlyy_patient_health_index")
@NamedNativeQueries({ @NamedNativeQuery(name = "findRecentByPatient", query = "select b.* from (SELECT a.* FROM wlyy_patient_health_index a where a.user = ?1 order by a.record_date desc) b GROUP BY b.type", resultClass = PatientHealthIndex.class) })
public class PatientHealthIndex extends IdEntity {
	// 患者标志
	private String user;
	// 干预标志
	private String intervene;
	// 血糖/收缩压/体重/腰围/早餐前空腹
	private String value1;
	// 舒张压/早餐后空腹
	private String value2;
	// 午餐空腹
	private String value3;
	// 午餐后
	private String value4;
	// 晚餐空腹
	private String value5;
	// 晚餐后
	private String value6;
	// 睡前
	private String value7;
	// 健康指标类型(1血糖,2血压,3体重,4腰围)
	private int type;
	// 记录时间
	private Date recordDate;
	// 排序日期
	private Date sortDate;
	// 添加时间
	private Date czrq;
	// 是否作废,1正常,0作废
	private String del;
	//身份证号码
	private String idcard;
	//设备编号
	private String deviceSn;
	public String getUser() {
		return user;
	}
	public void setUser(String user) {
		this.user = user;
	}
	public String getIntervene() {
		return intervene;
	}
	public void setIntervene(String intervene) {
		this.intervene = intervene;
	}
	public String getValue1() {
		return value1;
	}
	public void setValue1(String value1) {
		this.value1 = value1;
	}
	public String getValue2() {
		return value2;
	}
	public void setValue2(String value2) {
		this.value2 = value2;
	}
	public String getValue3() {
		return value3;
	}
	public void setValue3(String value3) {
		this.value3 = value3;
	}
	public String getValue4() {
		return value4;
	}
	public void setValue4(String value4) {
		this.value4 = value4;
	}
	public String getValue5() {
		return value5;
	}
	public void setValue5(String value5) {
		this.value5 = value5;
	}
	public String getValue6() {
		return value6;
	}
	public void setValue6(String value6) {
		this.value6 = value6;
	}
	public String getValue7() {
		return value7;
	}
	public void setValue7(String value7) {
		this.value7 = value7;
	}
	@Column(name = "record_date")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
	public Date getRecordDate() {
		return recordDate;
	}
	public void setRecordDate(Date recordDate) {
		this.recordDate = recordDate;
	}
	public int getType() {
		return type;
	}
	public void setType(int type) {
		this.type = type;
	}
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
	@Column(name = "sort_date")
	public Date getSortDate() {
		return sortDate;
	}
	public void setSortDate(Date sortDate) {
		this.sortDate = sortDate;
	}
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
	public Date getCzrq() {
		return czrq;
	}
	public void setCzrq(Date czrq) {
		this.czrq = czrq;
	}
	public String getDel() {
		return del;
	}
	public void setDel(String del) {
		this.del = del;
	}
	@Column(name = "Idcard")
	public String getIdcard() {
		return idcard;
	}
	public void setIdcard(String idcard) {
		this.idcard = idcard;
	}
	@Column(name = "device_sn")
	public String getDeviceSn() {
		return deviceSn;
	}
	public void setDeviceSn(String deviceSn) {
		this.deviceSn = deviceSn;
	}
}

+ 109 - 0
patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/model/PatientHealthStandard.java

@ -0,0 +1,109 @@
package com.yihu.hos.device.model;
import com.fasterxml.jackson.annotation.JsonFormat;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.util.Date;
/**
 * 患者健康指标预警值
 * @author George
 *
 */
@Entity
@Table(name = "wlyy_patient_health_standard",schema="wlyy",catalog="wlyy")
public class PatientHealthStandard extends IdEntity {
	public PatientHealthStandard(){}
	private static final long serialVersionUID = -8343925049051333359L;
	
	// 患者标识
	private String patient;
	// 健康指标类型:1血糖,2血压,3体重,4腰围
	private Integer type;
	// 最低安全值(血糖餐前\收缩压\体重\腰围)
	private Double minValue1;
	// 最高安全值(血糖餐前\收缩压\体重\腰围)
	private Double maxValue1;
	// 最低安全值(血糖餐后\舒张压)
	private Double minValue2;
	// 最高安全值(血糖餐后\舒张压)
	private Double maxValue2;
	// 设置医生
	private String doctor;
	// 设置时间
	private Date czrq;
	public String getPatient() {
		return patient;
	}
	public void setPatient(String patient) {
		this.patient = patient;
	}
	public Integer getType() {
		return type;
	}
	public void setType(Integer type) {
		this.type = type;
	}
	@Column(name = "min_value_1")
	public Double getMinValue1() {
		return minValue1;
	}
	public void setMinValue1(Double minValue) {
		this.minValue1 = minValue;
	}
	@Column(name = "max_value_1")
	public Double getMaxValue1() {
		return maxValue1;
	}
	public void setMaxValue1(Double maxValue) {
		this.maxValue1 = maxValue;
	}
	
	@Column(name = "min_value_2")
	public Double getMinValue2() {
		return minValue2;
	}
	public void setMinValue2(Double minValue) {
		this.minValue2 = minValue;
	}
	@Column(name = "max_value_2")
	public Double getMaxValue2() {
		return maxValue2;
	}
	public void setMaxValue2(Double maxValue) {
		this.maxValue2 = maxValue;
	}
	public String getDoctor() {
		return doctor;
	}
	public void setDoctor(String doctor) {
		this.doctor = doctor;
	}
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
	public Date getCzrq() {
		return czrq;
	}
	public void setCzrq(Date czrq) {
		this.czrq = czrq;
	}
}

+ 248 - 0
patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/model/PatientHealthTime.java

@ -0,0 +1,248 @@
package com.yihu.hos.device.model;
import com.fasterxml.jackson.annotation.JsonFormat;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.util.Date;
/**
 * Created by Reece on 2017/5/11.
 */
@Entity
@Table(name = "wlyy_patient_health_time",catalog = "wlyy")
public class PatientHealthTime extends IdEntity {
    //    居民
    private String user;
    //    设备sn码
    private String deviceSN;
    //    早餐前开始时间
    private String fastingStart;
    //    '早餐前截止时间'
    private String fastingEnd;
    //    '早餐后开始时间'
    private String afterBreakfastStart;
    //    '早餐后截止时间'
    private String afterBreakfastEnd;
    //    '午餐前开始时间'
    private String beforeLunchStart;
    //    '午餐前截止时间'
    private String beforeLunchEnd;
    //    '午餐后开始时间'
    private String afterLunchStart;
    //    '午餐后截止时间'
    private String afterLunchEnd;
    //    '晚餐前开始时间'
    private String beforeDinnerStart;
    //    '晚餐前截止时间'
    private String beforeDinnerEnd;
    //    '晚餐后开始时间'
    private String afterDinnerStart;
    //    '晚餐后截止时间'
    private String afterDinnerEnd;
    //    '睡前开始时间'
    private String beforeSleepStart;
    //    '睡前截止时间'
    private String beforeSleepEnd;
    //    '添加时间'
    private Date czrq;
    //    是否作废,1正常,0作废
    private int del;
    public PatientHealthTime() {
    }
    @Column(name = "user")
    public String getUser() {
        return user;
    }
    public void setUser(String user) {
        this.user = user;
    }
    @Column(name = "device_sn")
    public String getDeviceSN() {
        return deviceSN;
    }
    public void setDeviceSN(String deviceSN) {
        this.deviceSN = deviceSN;
    }
    @Column(name = "fasting_start")
    @JsonFormat(pattern = "HH:mm:ss", timezone = "GMT+08:00")
    public String getFastingStart() {
        return fastingStart;
    }
    public void setFastingStart(String fastingStart) {
        this.fastingStart = fastingStart;
    }
    @Column(name = "fasting_end")
    @JsonFormat(pattern = "HH:mm:ss", timezone = "GMT+08:00")
    public String getFastingEnd() {
        return fastingEnd;
    }
    public void setFastingEnd(String fastingEnd) {
        this.fastingEnd = fastingEnd;
    }
    @Column(name = "after_breakfast_start")
    @JsonFormat(pattern = "HH:mm:ss", timezone = "GMT+08:00")
    public String getAfterBreakfastStart() {
        return afterBreakfastStart;
    }
    public void setAfterBreakfastStart(String afterBreakfastStart) {
        this.afterBreakfastStart = afterBreakfastStart;
    }
    @Column(name = "after_breakfast_end")
    @JsonFormat(pattern = "HH:mm:ss", timezone = "GMT+08:00")
    public String getAfterBreakfastEnd() {
        return afterBreakfastEnd;
    }
    public void setAfterBreakfastEnd(String afterBreakfastEnd) {
        this.afterBreakfastEnd = afterBreakfastEnd;
    }
    @Column(name = "before_lunch_start")
    @JsonFormat(pattern = "HH:mm:ss", timezone = "GMT+08:00")
    public String getBeforeLunchStart() {
        return beforeLunchStart;
    }
    public void setBeforeLunchStart(String beforeLunchStart) {
        this.beforeLunchStart = beforeLunchStart;
    }
    @Column(name = "before_lunch_end")
    @JsonFormat(pattern = "HH:mm:ss", timezone = "GMT+08:00")
    public String getBeforeLunchEnd() {
        return beforeLunchEnd;
    }
    public void setBeforeLunchEnd(String beforeLunchEnd) {
        this.beforeLunchEnd = beforeLunchEnd;
    }
    @Column(name = "after_lunch_start")
    @JsonFormat(pattern = "HH:mm:ss", timezone = "GMT+08:00")
    public String getAfterLunchStart() {
        return afterLunchStart;
    }
    public void setAfterLunchStart(String afterLunchStart) {
        this.afterLunchStart = afterLunchStart;
    }
    @Column(name = "after_lunch_end")
    @JsonFormat(pattern = "HH:mm:ss", timezone = "GMT+08:00")
    public String getAfterLunchEnd() {
        return afterLunchEnd;
    }
    public void setAfterLunchEnd(String afterLunchEnd) {
        this.afterLunchEnd = afterLunchEnd;
    }
    @Column(name = "before_dinner_start")
    @JsonFormat(pattern = "HH:mm:ss", timezone = "GMT+08:00")
    public String getBeforeDinnerStart() {
        return beforeDinnerStart;
    }
    public void setBeforeDinnerStart(String beforeDinnerStart) {
        this.beforeDinnerStart = beforeDinnerStart;
    }
    @Column(name = "before_dinner_end")
    @JsonFormat(pattern = "HH:mm:ss", timezone = "GMT+08:00")
    public String getBeforeDinnerEnd() {
        return beforeDinnerEnd;
    }
    public void setBeforeDinnerEnd(String beforeDinnerEnd) {
        this.beforeDinnerEnd = beforeDinnerEnd;
    }
    @Column(name = "after_dinner_start")
    @JsonFormat(pattern = "HH:mm:ss", timezone = "GMT+08:00")
    public String getAfterDinnerStart() {
        return afterDinnerStart;
    }
    public void setAfterDinnerStart(String afterDinnerStart) {
        this.afterDinnerStart = afterDinnerStart;
    }
    @Column(name = "after_dinner_end")
    @JsonFormat(pattern = "HH:mm:ss", timezone = "GMT+08:00")
    public String getAfterDinnerEnd() {
        return afterDinnerEnd;
    }
    public void setAfterDinnerEnd(String afterDinnerEnd) {
        this.afterDinnerEnd = afterDinnerEnd;
    }
    @Column(name = "before_sleep_start")
    @JsonFormat(pattern = "HH:mm:ss", timezone = "GMT+08:00")
    public String getBeforeSleepStart() {
        return beforeSleepStart;
    }
    public void setBeforeSleepStart(String beforeSleepStart) {
        this.beforeSleepStart = beforeSleepStart;
    }
    @Column(name = "before_sleep_end")
    @JsonFormat(pattern = "HH:mm:ss", timezone = "GMT+08:00")
    public String getBeforeSleepEnd() {
        return beforeSleepEnd;
    }
    public void setBeforeSleepEnd(String beforeSleepEnd) {
        this.beforeSleepEnd = beforeSleepEnd;
    }
    @Column(name = "czrq")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    public Date getCzrq() {
        return czrq;
    }
    public void setCzrq(Date czrq) {
        this.czrq = czrq;
    }
    public int getDel() {
        return del;
    }
    public void setDel(int del) {
        this.del = del;
    }
}

+ 61 - 0
patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/model/Result.java

@ -0,0 +1,61 @@
package com.yihu.hos.device.model;
import java.lang.reflect.Field;
import java.util.Map;
public class Result {
    protected boolean successFlg = true;
    protected String message;
    protected Map<String, Object> objectMap;
    public boolean isSuccessFlg() {
        return successFlg;
    }
    public void setSuccessFlg(boolean successFlg) {
        this.successFlg = successFlg;
    }
    public String getMessage() {
        return message;
    }
    public void setMessage(String message) {
        this.message = message;
    }
    public Map<String, Object> getObjectMap() {
        return objectMap;
    }
    public void setObjectMap(Map<String, Object> objectMap) {
        this.objectMap = objectMap;
    }
    /**
     * 错误消息
     */
    public static Result error(String message) {
        Result re= new Result();
        re.successFlg = false;
        re.message = message;
        return re;
    }
    /**
     * 成功消息
     */
    public static Result success(String message) {
        Result re= new Result();
        re.successFlg = true;
        re.message = message;
        return re;
    }
    public static Result authError(String message) {
        Result re= new Result();
        re.successFlg = false;
        re.message = message;
        return re;
    }
}

+ 467 - 0
patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/model/SignFamily.java

@ -0,0 +1,467 @@
package com.yihu.hos.device.model;
import com.fasterxml.jackson.annotation.JsonFormat;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.util.Date;
/**
 * 家庭签约
 * @author George
 */
@Entity
@Table(name = "wlyy_sign_family",schema="wlyy",catalog="wlyy")
public class SignFamily extends IdEntity {
	public SignFamily(){}
	private static final long serialVersionUID = 364799142991631092L;
	private String code;        // 签约标识
	private String lwCode;      // 两网标识
	private Integer type;       // 签约类型:1三师签约,2网络签约
	private String patient;     // 患者标识
	private String openid;      // 微信OPENID
	private String name;        // 患者姓名
	private String idcard;      // 身份证号
	private String ssc;         // 社保卡号
	private String mobile;      // 手机号
	private String emerMobile;  // 紧急联系人手机号
	private String hospital;    // 签约医院标识
	private String hospitalName;    // 签约医院名称
	private String doctor;      // 全科医生
	private String doctorName;  // 全科医生姓名
	private String doctorHealth;    // 健康管理师
	private String doctorHealthName;    // 健康管理师姓名
	private Date begin;         // 签约开始日期
	private Date end;           // 签约结束日期
	private Integer status;     // 签约状态(-1患者已取消,-2已拒绝,-3已解约,-4已到期,0待签约,1已签约,2患者申请取消签约
	private String images;      // 签约图片附件URL,多图以逗号分隔
	private String reason;      // 解约原因
	private Date czrq;          // 操作时间
	private String teamCode;
	private Date applyDate;     //签约时间
	private Date applyUnsignDate;//解约时间
	private Date patientApplyDate;//患者发起签约时间
	private Date patientApplyUnsignDate;//患者发起解约时间
	private String signType;//1 用户自己申请  2医生手工带签  3.医生发起邀请
	private String familyCode;//签约code
	private Double expenses;//签约费用
	private String expensesStatus;//扣费状态【0未扣费 1已扣费 2已退费】
	private String signSource;// 签约来源【1 社区签约 2 移动签约】
	private String signDoctorCode;//簽約人code
	private String signDoctorName;//簽約人銘
	private String signDoctorLevel;//簽約人等级
	private String expensesType;//补贴类型(4种类型:01无补贴,02全部贴,03补个人承担部分(20),04补统筹基金(70))
	private String signYear;//签约年度
	private String medicalInsuranceNum;//医保流水号
	private String agentDoctorCode;//代理簽約人code
	private String agentDoctorName;//代理簽約人銘
	private String agentDoctorLevel;//代理簽約人等级
	private Long adminTeamId;//行政团队ID
	private Date expensesTime;//缴费时间
	public String getCode() {
		return code;
	}
	public void setCode(String code) {
		this.code = code;
	}
	public String getLwCode() {
		return lwCode;
	}
	public void setLwCode(String lwCode) {
		this.lwCode = lwCode;
	}
	public Integer getType() {
		return type;
	}
	public void setType(Integer type) {
		this.type = type;
	}
	public String getPatient() {
		return patient;
	}
	public void setPatient(String patient) {
		this.patient = patient;
	}
	public String getOpenid() {
		return openid;
	}
	public void setOpenid(String openid) {
		this.openid = openid;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getIdcard() {
		return idcard;
	}
	public void setIdcard(String idcard) {
		this.idcard = idcard;
	}
	public String getSsc() {
		return ssc;
	}
	public void setSsc(String ssc) {
		this.ssc = ssc;
	}
	public String getMobile() {
		return mobile;
	}
	public void setMobile(String mobile) {
		this.mobile = mobile;
	}
	@Column(name = "emer_mobile")
	public String getEmerMobile() {
		return emerMobile;
	}
	public void setEmerMobile(String emerMobile) {
		this.emerMobile = emerMobile;
	}
	public String getHospital() {
		return hospital;
	}
	public void setHospital(String hospital) {
		this.hospital = hospital;
	}
	@Column(name = "hospital_name")
	public String getHospitalName() {
		return hospitalName;
	}
	public void setHospitalName(String hospitalName) {
		this.hospitalName = hospitalName;
	}
	public String getDoctor() {
		return doctor;
	}
	public void setDoctor(String doctor) {
		this.doctor = doctor;
	}
	@Column(name = "doctor_name")
	public String getDoctorName() {
		return doctorName;
	}
	public void setDoctorName(String doctorName) {
		this.doctorName = doctorName;
	}
	@Column(name = "doctor_health")
	public String getDoctorHealth() {
		return doctorHealth;
	}
	public void setDoctorHealth(String doctorHealth) {
		this.doctorHealth = doctorHealth;
	}
	@Column(name = "doctor_health_name")
	public String getDoctorHealthName() {
		return doctorHealthName;
	}
	public void setDoctorHealthName(String doctorHealthName) {
		this.doctorHealthName = doctorHealthName;
	}
	@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+08:00")
	public Date getBegin() {
		return begin;
	}
	public void setBegin(Date begin) {
		this.begin = begin;
	}
	@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+08:00")
	public Date getEnd() {
		return end;
	}
	public void setEnd(Date end) {
		this.end = end;
	}
	public Integer getStatus() {
		return status;
	}
	public void setStatus(Integer status) {
		this.status = status;
	}
	public String getImages() {
		return images;
	}
	public void setImages(String images) {
		this.images = images;
	}
	public String getReason() {
		return reason;
	}
	public void setReason(String reason) {
		this.reason = reason;
	}
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
	public Date getCzrq() {
		return czrq;
	}
	public void setCzrq(Date czrq) {
		this.czrq = czrq;
	}
	@Column(name = "team_code")
	public String getTeamCode() {
		return teamCode;
	}
	public void setTeamCode(String teamCode) {
		this.teamCode = teamCode;
	}
	@Column(name = "sign_type")
	public String getSignType() {
		return signType;
	}
	public void setSignType(String signType) {
		this.signType = signType;
	}
	@Column(name = "apply_date")
	public Date getApplyDate() {
		return applyDate;
	}
	public void setApplyDate(Date applyDate) {
		this.applyDate = applyDate;
	}
	@Column(name = "patient_apply_date")
	public Date getPatientApplyDate() {
		return patientApplyDate;
	}
	public void setPatientApplyDate(Date patientApplyDate) {
		this.patientApplyDate = patientApplyDate;
	}
	@Column(name = "patient_apply_unsgin_date")
	public Date getPatientApplyUnsignDate() {
		return patientApplyUnsignDate;
	}
	public void setPatientApplyUnsignDate(Date patientApplyUnsignDate) {
		this.patientApplyUnsignDate = patientApplyUnsignDate;
	}
	@Column(name = "family_code")
	public String getFamilyCode() {
		return familyCode;
	}
	public void setFamilyCode(String familyCode) {
		this.familyCode = familyCode;
	}
	@Column(name = "expenses")
	public Double getExpenses() {
		return expenses;
	}
	public void setExpenses(Double expenses) {
		this.expenses = expenses;
	}
	@Column(name = "sign_doctor_code")
	public String getSignDoctorCode() {
		return signDoctorCode;
	}
	public void setSignDoctorCode(String signDoctorCode) {
		this.signDoctorCode = signDoctorCode;
	}
	@Column(name = "sign_doctor_name")
	public String getSignDoctorName() {
		return signDoctorName;
	}
	public void setSignDoctorName(String signDoctorName) {
		this.signDoctorName = signDoctorName;
	}
	@Column(name = "sign_doctor_level")
	public String getSignDoctorLevel() {
		return signDoctorLevel;
	}
	public void setSignDoctorLevel(String signDoctorLevel) {
		this.signDoctorLevel = signDoctorLevel;
	}
	@Column(name = "apply_unsign_date")
	public Date getApplyUnsignDate() {
		return applyUnsignDate;
	}
	public void setApplyUnsignDate(Date applyUnsignDate) {
		this.applyUnsignDate = applyUnsignDate;
	}
	@Column(name = "expenses_type")
	public String getExpensesType() {
		return expensesType;
	}
	public void setExpensesType(String expensesType) {
		this.expensesType = expensesType;
	}
	@Column(name = "sign_year")
	public String getSignYear() {
		return signYear;
	}
	public void setSignYear(String signYear) {
		this.signYear = signYear;
	}
	@Column(name = "medical_insurance_num")
	public String getMedicalInsuranceNum() {
		return medicalInsuranceNum;
	}
	public void setMedicalInsuranceNum(String medicalInsuranceNum) {
		this.medicalInsuranceNum = medicalInsuranceNum;
	}
	@Column(name = "agent_doctor_code")
	public String getAgentDoctorCode() {
		return agentDoctorCode;
	}
	public void setAgentDoctorCode(String agentDoctorCode) {
		this.agentDoctorCode = agentDoctorCode;
	}
	@Column(name = "agent_doctor_name")
	public String getAgentDoctorName() {
		return agentDoctorName;
	}
	public void setAgentDoctorName(String agentDoctorName) {
		this.agentDoctorName = agentDoctorName;
	}
	@Column(name = "agent_doctor_level")
	public String getAgentDoctorLevel() {
		return agentDoctorLevel;
	}
	public void setAgentDoctorLevel(String agentDoctorLevel) {
		this.agentDoctorLevel = agentDoctorLevel;
	}
	@Column(name = "expenses_status")
	public String getExpensesStatus() {
		return expensesStatus;
	}
	public void setExpensesStatus(String expensesStatus) {
		this.expensesStatus = expensesStatus;
	}
	@Column(name = "sign_source")
	public String getSignSource() {
		return signSource;
	}
	public void setSignSource(String signSource) {
		this.signSource = signSource;
	}
	@Column(name = "admin_team_code")
	public Long getAdminTeamId() {
		return adminTeamId;
	}
	public void setAdminTeamId(Long adminTeamId) {
		this.adminTeamId = adminTeamId;
	}
	@Override
	public String toString() {
		return "SignFamily{" +
				"code='" + code + '\'' +
				", lwCode='" + lwCode + '\'' +
				", type=" + type +
				", patient='" + patient + '\'' +
				", openid='" + openid + '\'' +
				", name='" + name + '\'' +
				", idcard='" + idcard + '\'' +
				", ssc='" + ssc + '\'' +
				", mobile='" + mobile + '\'' +
				", emerMobile='" + emerMobile + '\'' +
				", hospital='" + hospital + '\'' +
				", hospitalName='" + hospitalName + '\'' +
				", doctor='" + doctor + '\'' +
				", doctorName='" + doctorName + '\'' +
				", doctorHealth='" + doctorHealth + '\'' +
				", doctorHealthName='" + doctorHealthName + '\'' +
				", begin=" + begin +
				", end=" + end +
				", status=" + status +
				", images='" + images + '\'' +
				", reason='" + reason + '\'' +
				", czrq=" + czrq +
				", teamCode='" + teamCode + '\'' +
				", applyDate=" + applyDate +
				", signType='" + signType + '\'' +
				", familyCode='" + familyCode + '\'' +
				'}';
	}
	public Date getExpensesTime() {
		return expensesTime;
	}
	public void setExpensesTime(Date expensesTime) {
		this.expensesTime = expensesTime;
	}
}

+ 78 - 0
patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/service/ApiOpenService.java

@ -0,0 +1,78 @@
package com.yihu.hos.device.service;
import com.yihu.hos.device.common.dao.DeviceManufacturerDao;
import com.yihu.hos.device.model.DeviceManufacturer;
import com.yihu.hos.device.common.util.DateUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
/**
 * Created by hzp on 2016/9/5.
 * 签约对外开发服务
 */
@Service
public class ApiOpenService {
    @Autowired
    private DeviceManufacturerDao deviceManufacturerDao;
    /**
     * 校验请求数据
     * @return
     */
    public boolean checkRequest(String appkey,String sign,String timestamp,Map<String, String> paramMap) throws Exception
    {
        //判断appkey是否存在
        DeviceManufacturer dm = deviceManufacturerDao.findByAppkey(appkey);
        if(dm!=null) {
            if(dm.getStatus().equals("1"))
            {
                String secret = dm.getSecret();
                /********************* 校验时间戳 ***********************************/
                //timestamp必须与服务器时间相差在10分钟以内,否则调用将失败
                Long max = DateUtil.getNextMin(new Date(),10).getTime();
                Long min = DateUtil.getNextMin(new Date(),-10).getTime();
                Long time =DateUtil.toTimestamp(timestamp, DateUtil.DEFAULT_YMDHMSDATE_FORMAT).getTime();
                if(time>max || time<min)
                {
                    throw new Exception("调用时间必须与服务器时间相差在10分钟以内!");
                }
                /********************* 校验参数签名 *********************************/
                StringBuilder stringBuilder = new StringBuilder();
                // 对参数名进行字典排序  
                String[] keyArray = paramMap.keySet().toArray(new String[0]);
                Arrays.sort(keyArray);
                // 拼接有序的参数名-值串  
                stringBuilder.append(appkey);
                for (String key : keyArray) {
                    stringBuilder.append(key).append(paramMap.get(key));
                }
                String codes = stringBuilder.append(secret).toString();
                String signReal = org.apache.commons.codec.digest.DigestUtils.shaHex(codes).toUpperCase();
                //校验sign
                if (!signReal.equals(sign))
                {
                    throw new Exception("参数签名校验失败!");
                }
            }
            else{
                throw new Exception("厂家授权码和秘钥已失效!");
            }
        }
        else{
            throw new Exception("非法appkey调用!");
        }
        return true;
    }
}

+ 799 - 0
patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/service/DeviceService.java

@ -0,0 +1,799 @@
package com.yihu.hos.device.service;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.hos.device.common.configuration.HealthStandardConfig;
import com.yihu.hos.device.common.configuration.SystemConfig;
import com.yihu.hos.device.common.dao.*;
import com.yihu.hos.device.common.http.HttpClientUtil;
import com.yihu.hos.device.common.http.HttpHelper;
import com.yihu.hos.device.common.http.HttpResponse;
import com.yihu.hos.device.common.util.DateUtil;
import com.yihu.hos.device.common.util.ETLConstantData;
import com.yihu.hos.device.common.util.MessageType;
import com.yihu.hos.device.common.util.StringUtil;
import com.yihu.hos.device.model.*;
import com.yihu.hos.device.task.PushMsgTask;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.apache.commons.collections.map.HashedMap;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.math.NumberUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import java.text.DecimalFormat;
import java.util.*;
/**
 * Created by lingfeng on 2016/8/19.
 */
@Service("DeviceService")
public class DeviceService {
    public static final String BEAN_ID = "DeviceService";
    @Autowired
    DeviceInfoDao deviceInfoDao;
    @Autowired
    private PatientDeviceDao patientDeviceDao;
    @Autowired
    private DeviceDetailDao deviceDetailDao;
    @Autowired
    private PatientHealthIndexDao patientHealthIndexDao;
    /*@Autowired
    private BloodSuggerConfiguration bloodSuggerConfiguration;*/
    @Autowired
    private PatientDao patientDao;
    @Autowired
    private PatientHealthStandardDao patientHealthStandardDao;
    @Autowired
    private SignFamilyDao signFamilyDao;
    @Autowired
    private MessageDao messageDao;
    @Autowired
    private HealthStandardConfig healthStandardConfig;
    @Autowired
    private HttpHelper httpHelper;
    @Autowired
    private SystemConfig systemConfig;
    @Autowired
    private JdbcTemplate jdbcTemplate;
    @Autowired
    private  PatientBloodSuggerDao patientBloodSuggerDao;
    @Autowired
    private PatientHealthTimeDao patientHealthTimeDao;
    private ObjectMapper objectMapper = new ObjectMapper();
    private Integer aStart;
    private String getStringFromBuf(byte[] aBuf, Integer aLen) {
        byte[] byteTemp = new byte[aLen];
        System.arraycopy(aBuf, aStart, byteTemp, 0, aLen);
        aStart += aLen;
        return new String(byteTemp);
    }
    //增加居民自定义血糖时间段
    private String formatBloodSuger(String user,String deviceSN,String dateTime) {
        /*String[] fasting = bloodSuggerConfiguration.getFasting().split("-");
        String[] afterBreakfast = bloodSuggerConfiguration.getAfterBreakfast().split("-");
        String[] beforeLunch = bloodSuggerConfiguration.getBeforeLunch().split("-");
        String[] afterLunch = bloodSuggerConfiguration.getAfterLunch().split("-");
        String[] beforeDinner = bloodSuggerConfiguration.getBeforeDinner().split("-");
        String[] afterDinner = bloodSuggerConfiguration.getAfterDinner().split("-");
        String[] beforeSleep = bloodSuggerConfiguration.getBeforeSleep().split("-");*/
        PatientBloodSugger bloodSugger = null;
        PatientHealthTime patientHealthTime = null;
        if (!StringUtils.isEmpty(user) && !StringUtils.isEmpty(deviceSN)) {
            patientHealthTime = patientHealthTimeDao.findByUserAndSN(user, deviceSN);
        }
        String fastingStart = null;
        String fastingEnd = null;
        String afterBreakFastStart = null;
        String afterBreakFastEnd = null;
        String beforeLunchStart = null;
        String beforeLunchEnd = null;
        String afterLunchStart = null;
        String afterLunchEnd = null;
        String beforeDinnerStart = null;
        String beforeDinnerEnd = null;
        String afterDinnerStart = null;
        String afterDinnerEnd = null;
        String beforeSleepStart = null;
        String beforeSleepEnd = null;
        if (patientHealthTime == null) {
            bloodSugger = patientBloodSuggerDao.findRecent();
            fastingStart = bloodSugger.getFastingStart();
            fastingEnd = bloodSugger.getFastingEnd();
            afterBreakFastStart = bloodSugger.getAfterBreakfastStart();
            afterBreakFastEnd = bloodSugger.getAfterBreakfastEnd();
            beforeLunchStart = bloodSugger.getBeforeLunchStart();
            beforeLunchEnd = bloodSugger.getBeforeLunchEnd();
            afterLunchStart = bloodSugger.getAfterLunchStart();
            afterLunchEnd = bloodSugger.getAfterLunchEnd();
            beforeDinnerStart = bloodSugger.getBeforeDinnerStart();
            beforeDinnerEnd = bloodSugger.getBeforeDinnerEnd();
            afterDinnerStart = bloodSugger.getAfterDinnerStart();
            afterDinnerEnd = bloodSugger.getAfterDinnerEnd();
            beforeSleepStart = bloodSugger.getBeforeSleepStart();
            beforeSleepEnd = bloodSugger.getBeforeSleepEnd();
        } else {
            fastingStart = patientHealthTime.getFastingStart();
            fastingEnd = patientHealthTime.getFastingEnd();
            afterBreakFastStart = patientHealthTime.getAfterBreakfastStart();
            afterBreakFastEnd = patientHealthTime.getAfterBreakfastEnd();
            beforeLunchStart = patientHealthTime.getBeforeLunchStart();
            beforeLunchEnd = patientHealthTime.getBeforeLunchEnd();
            afterLunchStart = patientHealthTime.getAfterLunchStart();
            afterLunchEnd = patientHealthTime.getAfterLunchEnd();
            beforeDinnerStart = patientHealthTime.getBeforeDinnerStart();
            beforeDinnerEnd = patientHealthTime.getBeforeDinnerEnd();
            afterDinnerStart = patientHealthTime.getAfterDinnerStart();
            afterDinnerEnd = patientHealthTime.getAfterDinnerEnd();
            beforeSleepStart = patientHealthTime.getBeforeSleepStart();
            beforeSleepEnd = patientHealthTime.getBeforeSleepEnd();
        }
        if (isInArea(dateTime, fastingStart,fastingEnd)) {
            return "1";//"空腹血糖"
        }
        if (isInArea(dateTime, afterBreakFastStart,afterBreakFastEnd)) {
            return "2";//"早餐后血糖"
        }
        if (isInArea(dateTime, beforeLunchStart,beforeLunchEnd)) {
            return "3";//"午餐前血糖"
        }
        if (isInArea(dateTime, afterLunchStart,afterLunchEnd)) {
            return "4";//"午餐后血糖"
        }
        if (isInArea(dateTime, beforeDinnerStart,beforeDinnerEnd)) {
            return "5";//"晚餐前血糖"
        }
        if (isInArea(dateTime, afterDinnerStart,afterDinnerEnd)) {
            return "6";//"晚餐后血糖"
        }
        if (isInArea(dateTime, beforeSleepStart,beforeSleepEnd)) {
            return "7";//"睡前血糖"
        }
        return "1";//"空腹血糖"
    }
 /*   private Boolean isInArea(String time, String[] timeArea) {
        String date = DateUtil.getDateFromDateTime(time);
        Long beginTime = DateUtil.compareDateTime(DateUtil.toTimestamp(time), DateUtil.toTimestamp(date + " " + timeArea[0] + ":00"));
        Long endTime = DateUtil.compareDateTime(DateUtil.toTimestamp(time), DateUtil.toTimestamp(date + " " + timeArea[1] + ":00"));
        if (beginTime > 0 && endTime < 0) {
            return true;
        } else {
            return false;
        }
    }*/
// 判断时间是否在对应时间段
    private Boolean isInArea(String time,String begin,String end) {
        String date = DateUtil.getDateFromDateTime(time);
        Long beginTime = DateUtil.compareDateTime(DateUtil.toTimestamp(time), DateUtil.toTimestamp(date + " " + begin ));
        Long endTime = DateUtil.compareDateTime(DateUtil.toTimestamp(time), DateUtil.toTimestamp(date + " " + end ));
        if (beginTime > 0 && endTime < 0) {
            return true;
        } else {
            return false;
        }
    }
    /**
     * 判断当前指标是否正常
     */
    private boolean checkHealthIndex(Double current, Double max, Double min) {
        if (current > max || current < min || current < 0) {
            return false;
        }
        return true;
    }
    /**************************************************************************************************************/
    /**
     * 设备数据查询接口
     *
     * @param deviceCode
     * @return
     * @throws Exception
     */
    public Result getData(String deviceCode) throws Exception {
        Result result = Result.success("Device data acquisition success");
        Map<String, Object> resultMap = new HashMap<>();
        if (StringUtil.isEmpty(deviceCode)) {
            List<DeviceDetail> deviceDetailList = new ArrayList<>();
            Iterable<DeviceDetail> deviceIterable = deviceDetailDao.findAll();
            for (DeviceDetail deviceDetail : deviceIterable) {
                deviceDetailList.add(deviceDetail);
            }
            resultMap.put("deviceDetailList", deviceDetailList);
            result.setObjectMap(resultMap);
        } else {
            List<DeviceDetail> deviceDetailList = new ArrayList<>();
            Iterable<DeviceDetail> deviceIterable = deviceDetailDao.findByDeviceCode(deviceCode);
            if (deviceIterable.iterator().hasNext()) {
                deviceDetailList.add(deviceIterable.iterator().next());
            }
            resultMap.put("deviceDetailList", deviceDetailList);
            result.setObjectMap(resultMap);
        }
        return result;
    }
    /**
     * 设备数据接收接口
     *
     * @param deviceData
     * @param deviceType
     * @return
     * @throws Exception
     */
    public Result pushData(String deviceData, String deviceType) throws Exception {
        DeviceInfo deviceInfo = new DeviceInfo();
        deviceInfo.setDeviceData(deviceData);
        deviceInfo.setDeviceType(deviceType);
        deviceInfo.setPushDate(DateUtil.getSysDateTime());
        deviceInfo.setStatus("1");
        deviceInfoDao.save(deviceInfo);
        Map<String, String> paramMap = new HashMap<>();
        //血压计
        if (deviceType.equals("0")) {
            Map<String, String> dataMap = new HashMap<>();
            String[] dataArr = deviceData.split(",");
            String deviceCode = StringUtil.replaceStrAll(dataArr[0], "imei=", "");
            String user = StringUtil.replaceStrAll(dataArr[4], "user=", "");
            String sys = StringUtil.replaceStrAll(dataArr[5], "sys=", "");
            String dia = StringUtil.replaceStrAll(dataArr[6], "dia=", "");
            String pul = StringUtil.replaceStrAll(dataArr[7], "pul=", "");
            String ano = StringUtil.replaceStrAll(dataArr[8], "ano=", "");
            String time = StringUtil.replaceStrAll(dataArr[9], "time=", "");
            dataMap.put("user", user);
            dataMap.put("sys", sys);
            dataMap.put("dia", dia);
            dataMap.put("pul", pul);
            dataMap.put("ano", ano);
            time = StringUtil.replaceStrAll(time, "\"", "");
            time = StringUtil.replaceStrAll(time, "/", " ");
            dataMap.put("time", time);
            paramMap.put("type", "2");
            paramMap.put("deviceSn", deviceCode);
            paramMap.put("data", JSONObject.fromObject(dataMap).toString());
        }
        //血糖仪
        if (deviceType.equals("1")) {
            aStart = 0;
            Map<String, String> dataMap = new HashMap<>();
            byte[] src = deviceData.getBytes();
            String str1 = getStringFromBuf(src, 2);//5A
            String str2 = getStringFromBuf(src, 2);//23
            String str3 = getStringFromBuf(src, 1);//0
            String str4 = getStringFromBuf(src, 2);//01
            String str5 = getStringFromBuf(src, 2);//09
            String str6 = getStringFromBuf(src, 2);//02
            String str7 = getStringFromBuf(src, 9);//B123456 	设备编号
            String str8 = getStringFromBuf(src, 3);//000
            String str9 = getStringFromBuf(src, 3);//000
            String str10 = getStringFromBuf(src, 3);//106   血糖数值
            String str11 = getStringFromBuf(src, 2);//12
            String str12 = getStringFromBuf(src, 2);//11
            String str13 = getStringFromBuf(src, 2);//10
            String str14 = getStringFromBuf(src, 2);//16
            String str15 = getStringFromBuf(src, 2);//25
            String str16 = getStringFromBuf(src, 4);//07BE
            paramMap.put("type", "1");
            paramMap.put("deviceSn", str7);
            DecimalFormat df = new DecimalFormat("0.0");
            dataMap.put("gi", StringUtil.toString(df.format((float) Integer.parseInt(str10) / 18)));
            String time = "20" + str11 + "-" + str12 + "-" + str13 + " " + str14 + ":" + str15 + ":00";
            dataMap.put("time", time);
            paramMap.put("data", JSONObject.fromObject(dataMap).toString());
        }
        try {
            PatientHealthIndex result = savePatientDeviceData(paramMap.get("data"), paramMap.get("type"), paramMap.get("deviceSn"));
            //血糖、血压数据需校验,如果超标,需要发送消息给医生
            if (paramMap.get("type").equals("1") || paramMap.get("type").equals("2")) {
                verifyHealthIndex(result);
            }
            //指标数据上传基卫
            uploadHealthIndex(result);
            System.out.println(result);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return Result.success("Device data incoming success");
    }
    //测试
    public String test() {
        String url = "http://58.22.123.195:1080/DeviceGateway/device/threeNod";
        JSONObject params = new JSONObject();
        JSONObject head = new JSONObject();
        head.put("signature", "f7a954ad22d5fe96c2b7cbbd313cb6c7");
        head.put("timestamp", "1484622202825");
        head.put("randomnumber", "14");
        JSONObject msgdata = new JSONObject();
        msgdata.put("devicesn", "test01");
        msgdata.put("result", "11");
        msgdata.put("testtime", "2017-01-23 14:14:14");
        params.put("head", head.toString());
        params.put("reservedcode", "01");
        params.put("msgdata", msgdata.toString());
        HttpResponse response = httpHelper.post(url, params);
        return response.getBody();
    }
    /**
     * 福州设备数据上传接口(标准协议)
     *
     * @param dataJson 体征数据
     * @return
     */
    public Result uploadDevicesData(String dataJson) {
        try {
            ObjectMapper objectMapper = new ObjectMapper();
            Map<String, Object> map = objectMapper.readValue(dataJson, Map.class);
            String deviceSn = map.get("deviceSn").toString();//设备唯一码
            Integer deviceType = Integer.parseInt(map.get("deviceType").toString());//设备类型1:血压 2:血糖
            String data = map.get("data").toString();//体征值(血糖:data=血糖值   血压:data=收缩压,舒张压,脉搏)
            String uploadTime = map.get("uploadTime").toString();//体征上传时间yyyy-MM-dd HH:mm:ss
            String manufacturerCode = map.get("manufacturerCode").toString();//厂商代码
            String manufacturerName = map.get("manufacturerName").toString();//厂商名称
            String unit = map.get("unit").toString();//单位mmol/L,mmHg
            String sendTime = map.get("sendTime").toString();//发送时间yyyy-MM-dd HH:mm:ss
            String userType = map.get("button").toString();//按键号 即 userType
//            DeviceDetail deviceDetail = deviceDetailDao.findByDeviceCodeAndManufacturerCode(deviceSn,manufacturerCode);
//            if(deviceDetail == null){
//                return Result.error("设备唯一码和厂商代码不一致");
//            }
            JSONObject json = new JSONObject();
            json.put("deviceSn", deviceSn);
            json.put("deviceType", deviceType);
            json.put("data", data);
            json.put("uploadTime", uploadTime);
            json.put("manufacturerCode", manufacturerCode);
            json.put("manufacturerName", manufacturerName);
            json.put("unit", unit);
            json.put("sendTime", sendTime);
            json.put("userType", userType);
            String type = deviceType + "";
            if (1 == deviceType) {
                type = "2";
            } else if (2 == deviceType) {
                type = "1";
                userType = "-1";
            }
            PatientHealthIndex result = savePatientDeviceData(deviceSn, type, data, uploadTime, manufacturerCode, manufacturerName, unit, sendTime, userType, json);
            if (result == null) {
                throw new Exception("This device is not relate patient!");
            } else {
                //血糖、血压数据需校验,如果超标,需要发送消息给医生
                if (1 == deviceType || 2 == deviceType) {
                    verifyHealthIndex(result);
                    //发送华三demo推送
//                    messagePush(result);
                }
                //指标数据上传基卫
                uploadHealthIndex(result);
                System.out.println(result);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return Result.success("Device data incoming success");
    }
    /**
     * 保存设备数据
     */
    public PatientHealthIndex savePatientDeviceData(String deviceSn, String type, String data, String uploadTime, String manufacturerCode
            , String manufacturerName, String unit, String sendTime, String userType, JSONObject json) throws Exception {
        Date currentTime = DateUtil.getSysDateTime();
        Date time = currentTime;
        if (!StringUtil.isEmpty(uploadTime)) {
            //设备重新开机启动会有默认时间,相隔很远。这个是福州过来的逻辑。
            time = DateUtil.toTimestamp(uploadTime, DateUtil.DEFAULT_YMDHMSDATE_FORMAT);
            Date monthTime = DateUtil.addMonth(-12, currentTime);
            if (DateUtil.compareDate(time, monthTime) < 0) {
                time = currentTime;
            }
        }
        if (StringUtil.isStrEmpty(userType)) {
            userType = "-1";
        }
        //根据设备获取患者
        PatientDevice device = patientDeviceDao.findByDeviceSnAndCategoryCodeAndUserType(deviceSn, type, userType);
        if (device != null) {
            /************设备数据重复推送处理 start**********************/
            String value1 = data;
            if("2".equals(type)){
                String[] value = data.split(",");
                if (value.length > 0) {
                    value1 = value[0];     //收缩压
                }
            }
            List<PatientHealthIndex> list = patientHealthIndexDao.findByType(device.getUser(),deviceSn,value1,Integer.parseInt(type),time);
            if(list!=null&&list.size()>0){
                DeviceInfo deviceInfo = new DeviceInfo();
                deviceInfo.setDeviceData(json.toString());
                deviceInfo.setDeviceType(type);
                deviceInfo.setPushDate(DateUtil.getSysDateTime());
                deviceInfo.setStatus("1");
                deviceInfoDao.save(deviceInfo);
                return null;
            }
            /************设备数据重复推送处理 end**********************/
            PatientHealthIndex obj = new PatientHealthIndex();
            obj.setCzrq(DateUtil.getSysDateTime());
            obj.setDeviceSn(deviceSn);
            obj.setDel("1");
            obj.setRecordDate(time);    //记录时间
            obj.setSortDate(time);      //排序时间
            String user = device.getUser();
            obj.setUser(user);
            obj.setIdcard(device.getUserIdcard());
            //  1血糖 2血压 3体重 4腰围
            switch (type) {
                case "1":
                    obj.setType(1);
                    obj.setValue1(data);     //血糖值
                    obj.setValue2(formatBloodSuger(user,deviceSn,DateUtil.toString(time, DateUtil.DEFAULT_YMDHMSDATE_FORMAT)));
                    break;
                case "2":
                    obj.setType(2);
                    String[] value = data.split(",");
                    if (value.length > 0) {
                        obj.setValue1(value[0]);     //收缩压
                    }
                    if (value.length > 1) {
                        obj.setValue2(value[1]);     //舒张压
                    }
                    if (value.length > 2) {
                        obj.setValue3(value[2]);     //脉搏
                    }
                    if (value.length > 3) {
                        obj.setValue4(value[3]);     //有无心率不齐
                    }
                    break;
                case "3":
                    obj.setType(3);
                    obj.setValue1(data); //体重
                    break;
                case "4":
                    obj.setType(4);
                    obj.setValue1(data);  //腰围
                    break;
                default:
                    throw new Exception("Can not support the metric!");
            }
            patientHealthIndexDao.save(obj);
            return obj;
        } else {
            DeviceInfo deviceInfo = new DeviceInfo();
            deviceInfo.setDeviceData(json.toString());
            deviceInfo.setDeviceType(type);
            deviceInfo.setPushDate(DateUtil.getSysDateTime());
            deviceInfo.setStatus("1");
            deviceInfoDao.save(deviceInfo);
        }
        return null;
    }
    /**
     * 保存设备数据
     */
    public PatientHealthIndex savePatientDeviceData(String data, String type, String deviceSn) throws Exception {
        PatientHealthIndex obj = new PatientHealthIndex();
        Map<String, String> map = (Map<String, String>) objectMapper.readValue(data, Map.class);
        obj.setCzrq(DateUtil.getSysDateTime());
        obj.setDeviceSn(deviceSn);
        obj.setDel("1");
        Date currentTime = DateUtil.getSysDateTime();
        Date time = currentTime;
        if (!StringUtil.isEmpty(map.get("time"))) {
            time = DateUtil.toTimestamp(map.get("time"), DateUtil.DEFAULT_YMDHMSDATE_FORMAT);
            Date monthTime = DateUtil.addMonth(-1, currentTime);
            if (DateUtil.compareDate(time, monthTime) < 0) {
                time = currentTime;
            }
        }
        obj.setRecordDate(time);    //记录时间
        obj.setSortDate(time);      //排序时间
        String userType = "-1";
        if (map.containsKey("user")) { //存在身份标识 ,多用户
            userType = map.get("user");
        }
        //根据设备获取患者
        PatientDevice device = patientDeviceDao.findByDeviceSnAndCategoryCodeAndUserType(deviceSn, type, userType);
        if (device != null) {
            String user = device.getUser();
//            obj.setUser(device.getUser());
            obj.setUser(user);
            obj.setIdcard(device.getUserIdcard());
            // 1血糖 2血压 3体重 4腰围
            switch (type) {
                case "1":
                    obj.setType(1);
                    obj.setValue1(map.get("gi"));     //血糖值
//                    obj.setValue2(formatBloodSuger(DateUtil.toString(time, DateUtil.DEFAULT_YMDHMSDATE_FORMAT)));
                    obj.setValue2(formatBloodSuger(user,deviceSn,DateUtil.toString(time, DateUtil.DEFAULT_YMDHMSDATE_FORMAT)));
                    break;
                case "2":
                    obj.setType(2);
                    obj.setValue1(map.get("sys"));     //收缩压
                    obj.setValue2(map.get("dia"));     //舒张压
                    obj.setValue3(map.get("pul"));     //脉搏
                    obj.setValue4(map.get("ano"));     //有无心率不齐
                    break;
                case "3":
                    obj.setType(3);
                    obj.setValue1(map.get("weight")); //体重
                    break;
                case "4":
                    obj.setType(4);
                    obj.setValue1(map.get("waistline"));  //腰围
                    break;
                default:
                    throw new Exception("Can not support the metric!");
            }
        } else {
            throw new Exception("This device is not relate patient!");
        }
        patientHealthIndexDao.save(obj);
        return obj;
    }
    /**
     * 校验指标是否超标,发送消息
     */
    private void verifyHealthIndex(PatientHealthIndex data) {
        //指标信息
        String patientCode = data.getUser();
        //患者信息
        Patient patient = patientDao.findByCode(patientCode);
        int type = data.getType();
        String msgContent = "";
        //血糖校验
        if (type == 1) {
            // 血糖记录,查询患者血糖预警值
            PatientHealthStandard standard = patientHealthStandardDao.findByPatientType(patientCode, 1);
            Double maxValueBefore = healthStandardConfig.getXt_max_before();
            Double minValueBefore = healthStandardConfig.getXt_min_before();
            Double maxValueAfter = healthStandardConfig.getXt_max_after();
            Double minValueAfter = healthStandardConfig.getXt_min_after();
            int index = Integer.valueOf(data.getValue2());
            String value1 = data.getValue1();
            // 餐后
            if (index % 2 == 0) {
                if (!checkHealthIndex(NumberUtils.toDouble(value1), maxValueBefore, minValueBefore)) {
                    msgContent += patient.getName() + "血糖异常(" + value1 + "mmol/L),请处理";
                }
            } else { //餐前
                if (!checkHealthIndex(NumberUtils.toDouble(value1), maxValueAfter, minValueAfter)) {
                    msgContent += patient.getName() + "血糖异常(" + value1 + "mmol/L),请处理";
                }
            }
        }
        //血压校验
        else if (type == 2) {
            String value1 = data.getValue1();
            String value2 = data.getValue2();
            // 血压记录,查询患者血压预警值
            PatientHealthStandard standard = patientHealthStandardDao.findByPatientType(patientCode, 2);
            Double maxValueSSY = healthStandardConfig.getSsy_max();
            Double minValueSSY = healthStandardConfig.getSsy_min();
            Double maxValueSZY = healthStandardConfig.getSzy_max();
            Double minValueSZY = healthStandardConfig.getSzy_min();
            if (standard != null) {
                if (standard.getMaxValue1() > 0) {
                    maxValueSSY = standard.getMaxValue1();
                }
                if (standard.getMinValue1() > 0) {
                    minValueSSY = standard.getMinValue1();
                }
                if (standard.getMaxValue2() > 0) {
                    maxValueSZY = standard.getMaxValue2();
                }
                if (standard.getMinValue2() > 0) {
                    minValueSZY = standard.getMinValue2();
                }
            }
            // 收缩压/舒张压校验
            if (!checkHealthIndex(NumberUtils.toDouble(value1), maxValueSSY, minValueSSY) || !checkHealthIndex(NumberUtils.toDouble(value2), maxValueSZY, minValueSZY)) {
                msgContent = patient.getName() + "血压异常(舒张压 " + value2 + "mmHg、收缩压 " + value1 + "mmHg),请处理";
            }
        }
        //超标则发送消息
        if (msgContent != null && msgContent.length() > 0) {
            sendMessage(msgContent, patient, data);
        }
    }
    /**
     * 推送信息
     */
    private void sendMessage(String content, Patient patient, PatientHealthIndex model) {
        String patientCode = patient.getCode();
        // 消息接收者
        List<String> receivers = new ArrayList<String>();
        // 查询病人家庭签约的健康管理师
        SignFamily signFamily = signFamilyDao.findByjiatingPatientYes(patientCode);
        String healthDoctorFamily = "";
        if (signFamily != null) {
            healthDoctorFamily = signFamily.getDoctorHealth();
            if (StringUtils.isNotEmpty(healthDoctorFamily)) {
                // 添加到消息接收人列表
                receivers.add(healthDoctorFamily);
            } else {
                // 添加到消息接收人列表
                receivers.add(signFamily.getDoctor());
            }
        }
        // 查询病人三师签约中的健康管理师
        SignFamily signFamilySS = signFamilyDao.findBySanshiPatientYes(patientCode);
        if (signFamilySS != null) {
            String healthDoctorTeam = signFamilySS.getDoctorHealth();
            // 判断是否是否是同一个健康管理师
            if (StringUtils.isNotEmpty(healthDoctorTeam) && !StringUtils.equals(healthDoctorFamily, healthDoctorTeam)) {
                // 添加到消息接收人列表
                receivers.add(healthDoctorTeam);
            }
        }
        List<Message> messages = new ArrayList<Message>();
        JSONArray array = new JSONArray();
        for (String receiver : receivers) {
            if (StringUtils.isEmpty(receiver)) {
                continue;
            }
            // 保存异常消息
            Message message = new Message();
            message.setCode(UUID.randomUUID().toString().replaceAll("-", ""));
            message.setCzrq(new Date());
            message.setCreateTime(new Date());
            message.setRead(1);
            message.setOver("1");
            message.setReceiver(receiver);
            message.setSender(patientCode);
            message.setSex(patient.getSex());
            message.setSenderName(patient.getName());
            message.setSenderPhoto(patient.getPhoto());
            message.setTitle("预警值信息");
            message.setContent(content);
            message.setType(2);
            message.setValue1(Double.valueOf(model.getValue1()));
            message.setValue2(Double.valueOf(model.getValue2()));
            message.setTzCode(String.valueOf(model.getId()));//消息关联的体征id
            message.setTzType(String.valueOf(model.getType()));//体征类别 (1血糖,2血压,3体重,4腰围)
            messages.add(message);
            // 异常通知
            JSONObject json = new JSONObject();
            json.put("receiver", receiver);
            json.put("type", MessageType.MESSAGE_TYPE_DOCTOR_HEALTH_INDEX.D_HI_01.name());
            json.put("title", MessageType.MESSAGE_TYPE_DOCTOR_HEALTH_INDEX.体征指标.name());
            json.put("msg", content);
            json.put("data", "");
            array.add(json);
        }
        // 批量保存消息
        messageDao.save(messages);
        // 推送消息给医生
        PushMsgTask.getInstance().put(array);
    }
    /**
     * 华三demo数据推送
     */
    private void messagePush(PatientHealthIndex data) {
        try {
            //1、判断是否是华三demo用户
            String deviceSn1 = "2AG993R1719";//血糖:2AG993R1719,血压:867967024387005
            String deviceSn2 = "867967024387005";//血糖:2AG993R1719,血压:867967024387005
            if (deviceSn1.equals(data.getDeviceSn()) || deviceSn2.equals(data.getDeviceSn())) {
                String msg1 = "请继续保持良好的饮食习惯,并按医生要求服药。";
                String msg2 = "请注意饮食或按医生要求服药。必要时请咨询您的家庭医生,建议继续密切监测血糖。";
                String msg3 = "建议立即进食补充糖分。必要时请咨询您的家庭医生,建议继续密切监测血糖。";
                org.json.JSONObject json = new org.json.JSONObject();
                json.put("type", data.getType());//1血糖,2血压
                json.put("time", data.getRecordDate());
                if (1 == data.getType()) {
                    //1血糖
                    int index = Integer.valueOf(data.getValue2());
                    String value1 = data.getValue1();
                    int level = 0;
                    // 餐后
                    if (index % 2 == 0) {
                        level = ETLConstantData.xueTangAfter(Double.parseDouble(value1));
                    } else { //餐前
                        level = ETLConstantData.xueTangBefore(Double.parseDouble(value1));
                    }
                    if (level == 0) {
                        json.put("msg", msg1);
                    } else if (level == 1) {
                        json.put("msg", msg2);
                    } else {
                        json.put("msg", msg3);
                    }
                    json.put("value", value1);
                    json.put("level", level);//1偏高,0正常,-1偏低
                } else {
                    //2血压
                    json.put("ssy", data.getValue1());//收缩压
                    json.put("szy", data.getValue2());//舒张压
                    json.put("heartRate", data.getValue3());//心率
                    int ssyLevel = ETLConstantData.ssy(Double.parseDouble(data.getValue1()));
                    int szyLevel = ETLConstantData.szy(Double.parseDouble(data.getValue2()));
                    int heartRateLevel = 0;
                    if (!StringUtils.isEmpty(data.getValue3())) {
                        heartRateLevel = ETLConstantData.heartRate(Double.parseDouble(data.getValue3()));
                    }
                    json.put("ssyLevel", ssyLevel);
                    json.put("szyLevel", szyLevel);
                    json.put("heartRateLevel", heartRateLevel);
                }
                String url = systemConfig.getSocketServer() + "/api/v2/demo";
                org.json.JSONObject params = new org.json.JSONObject();
                params.put("userId", "915d01c1-5b1d-11e6-8344-fa163111ee56");//用户id
                params.put("clientType", "demo");//socket类型,与前端一致
                params.put("data", json.toString());
                System.out.println(params.toString());
                String response = HttpClientUtil.postBody(url, params);
                System.out.println(response);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    /**
     * 指标数据上传基卫
     */
    private void uploadHealthIndex(PatientHealthIndex data) {
        try {
            String url = systemConfig.getJwServer() + "/third/archives/uploadHealthIndex";
            Map<String, Object> params = new HashedMap();
            params.put("id", data.getId());
            HttpResponse response = httpHelper.post(url, params);
            if (response != null && response.getStatusCode() == 200) {
                JSONObject json = JSONObject.fromObject(response.getBody());
                if (!"200".equals(json.optString("status"))) {
                    throw new Exception(json.optString("msg"));
                }
            } else {
                throw new Exception("接口调用错误!" + response.getBody());
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
}

+ 155 - 0
patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/task/PushMsgTask.java

@ -0,0 +1,155 @@
package com.yihu.hos.device.task;
import com.yihu.hos.device.common.configuration.SystemConfig;
import com.yihu.hos.device.common.util.ImUtill;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.concurrent.LinkedBlockingQueue;
public class PushMsgTask {
	public static String url="";
	private static Logger logger = LoggerFactory.getLogger(PushMsgTask.class);
	// 最大容量为50的数组堵塞队列
	private static LinkedBlockingQueue<JSONObject> queue = new LinkedBlockingQueue<JSONObject>();
	private static PushMsgTask instance;
	private static Object lock = new Object();
	@Autowired
	private SystemConfig systemConfig;
	public static PushMsgTask getInstance() {
		synchronized (lock) {
			if (instance == null) {
				instance = new PushMsgTask();
				instance.run();
			}
		}
		return instance;
	}
	/**
	 * 添加一条推送消息
	 * @param receiver 接收人
	 * @param type 消息类型
	 * @param title 消息标题
	 * @param msg 消息内容
	 * @param data 消息数据
	 */
	public void put(String receiver, String type, String title, String msg, String data) {
		try {
			JSONObject json = new JSONObject();
			json.put("receiver", receiver);
			json.put("type", type);
			json.put("title", title);
			json.put("msg", msg);
			json.put("data", data);
			queue.put(json);
		} catch (Exception e) {
			logger.error("添加到消息队列失败!", e);
			e.printStackTrace();
		}
	}
	public void put(JSONArray array) {
		if (array == null || array.size() == 0) {
			return;
		}
		for (int i = 0; i < array.size(); i++) {
			JSONObject json = array.getJSONObject(i);
			if (json == null) {
				continue;
			}
			try {
				queue.put(json);
			} catch (Exception e) {
				logger.error("批量添加到消息队列失败!", e);
			}
		}
	}
	private void run() {
		new Thread(new ConsumerTask()).start();
	}
	// 消费者
	class ConsumerTask implements Runnable {
		@Override
		public void run() {
			try {
				while (true) {
					// 如果queue为空,则当前线程会堵塞,直到有新数据加入
					JSONObject json = queue.take();
					// 推送平台消息
					String receiver = json.has("receiver") ? json.getString("receiver") : "";
					String type = json.has("type") ? json.getString("type") : "";
					String title = json.has("title") ? json.getString("title") : "";
					String msg = json.has("msg") ? json.getString("msg") : "";
					String data = json.has("data") ? json.getString("data") : "";
					boolean res = pushMessage(receiver, type, title, msg, data);
					if (res) {
						logger.info("消息推送成功!");
					} else {
						logger.error("消息推送失败!");
					}
				}
			} catch (Exception ex) {
				ex.printStackTrace();
			}
		}
	}
	/**
	 * 消息推送
	 *
	 * @param receiver 消息接收人
	 * @param msgType 消息类型
	 * @param title 消息标题
	 * @param msg 消息内容
	 * @param data 消息数据
	 */
	public static boolean pushMessage(String receiver, String msgType, String title, String msg, String data) {
		try {
//			String url = "http://127.0.0.1:3000/api/v1/chats/sm";
//			HttpHelper httpHelper=new HttpHelper();
//			Map<String,Object> params =new HashMap<>();
//			params.put("to",receiver);
//			params.put("content",msg);
//			params.put("contentType",msgType);
//			params.put("title",title);
//			params.put("summary",data);
//			HttpResponse response = httpHelper.post(url, params);
//			if (response != null && response.getStatusCode() == 200) {
//				JSONObject json = JSONObject.fromObject(response.getBody());
//				if (!"200".equals(json.optString("status"))) {
//					throw new Exception(json.optString("msg"));
//				}
//			} else {
//				throw new Exception("接口调用错误!"+response.getBody());
//			}
			String url = "http://127.0.0.1:3000/";
			org.json.JSONObject participants = new org.json.JSONObject();
			participants.put("system",0);
			participants.put(receiver,0);
			org.json.JSONObject sessionObj  = ImUtill.createSession(url,participants,"0","系统消息","");
			if(sessionObj.getInt("status")==-1){
				throw  new RuntimeException(sessionObj.getString("message"));
			}
			org.json.JSONObject session = sessionObj.getJSONObject("data");
			ImUtill.sendImMsg(url,"system","系统",session.getString("id"),"1", msg,msgType);
			return true;
		} catch (Exception e) {
			logger.error("push message error:", e);
		}
		return false;
	}
}

+ 111 - 0
patient-co-service/wlyy_device/src/main/resources/application.yml

@ -0,0 +1,111 @@
server:
  port: 9111
spring:
  application:
    name: hos-device
  jpa:
      database: MYSQL
      show-sql: true
      hibernate:
        ddl-auto: update
        naming-strategy: org.hibernate.cfg.ImprovedNamingStrategy
      properties:
        hibernate:
          dialect: org.hibernate.dialect.MySQL5Dialect
---
spring:
  profiles: dev
  datasource:
    url: jdbc:mysql://172.19.103.77:3306/device?useUnicode=true&characterEncoding=utf-8&autoReconnect=true
    username: root
    password: 123456
    driverClassName: com.mysql.jdbc.Driver
    maxTotal: 500
    maxIdle: 30
#    血糖值默认时间段存到数据库 wlyy_patient_blood_sugger表
#bloodSugger:
#  fasting: 00:00-07:59
#  afterBreakfast: 08:00-09:59
#  beforeLunch: 10:00-11:59
#  afterLunch: 12:00-13:59
#  beforeDinner: 14:00-17:59
#  afterDinner: 18:00-19:59
#  beforeSleep: 20:00-23:59
healthStandard:
  xt_min_before: 4
  xt_max_before: 7
  xt_min_after: 4
  xt_max_after: 11.1
  szy_min: 60
  szy_max: 90
  ssy_min: 90
  ssy_max: 140
systemConfig:
  msg_push_server: http://127.0.0.1:3000/system/sendmsg.im
  jw_server: http://172.19.103.87:8011/wlyy_service
  socket_server: http://192.168.131.102:3008
# Specify the DBMS
---
spring:
  profiles: test
  datasource:
    url: jdbc:mysql://172.19.103.85:3306/device?useUnicode=true&characterEncoding=utf-8&autoReconnect=true
    username: ssgg
    password: ssgg
    driverClassName: com.mysql.jdbc.Driver
    maxTotal: 500
    maxIdle: 30
bloodSugger:
  fasting: 00:00-07:59
  afterBreakfast: 08:00-09:59
  beforeLunch: 10:00-11:59
  afterLunch: 12:00-13:59
  beforeDinner: 14:00-17:59
  afterDinner: 18:00-19:59
  beforeSleep: 20:00-23:59
healthStandard:
  xt_min_before: 4
  xt_max_before: 7
  xt_min_after: 4
  xt_max_after: 11.1
  szy_min: 60
  szy_max: 90
  ssy_min: 90
  ssy_max: 140
systemConfig:
  msg_push_server: http://127.0.0.1:3000/system/sendmsg.im
  jw_server: http://172.19.103.88:8011/wlyy_service-1.0-SNAPSHOT
  socket_server: http://192.168.131.102:3008
---
spring:
  profiles: production
  datasource:
    url: jdbc:mysql://59.61.92.94:3306/device?useUnicode=true&characterEncoding=utf-8&autoReconnect=true
    username: wlyy
    password: jkzlehr@123
    driverClassName: com.mysql.jdbc.Driver
    maxTotal: 500
    maxIdle: 30
bloodSugger:
  fasting: 00:00-07:59
  afterBreakfast: 08:00-09:59
  beforeLunch: 10:00-11:59
  afterLunch: 12:00-13:59
  beforeDinner: 14:00-17:59
  afterDinner: 18:00-19:59
  beforeSleep: 20:00-23:59
healthStandard:
  xt_min_before: 4
  xt_max_before: 7
  xt_min_after: 4
  xt_max_after: 11.1
  szy_min: 60
  szy_max: 90
  ssy_min: 90
  ssy_max: 140
systemConfig:
  msg_push_server: http://127.0.0.1:3000/system/sendmsg.im
  jw_server: http://59.61.92.90:8072/wlyy_service
  socket_server: http://120.41.253.95:3000

+ 185 - 0
patient-co-service/wlyy_service/pom.xml

@ -0,0 +1,185 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.yihu.wlyy</groupId>
    <artifactId>wlyy_service</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>war</packaging>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.4.0.RELEASE</version>
        <relativePath>pom.xml</relativePath>
    </parent>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion>
                    <artifactId>log4j-over-slf4j</artifactId>
                    <groupId>org.slf4j</groupId>
                </exclusion>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.4</version>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.5.1</version>
            <exclusions>
                <exclusion>
                    <groupId>commons-logging</groupId>
                    <artifactId>commons-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpmime</artifactId>
            <version>4.5.1</version>
        </dependency>
        <dependency>
            <groupId>net.sf.json-lib</groupId>
            <artifactId>json-lib</artifactId>
            <version>2.4</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
        <!--Swagger-->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.4.0</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.4.0</version>
        </dependency>
        <!-- 智业接口引用 -->
        <dependency>
            <groupId>sehrCrypto</groupId>
            <artifactId>sehrCrypto</artifactId>
            <version>1.0.0</version>
        </dependency>
        <dependency>
            <groupId>net.java.dev.jna</groupId>
            <artifactId>jna</artifactId>
            <version>4.2.2</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.17</version>
        </dependency>
        <dependency>
            <groupId>com.zoesoft</groupId>
            <artifactId>phip-ssp-sdk</artifactId>
            <version>1.4.0</version>
        </dependency>
        <dependency>
            <groupId>com.zoesoft</groupId>
            <artifactId>zoe-crypto</artifactId>
            <version>1.4.0</version>
        </dependency>
        <dependency>
            <groupId>org.bouncycastle</groupId>
            <artifactId>bcprov-jdk16</artifactId>
            <version>1.46</version>
        </dependency>
        <dependency>
            <groupId>org.json</groupId>
            <artifactId>json</artifactId>
            <version>20160212</version>
        </dependency>
        <dependency>
            <groupId>org.jdom</groupId>
            <artifactId>jdom</artifactId>
            <version>1.1.3</version>
        </dependency>
        <dependency>
            <groupId>org.apache.axis</groupId>
            <artifactId>axis</artifactId>
            <version>1.4</version>
        </dependency>
        <dependency>
            <groupId>javax.xml.rpc</groupId>
            <artifactId>javax.xml.rpc-api</artifactId>
            <version>1.1.1</version>
        </dependency>
        <dependency>
            <groupId>wsdl4j</groupId>
            <artifactId>wsdl4j</artifactId>
            <version>1.6.2</version>
        </dependency>
        <dependency>
            <groupId>commons-discovery</groupId>
            <artifactId>commons-discovery</artifactId>
            <version>0.5</version>
        </dependency>
        <!-- 智业接口引用 END -->
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <useSystemClassLoader>false</useSystemClassLoader>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

+ 24 - 0
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/WlyyServiceApplication.java

@ -0,0 +1,24 @@
package com.yihu.wlyy.service;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.support.SpringBootServletInitializer;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@SpringBootApplication
@EnableSwagger2             //启动swagger注解
public class WlyyServiceApplication  extends SpringBootServletInitializer {
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(WlyyServiceApplication.class);
    }
    public static void main(String[] args) {
        SpringApplication.run(WlyyServiceApplication.class, args);
    }
}

+ 43 - 0
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/common/SwaggerConfig.java

@ -0,0 +1,43 @@
package com.yihu.wlyy.service.common;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.context.request.async.DeferredResult;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@Configuration
@EnableSwagger2
public class SwaggerConfig {
    private static final String PUBLIC_API = "Default";
    @Bean
    public Docket publicAPI() {
        return new Docket(DocumentationType.SWAGGER_2)
                .groupName(PUBLIC_API)
                .genericModelSubstitutes(DeferredResult.class)
                .useDefaultResponseMessages(false)
                .forCodeGeneration(true)
                .pathMapping("/")
                .select()
                .paths(PathSelectors.regex("/.*"))
                .build()
                .apiInfo(publicApiInfo());
    }
    private ApiInfo publicApiInfo() {
        ApiInfo apiInfo = new ApiInfo("三师平台设备相关API",
                "向PC端,微信、App等应用提供功能与数据接口。",
                "1.0",
                "No terms of service",
                "admin@jkzl.com",
                "The Apache License, Version 2.0",
                "http://www.apache.org/licenses/LICENSE-2.0.html"
        );
        return apiInfo;
    }
}

+ 103 - 0
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/common/SystemConfig.java

@ -0,0 +1,103 @@
package com.yihu.wlyy.service.common;
import org.springframework.context.annotation.Configuration;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
/**
 * @created hzp 2016/9/13.
 */
@Configuration
public class SystemConfig {
    private static Object lock = new Object();
    // 全局系统配置信息
    private static SystemConfig systemConf;
    // 系统配置文件
    private Properties systemProperties;
    public static SystemConfig getInstance() {
        if (systemConf == null) {
            synchronized (lock) {
                systemConf = new SystemConfig();
            }
        }
        return systemConf;
    }
    /**
     * 加载系统配置文件
     * @return
     */
    public Properties getSystemProperties() {
        if (systemProperties == null) {
            InputStream is = null;
            try {
                is = this.getClass().getResourceAsStream("/system.properties");
                systemProperties = new Properties();
                systemProperties.load(is);
            } catch (IOException e1) {
                e1.printStackTrace();
            } finally {
                if (is != null) {
                    try {
                        is.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
        return systemProperties;
    }
    /************************* 基卫服务配置 ********************************************/
    public String getGatewayUrl()
    {
         return  getSystemProperties().getProperty("gateway_url");
    }
    public String getGatewayLicence()
    {
        return  getSystemProperties().getProperty("gateway_licence");
    }
    public String getPublicKey()
    {
        return  getSystemProperties().getProperty("gateway_public_key");
    }
    public String getJwHospital()
    {
        return  getSystemProperties().getProperty("jw_hospital");
    }
    public String getJwLicence()
    {
        return  getSystemProperties().getProperty("jw_licence");
    }
    /************************* 挂号服务配置 ********************************************/
    public String getGuahaoUrl()
    {
        return  getSystemProperties().getProperty("guahao_url");
    }
    public String getGuahaoNamespace()
    {
        return  getSystemProperties().getProperty("guahao_namespace");
    }
    /************************* CA认证配置 ********************************************/
    public String getCAUrl()
    {
        return  getSystemProperties().getProperty("ca_url");
    }
    public String getCANamespace()
    {
        return  getSystemProperties().getProperty("ca_namespace");
    }
}

+ 25 - 0
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/common/http/HttpApiException.java

@ -0,0 +1,25 @@
package com.yihu.wlyy.service.common.http;
/**
 * add by hzp at 2016-9-21
 */
public class HttpApiException extends Exception{
    private Integer status;
    public Integer getStatus()
    {
        return status;
    }
    public HttpApiException(int errorCode, String reason) {
        super(reason);
        this.status = errorCode;
    }
    public HttpApiException(String reason, Throwable throwable) {
        super(reason, throwable);
        this.status = -1;
    }
}

+ 130 - 0
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/common/http/HttpClientUtil.java

@ -0,0 +1,130 @@
package com.yihu.wlyy.service.common.http;
import org.apache.http.Consts;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.*;
import org.apache.http.client.protocol.HttpClientContext;
import org.apache.http.client.utils.URLEncodedUtils;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
 * Created by hzp on 2016/8/9.
 */
public class HttpClientUtil {
    /**************************** 私有方法 *****************************************/
    private static CloseableHttpClient getCloseableHttpClient(SSLConnectionSocketFactory ssl) {
        if(ssl == null)
        {
            return HttpClients.createDefault();
        }
        else{
            CloseableHttpClient httpClient = HttpClients.custom()
                    .setSSLSocketFactory(ssl)
                    .build();
            return httpClient;
        }
    }
    private static void close(CloseableHttpClient httpClient, CloseableHttpResponse response) {
        try {
            if (httpClient != null) {
                httpClient.close();
            }
        } catch (Exception e) {
            System.out.print("关闭httpClient失败");
        }
        try {
            if (response != null) {
                response.close();
            }
        } catch (Exception e) {
            System.out.print("关闭response失败");
        }
    }
    private static HttpRequestBase getRequest(String method,String url,Map<String,Object> params,Map<String,Object> header) throws Exception
    {
        List<BasicNameValuePair> jsonParams = new ArrayList<>();
        //配置参数
        if(params!=null) {
            for (String key : params.keySet()) {
                jsonParams.add(new BasicNameValuePair(key, String.valueOf(params.get(key))));
            }
        }
        HttpRequestBase request;
        if(method.equals("POST"))
        {
            request = new HttpPost(url + "?" + URLEncodedUtils.format(jsonParams, Consts.UTF_8));
        }
        else if(method.equals("PUT"))
        {
            request = new HttpPut(url + "?" + URLEncodedUtils.format(jsonParams, Consts.UTF_8));
        }
        else if(method.equals("DELETE"))
        {
            request = new HttpDelete(url + "?" + URLEncodedUtils.format(jsonParams, Consts.UTF_8));
        }
        else
        {
            request = new HttpGet(url + "?" + URLEncodedUtils.format(jsonParams, Consts.UTF_8));
        }
        //配置头部信息
        if(header!=null)
        {
            for (String key : header.keySet()) {
                request.addHeader(key, header.get(key).toString());
            }
        }
        return request;
    }
    /****************************** 公用方法 *******************************************/
    /**
     * 请求
     */
    public static HttpResponse request(String method,String url,Map<String,Object> params,Map<String,Object> header,SSLConnectionSocketFactory ssl,String user,String password) {
        HttpResponse re = new HttpResponse();
        CloseableHttpResponse response = null;
        CloseableHttpClient httpclient = getCloseableHttpClient(ssl);
        //设置请求信息
        try {
            RequestConfig requestConfig = RequestConfig.custom().
                    setAuthenticationEnabled(true).build();
            HttpRequestBase request = getRequest(method,url,params,header);
            request.setConfig(requestConfig);
            //需要验证
            if (!StringUtils.isEmpty(user) && !StringUtils.isEmpty(password)) {
                HttpClientContext context = HttpClientContext.create();
                //通过http的上下文设置账号密码
                CredentialsProvider credsProvider = new BasicCredentialsProvider();
                credsProvider.setCredentials(new org.apache.http.auth.AuthScope(org.apache.http.auth.AuthScope.ANY_HOST, org.apache.http.auth.AuthScope.ANY_PORT),new org.apache.http.auth.UsernamePasswordCredentials(user, password));
                context.setCredentialsProvider(credsProvider);
                response = httpclient.execute(request, context);
            } else {
                response = httpclient.execute(request);
            }
            re.setStatusCode(response.getStatusLine().getStatusCode());
            re.setBody(EntityUtils.toString(response.getEntity(), "UTF-8"));
        } catch (Exception e) {
            re.setStatusCode(-1);
            re.setBody(e.getMessage());
        } finally {
            close(httpclient, response);
        }
        return re;
    }
}

+ 158 - 0
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/common/http/HttpHelper.java

@ -0,0 +1,158 @@
package com.yihu.wlyy.service.common.http;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.conn.ssl.TrustSelfSignedStrategy;
import org.apache.http.ssl.SSLContexts;
import org.springframework.stereotype.Service;
import javax.net.ssl.SSLContext;
import java.io.File;
import java.util.Map;
/**
 * Created by hzp on 2016/8/9.
 */
@Service
public class HttpHelper {
    private String sslKeystore;
    private String sslPassword;
    private String httpsUser;
    private String httpsUserPassword;
    private SSLConnectionSocketFactory  getDefaultSSL()
    {
        try {
            if (sslKeystore != null && sslKeystore.length() > 0 && sslPassword != null && sslPassword.length() > 0) {
                SSLContext sslContext = SSLContexts.custom()
                        .loadTrustMaterial(new File(sslKeystore), sslPassword.toCharArray(),
                                new TrustSelfSignedStrategy())
                        .build();
                return new SSLConnectionSocketFactory(
                        sslContext,
                        new String[]{"TLSv1"},
                        null,
                        null);
            } else {
                return null;
            }
        }
        catch (Exception ex)
        {
            System.out.print("获取SSL配置失败!");
            return null;
        }
    }
    /************************** Get方法 ******************************************/
    public HttpResponse get(String url)
    {
        return get(url,null,null);
    }
    public HttpResponse get(String url,Map<String,Object> params)
    {
        return get(url,params,null);
    }
    public HttpResponse get(String url,Map<String,Object> params,Map<String,Object> header)
    {
        if(url.startsWith("https"))
        {
            return get(url,params,header,getDefaultSSL(),httpsUser,httpsUserPassword);
        }
        else{
            //默认http不走ssl和用户密码
            return get(url, params, header, null, null, null);
        }
    }
    public HttpResponse get(String url,Map<String,Object> params,Map<String,Object> header,SSLConnectionSocketFactory ssl,String user,String password)
    {
        return HttpClientUtil.request("GET", url, params, header, ssl, user, password);
    }
    /************************** Post方法 ******************************************/
    public HttpResponse post(String url)
    {
        return post(url, null, null);
    }
    public HttpResponse post(String url,Map<String,Object> params)
    {
        return post(url, params, null);
    }
    public HttpResponse post(String url,Map<String,Object> params,Map<String,Object> header)
    {
        if(url.startsWith("https"))
        {
            return post(url, params, header, getDefaultSSL(),httpsUser,httpsUserPassword);
        }
        else{
            //默认http不走ssl和用户密码
            return post(url, params, header, null, null, null);
        }
    }
    public HttpResponse post(String url,Map<String,Object> params,Map<String,Object> header,SSLConnectionSocketFactory ssl,String user,String password)
    {
        return HttpClientUtil.request("POST",url,params,header,ssl,user,password);
    }
    /************************** Put方法 ******************************************/
    public HttpResponse put(String url)
    {
        return put(url, null, null);
    }
    public HttpResponse put(String url,Map<String,Object> params)
    {
        return put(url, params, null);
    }
    public HttpResponse put(String url,Map<String,Object> params,Map<String,Object> header)
    {
        if(url.startsWith("https"))
        {
            return put(url, params, header, getDefaultSSL(),httpsUser,httpsUserPassword);
        }
        else{
            //默认http不走ssl和用户密码
            return put(url, params, header, null, null, null);
        }
    }
    public HttpResponse put(String url,Map<String,Object> params,Map<String,Object> header,SSLConnectionSocketFactory ssl,String user,String password)
    {
        return HttpClientUtil.request("PUT",url,params,header,ssl,user,password);
    }
    /************************** Delete方法 **************************************/
    public HttpResponse delete(String url)
    {
        return delete(url, null, null);
    }
    public HttpResponse delete(String url,Map<String,Object> params)
    {
        return delete(url, params, null);
    }
    public HttpResponse delete(String url,Map<String,Object> params,Map<String,Object> header)
    {
        if(url.startsWith("https"))
        {
            return delete(url, params, header, getDefaultSSL(),httpsUser,httpsUserPassword);
        }
        else{
            //默认http不走ssl和用户密码
            return delete(url, params, header, null, null, null);
        }
    }
    public static HttpResponse delete(String url,Map<String,Object> params,Map<String,Object> header,SSLConnectionSocketFactory ssl,String user,String password)
    {
        return HttpClientUtil.request("DELETE",url,params,header,ssl,user,password);
    }
}

+ 36 - 0
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/common/http/HttpResponse.java

@ -0,0 +1,36 @@
package com.yihu.wlyy.service.common.http;
/**
 * add by hzp at 2016-8-9
 */
public class HttpResponse {
    public HttpResponse()
    {
    }
    public HttpResponse(int statusCode, String body) {
        this.statusCode = statusCode;
        this.body = body;
    }
    private int statusCode;
    private String body;
    public int getStatusCode() {
        return statusCode;
    }
    public void setStatusCode(int statusCode) {
        this.statusCode = statusCode;
    }
    public String getBody() {
        return body;
    }
    public void setBody(String body) {
        this.body = body;
    }
}

+ 37 - 0
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/common/model/IdEntity.java

@ -0,0 +1,37 @@
/*******************************************************************************
 * Copyright (c) 2005, 2014 springside.github.io
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 *******************************************************************************/
package com.yihu.wlyy.service.common.model;
import java.io.Serializable;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.MappedSuperclass;
/**
 * 统一定义id的entity基类.
 * 
 * 基类统一定义id的属性名称、数据类型、列名映射及生成策略.
 */
@MappedSuperclass
public abstract class IdEntity implements Serializable {
	
	// 非业务主键
	protected Long id;
	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
}

+ 76 - 0
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/common/model/Result.java

@ -0,0 +1,76 @@
package com.yihu.wlyy.service.common.model;
public class Result {
    private int status;
    private String msg;
    private Object data;
    public int getStatus() {
        return status;
    }
    public void setStatus(int status) {
        this.status = status;
    }
    public String getMsg() {
        return msg;
    }
    public void setMsg(String msg) {
        this.msg = msg;
    }
    public Object getData() {
        return data;
    }
    public void setData(Object data) {
        this.data = data;
    }
    /**
     * 错误消息
     */
    public static Result error(String msg) {
        Result re= new Result();
        re.setStatus(-1);
        re.setMsg(msg);
        return re;
    }
    /**
     * 错误消息
     */
    public static Result error(Integer status,String msg) {
        Result re= new Result();
        if(status == null)
        {
            status = -1;
        }
        re.setStatus(status);
        re.setMsg(msg);
        return re;
    }
    /**
     * 成功消息
     */
    public static Result success(String msg) {
        Result re= new Result();
        re.setStatus(200);
        re.setMsg(msg);
        return re;
    }
    /**
     * 成功消息
     */
    public static Result success(String msg,Object data) {
        Result re= new Result();
        re.setStatus(200);
        re.setMsg(msg);
        re.setData(data);
        return re;
    }
}

+ 1707 - 0
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/common/util/DateUtil.java

@ -0,0 +1,1707 @@
package com.yihu.wlyy.service.common.util;
import org.apache.commons.lang3.StringUtils;
import java.sql.Date;
import java.sql.Time;
import java.sql.Timestamp;
import java.text.*;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Locale;
import java.util.TimeZone;
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 Locale PRINT_LOCALE = Locale.ENGLISH;
    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 final static String DEFAULT_SIMPLEDATE_FORMAT = "yyyy-MM-dd HH:mm:ss SSS";
    public final static String DEFAULT_YMDHMSDATE_FORMAT = "yyyy-MM-dd HH:mm:ss";
    public final static String YYYYMMDDHHMMSS = "yyyyMMddHHmmss";
    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 DATE_WORLD_FORMAT = "yyyy-MM-dd'T'HH:mm:ss'Z'";
    public static final String YMD_FORMAT = "yyyy/M/d";
    public static final String YMDHMS_FORMAT = "yyyy/M/d H:mm:ss";
    /**
     * 获取现在时间
     * @return 返回短时间字符串格式yyyy-MM-dd
     */
    public static String getStringDateShort() {
        java.util.Date currentTime = new java.util.Date();
        SimpleDateFormat formatter = new SimpleDateFormat(DEFAULT_DATE_YMD_FORMAT);
        return formatter.format(currentTime);
    }
    /**
     * 将长时间格式时间转换为字符串 yyyy-MM-dd HH:mm:ss
     *
     * @param dateDate
     * @return
     */
    public static String dateToStrLong(java.util.Date dateDate) {
        if (dateDate == null) {
            return "";
        }
        SimpleDateFormat formatter = new SimpleDateFormat(DEFAULT_YMDHMSDATE_FORMAT);
        return formatter.format(dateDate);
    }
    /**
     * 获取当前时间 yyyy-MM-dd HH:mm:ss
     * @return
     */
    public static String getNowStr(){
        return getCurrentString(DEFAULT_YMDHMSDATE_FORMAT);
    }
    /**
     * 将长时间格式时间转换为字符串 yyyy-MM-dd
     *
     * @param dateDate
     * @return
     */
    public static String dateToStrShort(java.util.Date dateDate) {
        if (dateDate == null) {
            return "";
        }
        SimpleDateFormat formatter = new SimpleDateFormat(DEFAULT_DATE_YMD_FORMAT);
        return formatter.format(dateDate);
    }
    /**
     * 将短时间格式字符串转换为时间
     *
     * @param strDate
     * @return
     */
    public static java.util.Date strToDate(String strDate, String format) {
        if (StringUtils.isEmpty(strDate)) {
            return null;
        }
        SimpleDateFormat formatter = new SimpleDateFormat(format);
        ParsePosition pos = new ParsePosition(0);
        return formatter.parse(strDate, pos);
    }
    /**
     * 字符串转时间格式
     */
    public static java.util.Date strToDate(String strDate) {
        try {
            if (StringUtils.isEmpty(strDate)) {
                return null;
            }
            else{
                int length = strDate.length();
                if(strDate.contains("-"))
                {
                    if(length == 10)
                    {
                        return strToDate(strDate,DEFAULT_DATE_YMD_FORMAT);
                    }
                    else if(length == 19)
                    {
                        return strToDate(strDate,DEFAULT_YMDHMSDATE_FORMAT);
                    }
                }else if(strDate.contains("/")){
                    if(length > 10)
                    {
                        return strToDate(strDate,YMDHMS_FORMAT);
                    }
                    else
                    {
                        return strToDate(strDate,YMD_FORMAT);
                    }
                }
                else{
                    if(length == 8)
                    {
                        return strToDate(strDate,DEFAULT_CHAR_DATE_YMD_FORMAT);
                    }
                    else if(length == 14)
                    {
                        return strToDate(strDate,YYYYMMDDHHMMSS);
                    }
                }
            }
        }
        catch (Exception ex)
        {
            System.out.print(strDate+"strToDate失败!\r\n");
            ex.printStackTrace();
        }
        return null;
    }
    /**
     * 根据用户生日计算年龄
     */
    public static int getAgeByBirthday(java.util.Date birthday) {
        try {
            Calendar cal = Calendar.getInstance();
            if (cal.before(birthday)) {
                return 0;
            }
            int yearNow = cal.get(Calendar.YEAR);
            int monthNow = cal.get(Calendar.MONTH) + 1;
            int dayOfMonthNow = cal.get(Calendar.DAY_OF_MONTH);
            cal.setTime(birthday);
            int yearBirth = cal.get(Calendar.YEAR);
            int monthBirth = cal.get(Calendar.MONTH) + 1;
            int dayOfMonthBirth = cal.get(Calendar.DAY_OF_MONTH);
            int age = yearNow - yearBirth;
            if (monthNow <= monthBirth) {
                if (monthNow == monthBirth) {
                    if (dayOfMonthNow < dayOfMonthBirth) {
                        age--;
                    }
                } else {
                    age--;
                }
            }
            return age;
        } catch (Exception e) {
            return 0;
        }
    }
    /*************************************************************************************/
    public static String changeFormat(String changeDate, String beforeFormat, String afterFormat) {
        if (StringUtil.isBlank(changeDate)) {
            return changeDate;
        }
        return formatDate(parseDate(changeDate, beforeFormat), afterFormat);
    }
    public static String changeToYMDFormatForPrint(String changeDate) {
        if (StringUtil.isBlank(changeDate)) {
            return "";
        }
        DateFormat df = new SimpleDateFormat(PRINT_DATE_YMD_FORMAT, Locale.ENGLISH);
        return df.format(parseDate(changeDate, DEFAULT_CHAR_DATE_YMD_FORMAT));
    }
    public static String changeToYMFormatForPrint(String changeDate) {
        if (StringUtil.isBlank(changeDate)) {
            return "";
        }
        DateFormat df = new SimpleDateFormat(PRINT_DATE_YM_FORMAT, Locale.ENGLISH);
        return df.format(parseDate(changeDate, DEFAULT_DATE_YM_FORMAT));
    }
    public static String getFirstDate(String yearMonthStr, String yearMonthFormat, String dateFormat) throws Exception {
        DateFormat dfYearMonth = new SimpleDateFormat(yearMonthFormat);
        DateFormat dfDate = new SimpleDateFormat(dateFormat);
        java.util.Date date;
        if (yearMonthStr == null || yearMonthStr.equals("")) {
            throw new Exception(yearMonthStr + " is invalid.");
        }
        try {
            date = dfYearMonth.parse(yearMonthStr);
        } catch (ParseException e) {
            throw new Exception(yearMonthStr + " is invalid.");
        }
        return dfDate.format(date);
    }
    public static String getLastDate(String dateSource, String dateSourceFormat, String dateFormat) throws Exception {
        DateFormat dsf = new SimpleDateFormat(dateSourceFormat);
        DateFormat df = new SimpleDateFormat(dateFormat);
        java.util.Date date;
        String resultDateString;
        if (dateSource == null || dateSource.equals("")) {
            throw new Exception(dateSource + " is invalid.");
        }
        try {
            date = dsf.parse(dateSource);
            Calendar cal = Calendar.getInstance();
            cal.setTime(date);
            cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
            resultDateString = df.format(cal.getTime());
        } catch (ParseException e) {
            throw new Exception(dateSource + " is invalid.");
        }
        return resultDateString;
    }
    public static String getYearFromDBDate(String dateStr) {
        if (dateStr == null || dateStr.length() != DEFAULT_CHAR_DATE_YMD_FORMAT.length()) {
            return null;
        }
        return changeFormat(dateStr, DEFAULT_CHAR_DATE_YMD_FORMAT, DEFAULT_DATE_YEAR_FORMAT);
    }
    public static String getMonthFromDBDate(String dateStr) {
        if (dateStr == null || dateStr.length() != DEFAULT_CHAR_DATE_YMD_FORMAT.length()) {
            return null;
        }
        return changeFormat(dateStr, DEFAULT_CHAR_DATE_YMD_FORMAT, DEFAULT_DATE_MONTH_FORMAT);
    }
    public static String getYMFromDBDate(String dateStr) {
        if (dateStr == null || dateStr.length() != DEFAULT_CHAR_DATE_YMD_FORMAT.length()) {
            return null;
        }
        return changeFormat(dateStr, DEFAULT_CHAR_DATE_YMD_FORMAT, DEFAULT_DATE_YM_FORMAT);
    }
    public static int getDifferenceOfDays(java.util.Date dateFrom, java.util.Date dateTo) {
        return new Long((dateTo.getTime() - dateFrom.getTime()) / 1000 / 60 / 60 / 24).intValue();
    }
    public static int getDifferenceOfDays(String dateFromStr, String dateToStr, String dateFormat) {
        java.util.Date dateFrom = parseDate(dateFromStr, dateFormat);
        java.util.Date dateTo = parseDate(dateToStr, dateFormat);
        return getDifferenceOfDays(dateFrom, dateTo);
    }
    public static int getDifferenceOfDays(String dateFromStr, String dateToStr) {
        return getDifferenceOfDays(dateFromStr, dateToStr, DEFAULT_CHAR_DATE_YMD_FORMAT);
    }
    public static String formatTime(String timeStr) {
        if (timeStr == null || timeStr.length() != 6) {
            return null;
        }
        return StringUtil.substring(timeStr, 0, 2)
                + ":" + StringUtil.substring(timeStr, 2, 4)
                + ":" + StringUtil.substring(timeStr, 4);
    }
    public static String toString(Date date) {
        return toString((java.util.Date) date);
    }
    public static String toString(java.util.Date date) {
        return toString(date, DEFAULT_DATE_YMD_FORMAT);
    }
    public static String toString(Date date, String format) {
        return toString((java.util.Date) date, format);
    }
    public static String toString(java.util.Date date, String format) {
        if (date == null) {
            return null;
        }
        if (format == null) {
            throw new IllegalArgumentException("The value of an argument is inaccurate.");
        }
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        return sdf.format(date);
    }
    public static String formatTimestamp(Timestamp time) {
        return formatTimestamp(time, DEFAULT_TIMESTAMP_FORMAT);
    }
    public static String formatTimestamp(Timestamp time, String format) {
        if (time == null) {
            return null;
        }
        if (format == null) {
            throw new IllegalArgumentException("The value of an argument is inaccurate.");
        }
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        return sdf.format(time);
    }
    public static String toString(Time time, String format) {
        if (time == null) {
            return null;
        }
        if (format == null) {
            throw new IllegalArgumentException("The value of an argument is inaccurate.");
        }
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        return sdf.format(time);
    }
    public static Date formatCharDateYMD(String str) {
        return formatCharDateYMD(str, DEFAULT_DATE_YMD_FORMAT);
    }
    public static Date formatCharDateYMD(String str, String format) {
        if (str == null || str.trim().length() == 0) {
            return null;
        }
        if (format == null) {
            throw new IllegalArgumentException("The value of an argument is inaccurate.");
        }
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        ParsePosition pos = new ParsePosition(0);
        java.util.Date date = sdf.parse(str, pos);
        if (date == null) {
            return null;
        }
        return new Date(date.getTime());
    }
    public static Date formatCharDateYMD(String yy, String mm, String dd) {
        if (yy == null || mm == null || dd == null || yy.trim().length() == 0 ||
                mm.trim().length() == 0 || dd.trim().length() == 0) {
            return null;
        }
        return formatCharDateYMD(yy + "-" + (mm != null && mm.length() == 1 ? "0" + mm : mm) + "-" +
                (dd != null && dd.length() == 1 ? "0" + dd : dd));
    }
    public static Timestamp toTimestamp(String str) {
        if (str == null) {
            return null;
        }
        try {
            return Timestamp.valueOf(str.trim());
        } catch (IllegalArgumentException iae) {
            return null;
        }
    }
    public static Timestamp toTimestamp(String str, String format) {
        if (str == null) {
            return null;
        }
        try {
            return new Timestamp(parseDate(str, format).getTime());
        } catch (Exception e) {
            return null;
        }
    }
    public static Time toTime(String str) {
        if (str == null) {
            return null;
        }
        try {
            return (str.length() == 5 ? Time.valueOf(str + ":00") : Time.valueOf(str));
        } catch (Exception e) {
            return null;
        }
    }
    public static String toString(Time time) {
        return toString(time, DEFAULT_TIME_FORMAT);
    }
    public static String toYM(String yy, String mm) {
        if (yy == null || mm == null) {
            return null;
        }
        if (yy.trim().length() == 0 && mm.trim().length() != 0 ||
                yy.trim().length() != 0 && mm.trim().length() == 0) {
            return null;
        }
        return yy + (mm != null && mm.length() == 1 ? "0" + mm : mm);
    }
    public static String getNowDate() {
        return getNowDate(DEFAULT_NOW_STRING_FORMAT);
    }
    public static String getNowDate(String format) {
        if (format == null) {
            return null;
        }
        SimpleDateFormat sdf = new SimpleDateFormat(format, Locale.JAPAN);
        java.util.Date date = Calendar.getInstance().getTime();
        if (date == null) {
            return null;
        }
        return sdf.format(date);
    }
    public static Date getSysDate() {
        return new Date(Calendar.getInstance().getTime().getTime());
    }
    public static java.util.Date getSysDateYMDHMS() {
        Date dSysDateYMD = DateUtil.getSysDate();
        Timestamp ts = formatYMDToYMDHMS(StringUtil.toString(dSysDateYMD));
        return ts;
    }
    public static Timestamp getSysDateTime() {
        return new Timestamp(Calendar.getInstance().getTime().getTime());
    }
    public static Time getSysTime() {
        return new Time(Calendar.getInstance().getTime().getTime());
    }
    public static String toAge(String birthDay) {
        if (birthDay == null || birthDay.length() != 8) {
            return null;
        }
        int birthYear = Integer.parseInt(birthDay.substring(0, 4));
        int birthMonth = Integer.parseInt(birthDay.substring(4, 6));
        int birthDayOfMonth = Integer.parseInt(birthDay.substring(6, 8));
        return toAge(birthYear, birthMonth, birthDayOfMonth);
    }
    public static String toAge(int birthYear, int birthMonth, int birthDayOfMonth) {
        Calendar cl = Calendar.getInstance();
        int year = cl.get(Calendar.YEAR);
        int month = cl.get(Calendar.MONTH) + 1;
        int day = cl.get(Calendar.DAY_OF_MONTH);
        int sa = 0;
        if (month > birthMonth) {
            sa = 0;
        } else if (month == birthMonth && day >= birthDayOfMonth) {
            sa = 0;
        } else {
            sa = 1;
        }
        int age = year - birthYear - sa;
        return Integer.toString(age);
    }
    public static Date addDate(int add, java.util.Date d) {
        return addDate(add, new Date(d.getTime()));
    }
    public static java.util.Date addDateTime(int add, java.util.Date d) {
        return addDateTime(add, new Date(d.getTime()));
    }
    public static Date addDate(int add, Date d) {
        if (d == null) {
            return null;
        }
        Calendar cal = Calendar.getInstance();
        cal.setTime((java.util.Date) d);
        cal.setTimeZone(TimeZone.getDefault());
        cal.add(Calendar.DAY_OF_MONTH, add);
        return new Date(cal.getTime().getTime());
    }
    public static java.util.Date addDateTime(int add, Date d) {
        if (d == null) {
            return null;
        }
        Calendar cal = Calendar.getInstance();
        cal.setTime((java.util.Date) d);
        cal.setTimeZone(TimeZone.getDefault());
        cal.add(Calendar.DAY_OF_MONTH, add);
        return cal.getTime();
    }
    public static String addDate(int add, String sDate) {
        if (sDate.length() < 8) {
            return null;
        }
        return formatDate(addDate(add, formatCharDateYMD(sDate, DEFAULT_CHAR_DATE_YMD_FORMAT)), DEFAULT_CHAR_DATE_YMD_FORMAT);
    }
    public static Date addMonth(int add, java.util.Date d) {
        return addMonth(add, new Date(d.getTime()));
    }
    public static Date addMonth(int add, Date d) {
        if (d == null) {
            return null;
        }
        Calendar cal = Calendar.getInstance();
        cal.setTime((java.util.Date) d);
        cal.setTimeZone(TimeZone.getDefault());
        cal.add(Calendar.MONTH, add);
        return new Date(cal.getTime().getTime());
    }
    public static String addMonth(int add, String sDate) {
        if (sDate.length() < 8) {
            return null;
        }
        return formatDate(addMonth(add, formatCharDateYMD(sDate, DEFAULT_CHAR_DATE_YMD_FORMAT)), DEFAULT_CHAR_DATE_YMD_FORMAT);
    }
    public static Date addYear(int add, java.util.Date d) {
        return addYear(add, new Date(d.getTime()));
    }
    public static Date addYear(int add, Date d) {
        if (d == null) {
            return null;
        }
        Calendar cal = Calendar.getInstance();
        cal.setTime((java.util.Date) d);
        cal.setTimeZone(TimeZone.getDefault());
        cal.add(Calendar.YEAR, add);
        return new Date(cal.getTime().getTime());
    }
    public static String addYear(int add, String sDate) {
        if (sDate.length() < 8) {
            return null;
        }
        return formatDate(addYear(add, formatCharDateYMD(sDate, DEFAULT_CHAR_DATE_YMD_FORMAT)), DEFAULT_CHAR_DATE_YMD_FORMAT);
    }
    public static String getNowDateTime() {
        SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss", Locale.JAPAN);
        df.setTimeZone(TimeZone.getDefault());
        return df.format(new java.util.Date());
    }
    public static String getCurrentString() {
        return getCurrentString(DEFAULT_SIMPLEDATE_FORMAT);
    }
    public static String getCurrentString(String pattern) {
        SimpleDateFormat f = new SimpleDateFormat(pattern);
        return f.format(Calendar.getInstance(TimeZone.getDefault()).getTime());
    }
    public static long compareDate(String pattern, String s1, String s2) {
        SimpleDateFormat f = new SimpleDateFormat(pattern);
        try {
            return f.parse(s1).getTime() - f.parse(s2).getTime();
        } catch (Exception e) {
            return -1;
        }
    }
    public static long compareDate(java.util.Date s1, java.util.Date s2) {
        try {
            return compareDate(DEFAULT_DATE_YMD_FORMAT, toString(s1), toString(s2));
        } catch (Exception e) {
            return -1;
        }
    }
    public static long compareDateTime(java.util.Date s1, java.util.Date s2) {
        return s1.getTime() - s2.getTime();
    }
    public static java.util.Date parseDate(String value, String pattern) {
        try {
            TimeZone tz = TimeZone.getDefault();
            String dateFormat = pattern;
            SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
            sdf.setTimeZone(tz);
            // Parse date
            java.util.Date parsed = null;
            parsed = sdf.parse(value);
            return parsed;
        } catch (ParseException e) {
            return null;
        }
    }
    public static String formatDate(java.util.Date value, String pattern) {
        TimeZone tz = TimeZone.getDefault();
        SimpleDateFormat sdf = new SimpleDateFormat(pattern);
        sdf.setTimeZone(tz);
        return sdf.format(value);
    }
    public static int getLastDay(Date dt) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(dt);
        int lastDay = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
        return lastDay;
    }
    public static String getYMDFormat(String datePtn) {
        final String[][] DATE_FORMAT_YMD_LIST = {{"1", "yyyy/MM/dd"},
                {"2", "yyyy.MM.dd"},
                {"3", "yyyy-MM-dd"},
                {"4", "MM/dd/yyyy"},
                {"5", "MM.dd.yyyy"},
                {"6", "MM-dd-yyyy"},
                {"7", "dd/MM/yyyy"},
                {"8", "dd.MM.yyyy"},
                {"9", "dd-MM-yyyy"},
                {"A", "dd/MM yyyy"}
        };
        String format = null;
        for (int i = 0; i < DATE_FORMAT_YMD_LIST.length; i++) {
            if (DATE_FORMAT_YMD_LIST[i][0].equals(datePtn)) {
                format = DATE_FORMAT_YMD_LIST[i][1];
                break;
            }
        }
        if (format == null) {
            throw new IllegalArgumentException("The value of an argument is inaccurate.");
        }
        return format;
    }
    public static String getYMFormat(String datePtn) {
        final String[][] DATE_FORMAT_YM_LIST = {{"1", "yyyy/MM"},
                {"2", "yyyy.MM"},
                {"3", "yyyy-MM"},
                {"4", "MM/yyyy"},
                {"5", "MM.yyyy"},
                {"6", "MM-yyyy"},
                {"7", "MM/yyyy"},
                {"8", "MM.yyyy"},
                {"9", "MM-yyyy"},
                {"A", "MM yyyy"},
                {"B", "yyyyMM"}
        };
        String format = null;
        for (int i = 0; i < DATE_FORMAT_YM_LIST.length; i++) {
            if (DATE_FORMAT_YM_LIST[i][0].equals(datePtn)) {
                format = DATE_FORMAT_YM_LIST[i][1];
                break;
            }
        }
        if (format == null) {
            throw new IllegalArgumentException("The value of an argument is inaccurate.");
        }
        return format;
    }
    public static String toYMD(Date date, String datePtn) {
        if (date == null) {
            return null;
        }
        return toString(date, getYMDFormat(datePtn));
    }
    public static String formatDateYMD(String str, String datePtn) {
        if (str == null || str.trim().length() == 0) {
            return null;
        }
        return toYMD(formatCharDateYMD(str), datePtn);
    }
    public static String formatDateYMD(String yy, String mm, String dd, String datePtn) {
        if (yy == null || mm == null || dd == null || yy.trim().length() == 0
                || mm.trim().length() == 0 || dd.trim().length() == 0) {
            return null;
        }
        return formatDateYMD(yy + "-" + (mm != null && mm.length() == 1 ? "0" + mm : mm)
                + "-" + (dd != null && dd.length() == 1 ? "0" + dd : dd), datePtn);
    }
    public static String formatDateYM(Date date, String datePtn) {
        if (date == null) {
            return null;
        }
        return toString(date, getYMFormat(datePtn));
    }
    public static String formatDateYM(String str, String datePtn) {
        if (str == null || str.trim().length() == 0) {
            return null;
        }
        return formatDateYM(formatCharDateYMD(str, DEFAULT_DATE_YM_FORMAT), datePtn);
    }
    public static String formatDateYM(String yy, String mm, String datePtn) {
        if (yy == null || mm == null || yy.trim().length() == 0 || mm.trim().length() == 0) {
            return null;
        }
        return formatDateYM(yy + (mm != null && mm.length() == 1 ? "0" + mm : mm), datePtn);
    }
    public static String getTimestampFormat(String dateStyleId) {
        return getYMDFormat(dateStyleId) + " HH:mm:ss";
    }
    public static Date toDateFromTime(String time) {
        try {
            return toDateFromTime(Long.parseLong(time));
        } catch (Exception iae) {
            return null;
        }
    }
    public static Date toDateFromTime(long time) {
        return new Date(time);
    }
    public static Timestamp toTimestampFromTime(String time) {
        try {
            return toTimestampFromTime(Long.parseLong(time));
        } catch (Exception iae) {
            return null;
        }
    }
    public static Timestamp toTimestampFromTime(long time) {
        return new Timestamp(time);
    }
    public static Timestamp toTimestampFromGMT(int yy, int mm, int dd, int hh, int mi, int ss) {
        return toTimestampFromGMT(
                String.valueOf(yy),
                String.valueOf(mm),
                String.valueOf(dd),
                String.valueOf(hh),
                String.valueOf(mi),
                String.valueOf(ss));
    }
    public static Timestamp toTimestampFromGMT(String yy, String mm, String dd,
                                               String hh, String mi, String ss) {
        mm = mm != null && mm.length() == 1 ? "0" + mm : mm;
        dd = dd != null && dd.length() == 1 ? "0" + dd : dd;
        hh = hh != null && hh.length() == 1 ? "0" + hh : hh;
        mi = mi != null && mi.length() == 1 ? "0" + mi : mi;
        ss = ss != null && ss.length() == 1 ? "0" + ss : ss;
        return toTimestampFromGMT(yy + "-" + mm + "-" + dd + " " + hh + ":" + mi + ":" + ss);
    }
    public static Timestamp toTimestampFromGMT(String str) {
        if (str == null) {
            return null;
        }
        SimpleDateFormat sdf = new SimpleDateFormat(DEFAULT_TIMESTAMP_FORMAT);
        sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
        ParsePosition pos = new ParsePosition(0);
        java.util.Date date = sdf.parse(str, pos);
        if (date == null) {
            return null;
        }
        return new Timestamp(date.getTime());
    }
    public static Timestamp toTimestampFromGMT(Timestamp time) {
        return toTimestampFromGMT(StringUtil.toString(time));
    }
    public static Timestamp toTimestampFromLocal(String yy, String mm, String dd, String hh,
                                                 String mi, String ss, String differTimeSign,
                                                 String differenceTime, String summerTimeFrom,
                                                 String summerTimeTo, String summerTime) {
        mm = mm != null && mm.length() == 1 ? "0" + mm : mm;
        dd = dd != null && dd.length() == 1 ? "0" + dd : dd;
        hh = hh != null && hh.length() == 1 ? "0" + hh : hh;
        mi = mi != null && mi.length() == 1 ? "0" + mi : mi;
        ss = ss != null && ss.length() == 1 ? "0" + ss : ss;
        return toTimestampFromLocal(
                yy + "-" + mm + "-" + dd + " " + hh + ":" + mi + ":" + ss,
                differTimeSign,
                differenceTime,
                summerTimeFrom,
                summerTimeTo,
                summerTime);
    }
    public static Timestamp toTimestampFromLocal(String str, String differTimeSign,
                                                 String differenceTime, String summerTimeFrom,
                                                 String summerTimeTo, String summerTime) {
        if (str == null) {
            return null;
        }
        Timestamp time = toTimestamp(str);
        if (time == null) {
            return null;
        }
        long localTime = toGMTTimeFromLocalTime(
                time.getTime(),
                differTimeSign,
                differenceTime,
                summerTimeFrom,
                summerTimeTo,
                summerTime);
        return toTimestampFromGMT(new Timestamp(localTime));
    }
    public static Timestamp toTimestampFromLocal(Timestamp time, String differTimeSign,
                                                 String differenceTime, String summerTimeFrom,
                                                 String summerTimeTo, String summerTime) {
        return toTimestampFromLocal(
                StringUtil.toString(time),
                differTimeSign,
                differenceTime,
                summerTimeFrom,
                summerTimeTo,
                summerTime);
    }
    public static long toGMTTime(long local) {
        SimpleDateFormat sdf = new SimpleDateFormat(DEFAULT_TIMESTAMP_FORMAT);
        sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
        ParsePosition pos = new ParsePosition(0);
        java.util.Date date = sdf.parse(StringUtil.toString(new Timestamp(local)), pos);
        if (date == null) {
            return -1;
        }
        return date.getTime();
    }
    public static long toGMTTime(Timestamp local) {
        if (local == null) {
            return -1;
        }
        return toGMTTime(local.getTime());
    }
    public static Timestamp toGMTTimestamp(long local) {
        long time = toGMTTime(local);
        if (time == -1) {
            return null;
        }
        return new Timestamp(time);
    }
    public static Timestamp toGMTTimestamp(Timestamp local) {
        if (local == null) {
            return null;
        }
        return toGMTTimestamp(local.getTime());
    }
    public static String toYMD(String yy, String mm, String dd) {
        if (yy == null || mm == null || dd == null) {
            return null;
        }
        if (yy.trim().length() == 0 || mm.trim().length() == 0) {
            return "";
        }
        mm = mm != null && mm.length() == 1 ? "0" + mm : mm;
        if (dd != null && dd.length() == 0) {
            dd = "  ";
        }
        if (dd != null && dd.length() == 1) {
            dd = "0" + dd;
        }
        return yy + mm + dd;
    }
    public static String getYearFromYM(String ym) {
        if (ym == null || ym.length() != DEFAULT_DATE_YM_FORMAT.length()) {
            return null;
        }
        return ym.substring(0, 4);
    }
    public static String getMonthFromYM(String ym) {
        if (ym == null || ym.length() != DEFAULT_DATE_YM_FORMAT.length()) {
            return null;
        }
        return ym.substring(4, 6);
    }
    public static String getYearFromYMD(Date ymd) {
        return getYearFromYMD(toString(ymd));
    }
    public static String getMonthFromYMD(Date ymd) {
        return getMonthFromYMD(toString(ymd));
    }
    public static String getDateFromYMD(Date ymd) {
        return getDateFromYMD(toString(ymd));
    }
    public static String getYearFromYMD(String ymd) {
        if (ymd == null || ymd.length() != DEFAULT_DATE_YMD_FORMAT.length()) {
            return null;
        }
        return ymd.substring(0, 4);
    }
    public static String getMonthFromYMD(String ymd) {
        if (ymd == null || ymd.length() != DEFAULT_DATE_YMD_FORMAT.length()) {
            return null;
        }
        return ymd.substring(5, 7);
    }
    public static String getDateFromYMD(String ymd) {
        if (ymd == null || ymd.length() != DEFAULT_DATE_YMD_FORMAT.length()) {
            return null;
        }
        return ymd.substring(8, 10);
    }
    public static String getDateFromDateTime(String dateTime) {
        if (dateTime == null || dateTime.length() < DEFAULT_DATE_YMD_FORMAT.length()) {
            return null;
        }
        return dateTime.substring(0, 10);
    }
    public static String getHourFromHMS(String hms) {
        if (hms == null || hms.length() != DEFAULT_TIME_FORMAT.length()) {
            return null;
        }
        return hms.substring(0, 2);
    }
    public static String getMinuteFromHMS(String hms) {
        if (hms == null || hms.length() != DEFAULT_TIME_FORMAT.length()) {
            return null;
        }
        return hms.substring(3, 5);
    }
    public static String getSecondFromHMS(String hms) {
        if (hms == null || hms.length() != DEFAULT_TIME_FORMAT.length()) {
            return null;
        }
        return hms.substring(6, 8);
    }
    public static String formatDateYMD(Date date, String dateStyleId) {
        if (date == null) {
            return null;
        }
        return toString(date, getYMDFormat(dateStyleId));
    }
    public static long getSystemTime() {
        return Calendar.getInstance().getTime().getTime();
    }
    public static Timestamp getSystemTimestamp() {
        return new Timestamp(getSystemTime());
    }
    public static long getSystemTimeGMTToday() {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
        Timestamp today = toTimestamp(sdf.format(Calendar.getInstance().getTime()) + " 00:00:00");
        return toGMTTime(today);
    }
    public static Timestamp getSystemTimestampGMTToday() {
        long time = getSystemTimeGMTToday();
        if (time == -1) {
            return null;
        }
        return new Timestamp(time);
    }
    public static Date getSysDateGMTToday() {
        long time = getSystemTimeGMTToday();
        if (time == -1) {
            return null;
        }
        return new Date(getSystemTimeGMTToday());
    }
    public static String formatTimestamp(Timestamp time, String differTimeSign,
                                         String differenceTime, String summerTimeFrom,
                                         String summerTimeTo, String summerTime) {
        if (time == null) {
            return null;
        }
        return toStringFormatLocalTime(
                time.getTime(),
                differTimeSign,
                differenceTime,
                summerTimeFrom,
                summerTimeTo,
                summerTime,
                DEFAULT_TIMESTAMP_FORMAT);
    }
    public static String formatTimestamp(Timestamp time, String differTimeSign,
                                         String differenceTime, String summerTimeFrom,
                                         String summerTimeTo, String summerTime, String dateStyleId) {
        if (time == null) {
            return null;
        }
        return toStringFormatLocalTime(
                time.getTime(),
                differTimeSign,
                differenceTime,
                summerTimeFrom,
                summerTimeTo,
                summerTime,
                getTimestampFormat(dateStyleId));
    }
    public static String formatTimestamp(long time, String differTimeSign, String differenceTime,
                                         String summerTimeFrom, String summerTimeTo, String summerTime) {
        return toStringFormatLocalTime(
                time,
                differTimeSign,
                differenceTime,
                summerTimeFrom,
                summerTimeTo,
                summerTime,
                DEFAULT_TIMESTAMP_FORMAT);
    }
    public static String formatTimestamp(long time, String differTimeSign, String differenceTime,
                                         String summerTimeFrom, String summerTimeTo,
                                         String summerTime, String dateStyleId) {
        return toStringFormatLocalTime(
                time,
                differTimeSign,
                differenceTime,
                summerTimeFrom,
                summerTimeTo,
                summerTime,
                getTimestampFormat(dateStyleId));
    }
    public static String formatTimestampToDate(Timestamp time, String differTimeSign,
                                               String differenceTime, String summerTimeFrom,
                                               String summerTimeTo, String summerTime) {
        if (time == null) {
            return null;
        }
        return toStringFormatLocalTime(
                time.getTime(),
                differTimeSign,
                differenceTime,
                summerTimeFrom,
                summerTimeTo,
                summerTime,
                DEFAULT_DATE_YMD_FORMAT);
    }
    public static String formatTimestampToDate(Timestamp time, String differTimeSign,
                                               String differenceTime, String summerTimeFrom,
                                               String summerTimeTo, String summerTime, String dateStyleId) {
        if (time == null) {
            return null;
        }
        return toStringFormatLocalTime(
                time.getTime(),
                differTimeSign,
                differenceTime,
                summerTimeFrom,
                summerTimeTo,
                summerTime,
                getYMDFormat(dateStyleId));
    }
    public static String formatTimestampToDate(long time, String differTimeSign,
                                               String differenceTime, String summerTimeFrom,
                                               String summerTimeTo, String summerTime) {
        return toStringFormatLocalTime(
                time,
                differTimeSign,
                differenceTime,
                summerTimeFrom,
                summerTimeTo,
                summerTime,
                DEFAULT_DATE_YMD_FORMAT);
    }
    public static String formatTimestampToDate(long time, String differTimeSign,
                                               String differenceTime, String summerTimeFrom,
                                               String summerTimeTo, String summerTime, String dateStyleId) {
        return toStringFormatLocalTime(
                time,
                differTimeSign,
                differenceTime,
                summerTimeFrom,
                summerTimeTo,
                summerTime,
                getYMDFormat(dateStyleId));
    }
    public static String toStringFormatLocalTime(long time, String differTimeSign,
                                                 String differenceTime, String summerTimeFrom,
                                                 String summerTimeTo, String summerTime, String format) {
        long localTime = time;
        long differenceTimeLong = toDifferenceTimeLong(differenceTime);
        long summerTimeLong = toSummerTimeLong(summerTime);
        if (differTimeSign != null && differTimeSign.equals("+")) {
            localTime += differenceTimeLong;
        } else {
            localTime -= differenceTimeLong;
        }
        if (isSummerTime(time, summerTimeFrom, summerTimeTo)) {
            localTime -= summerTimeLong;
        }
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
        return sdf.format(new java.util.Date(localTime));
    }
    public static long toGMTTimeFromLocalTime(long localTime, String differTimeSign,
                                              String differenceTime, String summerTimeFrom,
                                              String summerTimeTo, String summerTime) {
        long time = localTime;
        long differenceTimeLong = toDifferenceTimeLong(differenceTime);
        long summerTimeLong = toSummerTimeLong(summerTime);
        if (differTimeSign != null && differTimeSign.equals("+")) {
            time -= differenceTimeLong;
        } else {
            time += differenceTimeLong;
        }
        if (isSummerTime(localTime, summerTimeFrom, summerTimeTo)) {
            time += summerTimeLong;
        }
        return time;
    }
    public static long toDifferenceTimeLong(String differenceTime) {
        long differenceTimeLong;
        try {
            long differenceTimeM = Long.parseLong(differenceTime.substring(0, 2));
            long differenceTimeS = Long.parseLong(differenceTime.substring(2, 4));
            differenceTimeLong = (differenceTimeM * 60 * 60 * 1000) + (differenceTimeS * 60 * 1000);
        } catch (Exception e) {
            differenceTimeLong = 0;
        }
        return differenceTimeLong;
    }
    public static long toSummerTimeLong(String summerTime) {
        long summerTimeLong;
        try {
            long summerTimeM = Long.parseLong(summerTime.substring(0, 2));
            long summerTimeS = Long.parseLong(summerTime.substring(2, 4));
            summerTimeLong = (summerTimeM * 60 * 60 * 1000) + (summerTimeS * 60 * 1000);
        } catch (Exception e) {
            summerTimeLong = 0;
        }
        return summerTimeLong;
    }
    public static boolean isSummerTime(long time, String summerTimeFrom, String summerTimeTo) {
        if (summerTimeFrom == null || summerTimeFrom.trim().length() != 4 ||
                summerTimeTo == null || summerTimeTo.trim().length() != 4) {
            return false;
        }
        SimpleDateFormat sdf = new SimpleDateFormat(DEFAULT_DATE_MD_FORMAT);
        sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
        String md = sdf.format(new java.util.Date(time));
        if (md.compareTo(summerTimeFrom) >= 0 && md.compareTo(summerTimeTo) <= 0) {
            // サマータイム
            return true;
        } else {
            return false;
        }
    }
    public static String formatGMTTimestamp(Timestamp time) {
        return toStringFormatGMTTime(time, DEFAULT_TIMESTAMP_FORMAT);
    }
    public static String formatGMTTimestamp(Timestamp time, String dateStyleId) {
        return toStringFormatGMTTime(time, getTimestampFormat(dateStyleId));
    }
    public static String formatGMTTimestamp(long time) {
        return toStringFormatGMTTime(time, DEFAULT_TIMESTAMP_FORMAT);
    }
    public static String formatGMTTimestamp(long time, String dateStyleId) {
        return toStringFormatGMTTime(time, getTimestampFormat(dateStyleId));
    }
    public static String formatGMTTimestampToDate(Timestamp time) {
        return toStringFormatGMTTime(time, DEFAULT_DATE_YMD_FORMAT);
    }
    public static String formatGMTTimestampToDate(Timestamp time, String dateStyleId) {
        return toStringFormatGMTTime(time, getYMDFormat(dateStyleId));
    }
    public static String formatGMTTimestampToDate(long time) {
        return toStringFormatGMTTime(time, DEFAULT_DATE_YMD_FORMAT);
    }
    public static String formatGMTTimestampToDate(long time, String dateStyleId) {
        return toStringFormatGMTTime(time, getYMDFormat(dateStyleId));
    }
    public static String toStringFormatGMTTime(Timestamp time, String format) {
        if (time == null) {
            return null;
        }
        return toStringFormatGMTTime(time.getTime(), format);
    }
    public static String toStringFormatGMTTime(long time, String format) {
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
        return sdf.format(new java.util.Date(time));
    }
    public static String toStringFormatTime(long time, String format) {
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        return sdf.format(new java.util.Date(time));
    }
    public static int getLastDay(int yy, int mm) {
        GregorianCalendar gc = new GregorianCalendar(yy, mm - 1, 1);
        return gc.getActualMaximum(GregorianCalendar.DATE);
    }
    public static String getLocalPattern(Locale locale) {
        SimpleDateFormat f = new SimpleDateFormat();
        f.setCalendar(Calendar.getInstance(locale));
        return f.toLocalizedPattern();
    }
    public static int getYears(java.util.Date date0, java.util.Date date1) {
        Calendar calendar0 = Calendar.getInstance();
        calendar0.setTime(date0);
        Calendar calendar1 = Calendar.getInstance();
        calendar1.setTime(date1);
        int year0 = calendar0.get(Calendar.YEAR);
        int year1 = calendar1.get(Calendar.YEAR);
        int years = year1 - year0;
        return years;
    }
    public static String getDifferenceOfYears(java.util.Date dateFrom, java.util.Date dateTo) {
        String years = DEFAULT_YEARS;
        if (dateFrom == null || dateTo == null) {
            years = DEFAULT_YEARS;
        } else {
            int days = getDifferenceOfDays(dateFrom, dateTo);
            DecimalFormat df = new DecimalFormat("#.0");
            years = df.format(days / 365.0);
        }
        return years;
    }
    public static Date formatCharDateYMDHMS(String str) {
        String format = DEFAULT_YMDHMSDATE_FORMAT;
        if (str == null || str.trim().length() == 0) {
            return null;
        }
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        ParsePosition pos = new ParsePosition(0);
        java.util.Date date = sdf.parse(str, pos);
        if (date == null) {
            return null;
        }
        return new Date(date.getTime());
    }
    public static Timestamp formatYMDToYMDHMS(String str) {
        String format = DEFAULT_YMDHMSDATE_FORMAT;
        if (str == null || str.trim().length() == 0) {
            return null;
        }
        str += " 00:00:00";
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        ParsePosition pos = new ParsePosition(0);
        java.util.Date date = sdf.parse(str, pos);
        if (date == null) {
            return null;
        }
        Timestamp ts = DateUtil.fromatDateToTimestamp(new Date(date.getTime()));
        return ts;
    }
    public static Timestamp fromatDateToTimestamp(java.util.Date date) {
        Timestamp ts = new Timestamp(System.currentTimeMillis());
        try {
            SimpleDateFormat df = new SimpleDateFormat(DEFAULT_YMDHMSDATE_FORMAT);
            String time = df.format(date);
            ts = Timestamp.valueOf(time);
        } catch (Exception e) {
            return null;
        }
        return ts;
    }
    /**
     * 获取标准时区偏移
     * @return
     */
    public static int geTimeZoneOffset(){
        int offset=0;
        Calendar cal = Calendar.getInstance();
        TimeZone timeZone = cal.getTimeZone();
        offset=timeZone.getRawOffset()/(1000*60*60);
        return offset;
    }
    /**
     *  凌晨0点的时间
     * @param date  时间
     * @param days  正数�? days天后 ,负数为 days天前
     * @return
     */
    public static java.util.Date getTimesmorning(java.util.Date date,int days){
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        cal.set(Calendar.DATE, cal.get(Calendar.DATE) +(days));
        cal.set(Calendar.HOUR_OF_DAY, 0);
        cal.set(Calendar.SECOND, 0);
        cal.set(Calendar.MINUTE, 0);
        cal.set(Calendar.MILLISECOND, 0);
        return  cal.getTime();
    }
    /**
     *  晚上24点的时间
     * @param date  时间
     * @param days  正数�? days天后 ,负数为 days天前
     * @return
     */
    public static java.util.Date getTimesnight(java.util.Date date,int days){
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        cal.set(Calendar.DATE, cal.get(Calendar.DATE) +(days));
        cal.set(Calendar.HOUR_OF_DAY, 24);
        cal.set(Calendar.SECOND, 0);
        cal.set(Calendar.MINUTE, 0);
        cal.set(Calendar.MILLISECOND, 0);
        return  cal.getTime();
    }
    /**
     *  日期加减天数 (可优化�?
     * @param date 时间
     * @param days 天数�?
     * @return
     */
    public static java.util.Date setDateTime(java.util.Date date,int days){
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        cal.set(Calendar.DATE, cal.get(Calendar.DATE) +(days));
        return  cal.getTime();
    }
    public static Boolean isExpire(java.util.Date fromDate, java.util.Date endDate, Integer expiresIn){
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        long diff = (endDate.getTime() - fromDate.getTime())/1000;
        if(diff > expiresIn){
            return true;
        }
        else{
            return false;
        }
    }
    public static String getUtcDate(String dateStr,String format){
        SimpleDateFormat sdf1 = new SimpleDateFormat(DATE_WORLD_FORMAT);
        SimpleDateFormat sdf2 = new SimpleDateFormat(format);
        String date= null;
        try {
            date = sdf1.format(sdf2.parse(dateStr));
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return date;
    }
    public static String getUtcDate(java.util.Date date){
        SimpleDateFormat sdf1 = new SimpleDateFormat(DATE_WORLD_FORMAT);
        String utcDate = sdf1.format(date);
        return utcDate;
    }
    //utc时间转换
    public static String utcToDate(String utcTime,String format){
        SimpleDateFormat utcSdf = new SimpleDateFormat(DATE_WORLD_FORMAT);
        SimpleDateFormat newSdf = new SimpleDateFormat(format);
        String date= null;
        try {
            if (!StringUtil.isEmpty(utcTime))
                date = newSdf.format(utcSdf.parse(utcTime));
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return date;
    }
    /**
     * 得到一个时间延后或前移几分钟的时间,nowdate为时间,delay为前移或后延的分钟数
     */
    public static java.util.Date getNextMin(java.util.Date date, int delay) {
        try {
            Calendar cal = Calendar.getInstance();
            cal.setTime(date);
            cal.add(Calendar.MINUTE, delay);
            return cal.getTime();
        } catch (Exception e) {
            return null;
        }
    }
    /**
     * 得到一个时间延后或前移几天的时间,nowdate为时间,delay为前移或后延的天数
     */
    public static String getNextDay(String nowdate, int delay) {
        try {
            SimpleDateFormat format = new SimpleDateFormat(DEFAULT_DATE_YMD_FORMAT);
            String mdate = "";
            java.util.Date d = strToDate(nowdate, DEFAULT_DATE_YMD_FORMAT);
            long myTime = (d.getTime() / 1000) + delay * 24 * 60 * 60;
            d.setTime(myTime * 1000);
            mdate = format.format(d);
            return mdate;
        } catch (Exception e) {
            return "";
        }
    }
}

+ 106 - 0
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/common/util/IdCardUtil.java

@ -0,0 +1,106 @@
package com.yihu.wlyy.service.common.util;
import org.apache.commons.lang3.StringUtils;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
/**
 * Created by Administrator on 2016.08.17.
 * 身份证工具类
 */
public class IdCardUtil {
    /**
     * 根据身份证的号码算出当前身份证持有者的性别
     * 1 女 2 男 3未知
     */
    public static String getSexForIdcard(String CardCode)
            throws Exception {
        String sex = "0";
        if (CardCode.length() == 18) {
            if (Integer.parseInt(CardCode.substring(16).substring(0, 1)) % 2 == 0) {// 判断性别
                sex = "1";
            } else {
                sex = "2";
            }
        } else if (CardCode.length() == 15) {
            String usex = CardCode.substring(14, 15);// 用户的性别
            if (Integer.parseInt(usex) % 2 == 0) {
                sex = "1";
            } else {
                sex = "2";
            }
        }
        return sex;
    }
    /**
     * 根据身份证的号码算出当前身份证持有者的年龄
     *
     * @param
     * @throws Exception
     */
    public static int getAgeForIdcard(String idcard) {
        int age = 0;
        if (StringUtils.isEmpty(idcard)) {
            return age;
        }
        String birth = "";
        if (idcard.length() == 18) {
            birth = idcard.substring(6, 14);
        } else if (idcard.length() == 15) {
            birth = "19" + idcard.substring(6, 12);
        }
        int year = Integer.valueOf(birth.substring(0, 4));
        int month = Integer.valueOf(birth.substring(4, 6));
        int day = Integer.valueOf(birth.substring(6));
        Calendar cal = Calendar.getInstance();
        age = cal.get(Calendar.YEAR) - year;
        //周岁计算
        if (cal.get(Calendar.MONTH) > (month - 1) || (cal.get(Calendar.MONTH) == (month - 1) && cal.get(Calendar.DATE) > day)) {
            age--;
        }
        return age;
    }
    /**
     * 身份证提取出身日期
     *
     * @param card
     * @return
     * @throws Exception
     */
    public static Date getBirthdayForIdcard(String card) {
        try {
            Date b = null;
            if (card.length() == 18) {
                String year = card.substring(6).substring(0, 4);// 得到年份
                String yue = card.substring(10).substring(0, 2);// 得到月份
                String ri = card.substring(12).substring(0, 2);// 得到日
                // String day=CardCode.substring(12).substring(0,2);//得到日
                SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
                b = format.parse(year + "-" + yue + "-" + ri);
            } else if (card.length() == 15) {
                String uyear = "19" + card.substring(6, 8);// 年份
                String uyue = card.substring(8, 10);// 月份
                String uri = card.substring(10, 12);// 得到日
                SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
                b = format.parse(uyear + "-" + uyue + "-" + uri);
            }
            return b;
        }
        catch (Exception ex)
        {
            ex.printStackTrace();
            return null;
        }
    }
}

+ 52 - 0
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/common/util/MD5Util.java

@ -0,0 +1,52 @@
package com.yihu.wlyy.service.common.util;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
/*
 * MD5 算法
 */
public class MD5Util {
	// 全局数组
	private final static String[] strDigits = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f" };
	public MD5Util() {
	}
	// 返回形式为数字跟字符串
	private static String byteToArrayString(byte bByte) {
		int iRet = bByte;
		// System.out.println("iRet="+iRet);
		if (iRet < 0) {
			iRet += 256;
		}
		int iD1 = iRet / 16;
		int iD2 = iRet % 16;
		return strDigits[iD1] + strDigits[iD2];
	}
	// 转换字节数组为16进制字串
	private static String byteToString(byte[] bByte) {
		StringBuffer sBuffer = new StringBuffer();
		for (int i = 0; i < bByte.length; i++) {
			sBuffer.append(byteToArrayString(bByte[i]));
		}
		return sBuffer.toString();
	}
	public static String GetMD5Code(String strObj) {
		String resultString = null;
		try {
			resultString = new String(strObj);
			MessageDigest md = MessageDigest.getInstance("MD5");
			// md.digest() 该函数返回值为存放哈希值结果的byte数组
			resultString = byteToString(md.digest(strObj.getBytes()));
		} catch (NoSuchAlgorithmException ex) {
			ex.printStackTrace();
		}
		return resultString;
	}
}

+ 649 - 0
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/common/util/NumberUtil.java

@ -0,0 +1,649 @@
package com.yihu.wlyy.service.common.util;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.text.DecimalFormat;
import java.text.NumberFormat;
public class NumberUtil {
    public static final BigDecimal DEFAULT_NUMBER = BigDecimal.ZERO;
    public static final String DECIMAL_FORMAT = "#,##0.00";
    public static final String INTEGER_FORMAT = "#,##0";
    public static final String DEFAULT_NUM_GROUP_STYLE_ID = "1";
    public static final String DEFAULT_DECIMAL_STYLE_ID = "2";
    public static final String[][] DECIMAL_STYLE_LIST = {
            {"1", ",", "Comma"},
            {"2", ".", "Period"}
    };
    public static final String[][] NUM_GROUP_STYLE_LIST = {
            {"1", ",", "Comma"},
            {"2", ".", "Period"},
            {"3", " ", "Space"}
    };
    protected NumberUtil() {
    }
    public static boolean isDivisible(BigDecimal dividend, BigDecimal divisor) {
        if (dividend == null || divisor == null) {
            return false;
        }
        if (compare(dividend.remainder(divisor), DEFAULT_NUMBER) == 0) {
            return true;
        }
        return false;
    }
    public static String changeToDecimalFormat(Number num) {
        return formatNumber(num, DECIMAL_FORMAT);
    }
    public static String changeToIntegerFormat(Number num) {
        return formatNumber(num, INTEGER_FORMAT);
    }
    public static String formatNumber(Number num, String format) {
        DecimalFormat noFormat = new DecimalFormat(format);
        return noFormat.format(num);
    }
    public static int compare(BigDecimal num1, BigDecimal num2) {
        if (num1 == null) {
            num1 = DEFAULT_NUMBER;
        }
        if (num2 == null) {
            num2 = DEFAULT_NUMBER;
        }
        return num1.compareTo(num2);
    }
    public static boolean gt(BigDecimal num1, BigDecimal num2) {
        if (compare(num1, num2) > 0) {
            return true;
        }
        return false;
    }
    public static boolean ge(BigDecimal num1, BigDecimal num2) {
        return !lt(num1, num2);
    }
    public static boolean lt(BigDecimal num1, BigDecimal num2) {
        if (compare(num1, num2) < 0) {
            return true;
        }
        return false;
    }
    public static boolean le(BigDecimal num1, BigDecimal num2) {
        return !gt(num1, num2);
    }
    public static boolean equals(BigDecimal num1, BigDecimal num2) {
        if (compare(num1, num2) == 0) {
            return true;
        }
        return false;
    }
    public static boolean equals(int num1, int num2) {
        if (compare(new BigDecimal(String.valueOf(num1)), new BigDecimal(String.valueOf(num2))) == 0) {
            return true;
        }
        return false;
    }
    public static boolean isPositive(BigDecimal num) {
        if (num == null) {
            return false;
        }
        if (gt(num, BigDecimal.ZERO)) {
            return true;
        }
        return false;
    }
    public static boolean isZero(BigDecimal num) {
        if (num == null) {
            return false;
        }
        if (equals(num, BigDecimal.ZERO)) {
            return true;
        }
        return false;
    }
    public static BigDecimal subtractBigDecimal(BigDecimal dec1, BigDecimal dec2) {
        return (dec1 != null ? dec1 : DEFAULT_NUMBER).subtract(dec2 != null ? dec2 : DEFAULT_NUMBER);
    }
    public static BigDecimal multiplyBigDecimal(BigDecimal dec1, BigDecimal dec2) {
        return (dec1 != null ? dec1 : DEFAULT_NUMBER).multiply(dec2 != null ? dec2 : DEFAULT_NUMBER);
    }
    public static BigDecimal divideBigDecimal(BigDecimal dec1, BigDecimal dec2) {
        if (dec2 == null || dec2.equals(DEFAULT_NUMBER)) {
            return DEFAULT_NUMBER;
        }
        return (dec1 != null ? dec1 : DEFAULT_NUMBER).divide(dec2, 2, BigDecimal.ROUND_HALF_UP);
    }
    public static BigDecimal divideBigDecimal(BigDecimal dec1, BigDecimal dec2, int scale) {
        if (dec2 == null || dec2.equals(DEFAULT_NUMBER)) {
            return DEFAULT_NUMBER;
        }
        return (dec1 != null ? dec1 : DEFAULT_NUMBER).divide(dec2, scale, BigDecimal.ROUND_HALF_UP);
    }
    public static BigDecimal floorDivideBigDecimal(BigDecimal dec1, BigDecimal dec2) {
        if (dec2 == null || dec2.equals(DEFAULT_NUMBER)) {
            return DEFAULT_NUMBER;
        }
        return (dec1 != null ? dec1 : DEFAULT_NUMBER).divide(dec2, 0, BigDecimal.ROUND_FLOOR);
    }
    public static BigDecimal ceilingDivideBigDecimal(BigDecimal dec1, BigDecimal dec2) {
        if (dec2 == null || dec2.equals(DEFAULT_NUMBER)) {
            return DEFAULT_NUMBER;
        }
        return (dec1 != null ? dec1 : DEFAULT_NUMBER).divide(dec2, 0, BigDecimal.ROUND_CEILING);
    }
    public static BigDecimal toBigDecimal(int num) {
        return toBigDecimal(StringUtil.toString(num));
    }
    public static Integer toInteger(long num) {
        return toInteger(StringUtil.toString(num));
    }
    public static BigDecimal roundBigDecimal(BigDecimal dec1, int scale) {
        return (dec1 != null ? dec1 : DEFAULT_NUMBER).divide(new BigDecimal("1"), scale, BigDecimal.ROUND_HALF_UP);
    }
    public static BigDecimal floorBigDecimal(BigDecimal dec1, int scale) {
        return (dec1 != null ? dec1 : DEFAULT_NUMBER).divide(new BigDecimal("1"), scale, BigDecimal.ROUND_FLOOR);
    }
    public static BigDecimal ceilingBigDecimal(BigDecimal dec1, int scale) {
        return (dec1 != null ? dec1 : DEFAULT_NUMBER).divide(new BigDecimal("1"), scale, BigDecimal.ROUND_CEILING);
    }
    public static Boolean toBoolean(String str) {
        try {
            return new Boolean(str);
        } catch (Exception e) {
            return null;
        }
    }
    public static boolean isZero(Integer num) {
        if (num == null) {
            return true;
        }
        if (num == 0) {
            return true;
        }
        return false;
    }
    public static int toInt(String str) {
        Integer integer = toInteger(str);
        return (integer == null ? 0 : integer.intValue());
    }
    public static int toInt(Integer integer) {
        return (integer == null ? 0 : integer.intValue());
    }
    public static Integer toInteger(String str) {
        if (str == null) {
            return null;
        }
        if (StringUtil.isBlank(str)) {
            return 0;
        }
        try {
            return new Integer(str.trim());
        } catch (NumberFormatException nfe) {
            return null;
        }
    }
    public static Integer toInteger(int i) {
        try {
            return new Integer(i);
        } catch (NumberFormatException nfe) {
            return null;
        }
    }
    public static BigInteger toBigInteger(String str) {
        if (str == null) {
            return null;
        }
        try {
            return new BigInteger(str.trim());
        } catch (NumberFormatException nfe) {
            return null;
        }
    }
    public static BigDecimal toBigDecimal(String str) {
        if (str == null) {
            return null;
        }
        if (StringUtil.isBlank(str)) {
            return BigDecimal.ZERO;
        }
        try {
            return new BigDecimal(str.trim());
        } catch (NumberFormatException nfe) {
            return null;
        }
    }
    public static BigDecimal toBigDecimal(String str, String decPoPtn) {
        return toBigDecimal(formatDecDefault(str, decPoPtn));
    }
    public static Float toFloat(String str) {
        if (str == null) {
            return null;
        }
        try {
            return new Float(str.trim());
        } catch (NumberFormatException nfe) {
            return null;
        }
    }
    public static float totoPrimitiveFloat(String str) {
        return (str == null ? 0 : Float.parseFloat(str));
    }
    public static Long toLong(String str) {
        if (str == null) {
            return null;
        }
        try {
            return new Long(str.trim());
        } catch (NumberFormatException nfe) {
            return null;
        }
    }
    public static long totoPrimitiveLong(String str) {
        return (str == null ? 0 : Long.parseLong(str));
    }
    public static Double toDouble(String str) {
        if (str == null) {
            return null;
        }
        try {
            return new Double(str.trim());
        } catch (NumberFormatException nfe) {
            return null;
        }
    }
    public static double totoPrimitiveDouble(String str) {
        return (str == null ? 0 : Double.parseDouble(str));
    }
    public static String getDecimalStyleName(String decimalStyleId) {
        String value = null;
        for (int i = 0; i < DECIMAL_STYLE_LIST.length; i++) {
            if (DECIMAL_STYLE_LIST[i][0].equals(decimalStyleId)) {
                value = DECIMAL_STYLE_LIST[i][2];
                break;
            }
        }
        if (value == null) {
            throw new IllegalArgumentException("The value of an argument is inaccurate.");
        }
        return value;
    }
    public static String getDecPo(String decPoPtn) {
        return String.valueOf(getDecimalStyleValue(decPoPtn));
    }
    public static String getDecimalStyleValue(String decimalStyleId) {
        String value = null;
        for (int i = 0; i < DECIMAL_STYLE_LIST.length; i++) {
            if (DECIMAL_STYLE_LIST[i][0].equals(decimalStyleId)) {
                value = DECIMAL_STYLE_LIST[i][1];
                break;
            }
        }
        if (value == null) {
            throw new IllegalArgumentException("The value of an argument is inaccurate.");
        }
        return value;
    }
    public static char getDecimalStyleValueChar(String decimalStyleId) {
        return getDecimalStyleValue(decimalStyleId).charAt(0);
    }
    public static String formatIntValue(int n) {
        return formatIntValue(new Integer(n));
    }
    public static String formatIntView(int n, String numSepPtn) {
        return formatIntView(new Integer(n), numSepPtn);
    }
    public static String formatIntValue(Integer num) {
        if (num == null) {
            return null;
        }
        String format = "#####0";
        return formatNum(num, format, null, null);
    }
    public static String formatIntView(Integer num, String numGroupStyleId) {
        if (num == null) {
            return null;
        }
        String format = "###,##0";
        return formatNum(num, format, null, numGroupStyleId);
    }
    public static String formatDecValue(BigDecimal dec, String decimalStyleId) {
        return formatDecValue(dec, -1, decimalStyleId);
    }
    public static String formatDecValue(BigDecimal dec, Integer decLength, String decimalStyleId) {
        return formatDecValue(dec, decLength != null ? decLength.intValue() : -1, decimalStyleId);
    }
    public static String formatDecValue(BigDecimal dec, int decLength, String decimalStyleId) {
        if (dec == null) {
            return null;
        }
        String format = "#####0";
        if (decLength > 0) {
            // С������ָ������
            for (int i = 0; i < decLength; i++) {
                if (i == 0) {
                    format += ".";
                }
                format += "0";
            }
        } else {
            // С������ָ���ʤ�
            format += ".##########";
        }
        return formatNum(dec, format, decimalStyleId, null);
    }
    public static String formatDecView(BigDecimal dec, String decimalStyleId, String numGroupStyleId) {
        return formatDecView(dec, -1, decimalStyleId, numGroupStyleId);
    }
    public static String formatDecView(BigDecimal dec, Integer decLength,
                                       String decimalStyleId, String numGroupStyleId) {
        return formatDecView(dec,
                decLength != null ? decLength.intValue() : -1,
                decimalStyleId,
                numGroupStyleId);
    }
    public static String formatDecView(BigDecimal dec, int decLength,
                                       String decimalStyleId, String numGroupStyleId) {
        if (dec == null) {
            return null;
        }
        String format = "###,##0";
        if (decLength > 0) {
            // С������ָ������
            for (int i = 0; i < decLength; i++) {
                if (i == 0) {
                    format += ".";
                }
                format += "0";
            }
        } else {
            // С������ָ���ʤ�
            format += ".##########";
        }
        return formatNum(dec, format, decimalStyleId, numGroupStyleId);
    }
    protected static String formatNum(Object obj, String format, String decimalStyleId, String numGroupStyleId) {
        char decPo = decimalStyleId != null ? getDecimalStyleValueChar(decimalStyleId) : ' ';
        char numSep = numGroupStyleId != null ? getNumGroupStyleValueChar(numGroupStyleId) : ' ';
        DecimalFormat df = (DecimalFormat) NumberFormat.getInstance();
        df.applyPattern(format);
        String str = df.format(obj);
        if (str == null) {
            return null;
        }
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < str.length(); i++) {
            char c = str.charAt(i);
            if (c == ',') {
                sb.append(numSep);
                continue;
            }
            if (c == '.') {
                sb.append(decPo);
                if (i != str.length()) {
                    sb.append(str.substring(i + 1, str.length()));
                }
                break;
            }
            sb.append(c);
        }
        return sb.toString();
    }
    public static String formatDecDefault(String str, String decPoPtn) {
        if (str == null) {
            return null;
        }
        char decPo = getDecimalStyleValueChar(decPoPtn);
        StringBuffer sb = new StringBuffer(str);
        int idx = sb.toString().indexOf(String.valueOf(decPo));
        if (idx != -1) {
            sb.replace(idx, idx + String.valueOf(decPo).length(), String.valueOf('.'));
        }
        return sb.toString();
    }
    public static String getNumGroupStyleValue(String numGroupStyleId) {
        String value = null;
        for (int i = 0; i < NUM_GROUP_STYLE_LIST.length; i++) {
            if (NUM_GROUP_STYLE_LIST[i][0].equals(numGroupStyleId)) {
                value = NUM_GROUP_STYLE_LIST[i][1];
                break;
            }
        }
        if (value == null) {
            throw new IllegalArgumentException("The value of an argument is inaccurate.");
        }
        return value;
    }
    public static char getNumGroupStyleValueChar(String numGroupStyleId) {
        return getNumGroupStyleValue(numGroupStyleId).charAt(0);
    }
    public static String getNumGroupStyleName(String numGroupStyleId) {
        String value = null;
        for (int i = 0; i < NUM_GROUP_STYLE_LIST.length; i++) {
            if (NUM_GROUP_STYLE_LIST[i][0].equals(numGroupStyleId)) {
                value = NUM_GROUP_STYLE_LIST[i][2];
                break;
            }
        }
        if (value == null) {
            throw new IllegalArgumentException("The value of an argument is inaccurate.");
        }
        return value;
    }
    public static String roundString(String str) {
        BigDecimal dec = toBigDecimal(str);
        return (dec == null ? str : StringUtil.toString(roundBigDecimal(dec)));
    }
    public static BigDecimal roundBigDecimal(BigDecimal dec) {
        return (dec == null ? dec : dec.divide(new BigDecimal("1"), 0, BigDecimal.ROUND_HALF_UP));
    }
    public static int roundBigDecimal(int num) {
        return toInt(roundString(StringUtil.toString(num)));
    }
    public static String fomatNumber(double amount, String pattern) {
        NumberFormat nf = NumberFormat.getCurrencyInstance();
        DecimalFormat df = (DecimalFormat) nf;
        df.setMinimumFractionDigits(2);
        df.setMaximumFractionDigits(2);
        df.setDecimalSeparatorAlwaysShown(true);
        df.applyPattern(pattern);
        return df.format(amount);
    }
    public static String fomatNumber(long amount, String pattern) {
        NumberFormat nf = NumberFormat.getCurrencyInstance();
        DecimalFormat df = (DecimalFormat) nf;
        df.setMinimumFractionDigits(2);
        df.setMaximumFractionDigits(2);
        df.setDecimalSeparatorAlwaysShown(true);
        df.applyPattern(pattern);
        return df.format(amount);
    }
    public static BigDecimal addBigDecimal(BigDecimal dec1, BigDecimal dec2) {
        return (dec1 != null ? dec1 : new BigDecimal(0)).add(dec2 != null ? dec2 : new BigDecimal(0));
    }
    public static boolean isInteger(String target) {
        if (target == null) {
            return false;
        }
        char[] digit = new char[]{'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};
        for (int i = 0; i < target.length(); i++) {
            for (int j = 0; j < digit.length; j++) {
                if (target.charAt(i) == digit[j]) {
                    break;
                }
                if (i == 0 && target.charAt(i) == '-') {
                    break;
                }
                if (i == 0 && target.charAt(i) == '+') {
                    break;
                }
                if (j == digit.length - 1) {
                    return false;
                }
            }
        }
        return true;
    }
}

+ 251 - 0
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/common/util/SOAPUtil.java

@ -0,0 +1,251 @@
package com.yihu.wlyy.service.common.util;
import com.yihu.wlyy.service.common.SystemConfig;
import org.apache.commons.lang3.StringUtils;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.jdom.input.SAXBuilder;
import org.jdom.output.Format;
import org.jdom.output.XMLOutputter;
import org.json.JSONArray;
import org.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
public class SOAPUtil {
	private static Logger logger = LoggerFactory.getLogger(SOAPUtil.class);
	private static String defaultUrl;
	private static String defaultNamespace;
	private static byte[] publicKey;
	private static byte[] bKEY;
	static {
		try {
			publicKey =  sehrCrypto.sehrCrypto.ReadFileBytes(SOAPUtil.class.getClassLoader().getResource(SystemConfig.getInstance().getPublicKey()).toURI().getPath());         // 卫计委公钥
			defaultUrl = SystemConfig.getInstance().getGuahaoUrl();
			defaultNamespace = SystemConfig.getInstance().getGuahaoNamespace();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	/**
	 * 文件内容替换
	 */
	private static String replace(String inFileName, JSONArray params) throws IOException {
		String xml = XmlToString(inFileName);
		if (params == null || params.length() == 0) {
			return xml;
		}
		for (int i = 0; i < params.length(); i++) {
			JSONObject json = params.getJSONObject(i);
			xml = xml.replace(json.getString("key"), json.getString("value"));
		}
		return xml;
	}
	private static org.jdom.Document load(String path) {
		org.jdom.Document document = null;
		try {
			SAXBuilder reader = new SAXBuilder();
			document = reader.build(new File(path));
		} catch (Exception e) {
			e.printStackTrace();
		}
		return document;
	}
	private static String XmlToString(String path) {
		org.jdom.Document document = load(path);
		Format format = Format.getPrettyFormat();
		format.setEncoding("UTF-8");// 设置编码格式
		StringWriter out = null; // 输出对象
		String sReturn = ""; // 输出字符串
		XMLOutputter outputter = new XMLOutputter();
		out = new StringWriter();
		try {
			outputter.output(document, out);
		} catch (IOException e) {
			e.printStackTrace();
		}
		sReturn = out.toString();
		return sReturn;
	}
	/**
	 * 获取soap消息主体
	 * @return
     */
	private static String getRequestBody(String fileName,JSONArray params) throws Exception
	{
		String xml = SOAPUtil.class.getClassLoader().getResource("soap/guaihao/" + fileName + ".xml").getFile();
		return replace(xml, params);
	}
	/**
	 * 从输入流中读取数据
	 * @param inStream
	 * @return
	 * @throws IOException
	 * @throws Exception
	 */
	public static byte[] readInputStream(InputStream inStream) throws IOException {
		ByteArrayOutputStream outStream = null;
		byte[] data = null;
		try {
			outStream = new ByteArrayOutputStream();
			byte[] buffer = new byte[1024];
			int len = 0;
			while ((len = inStream.read(buffer)) != -1) {
				outStream.write(buffer, 0, len);
			}
			data = outStream.toByteArray();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if (outStream != null) {
				outStream.close();
			}
			if (inStream != null) {
				inStream.close();
			}
		}
		return data;
	}
	/**
	 * 获取身份证据
	 */
	private static String getStrCredential() {
		Document document = DocumentHelper.createDocument();
		Element root = document.addElement("root");
		root.addElement("org").addAttribute("code", "jkzl").addText("健康之路");
		root.addElement("visitor").addAttribute("type", "0").addAttribute("code", "jtqy").addAttribute("key", "jtqy").addText("健康之路");
		return document.asXML();// 身份证据
	}
	/**
	 * 将字符串转成unicode
	 * @param str 待转字符串
	 * @return unicode字符串
	 */
	private static String string2Unicode(String str) {
		str = (str == null ? "" : str);
		String tmp;
		StringBuffer sb = new StringBuffer(1000);
		char c;
		int i, j;
		sb.setLength(0);
		for (i = 0; i < str.length(); i++) {
			c = str.charAt(i);
			sb.append("\\u");
			j = (c >>> 8); // 取出高8位
			tmp = Integer.toHexString(j);
			if (tmp.length() == 1)
				sb.append("0");
			sb.append(tmp);
			j = (c & 0xFF); // 取出低8位
			tmp = Integer.toHexString(j);
			if (tmp.length() == 1)
				sb.append("0");
			sb.append(tmp);
		}
		return (new String(sb));
	}
	/******************************************************************************************/
	/**
	 * 使用默认服务地址
     */
	public static String post(String api, JSONArray params) throws Exception {
		return post(defaultUrl,defaultNamespace,api,params);
	}
	public static String post(String urlString,String namespace,String api,JSONArray params) throws Exception{
		String body = getRequestBody(api,params);
		return post(urlString,namespace,api,body);
	}
	/**
	 * webservice 调用接口
     */
	public static String post(String urlString,String namespace,String api, String body) throws Exception {
		OutputStream out = null;
		try {
			URL url = new URL(urlString);
			HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
			httpConn.setRequestProperty("Content-Length", String.valueOf(body.length()));
			httpConn.setRequestProperty("Content-Type", "text/xml; charset=utf-8");
			httpConn.setRequestProperty("soapActionString", namespace + api);
			httpConn.setRequestMethod("POST");
			httpConn.setDoOutput(true);
			httpConn.setDoInput(true);
			out = httpConn.getOutputStream();
			out.write(body.getBytes());
			byte[] datas = readInputStream(httpConn.getInputStream());
			String result = new String(datas, "UTF-8");
			Document document = DocumentHelper.parseText(result);
			Element rootElement = document.getRootElement();
			Element bodyElement = rootElement.element("Body");
			Element responseElement = bodyElement.element(api + "Response");
			Element resultElement = responseElement.element(api + "Result");
			return resultElement.getText();
		} catch (Exception e) {
			System.out.print("urlString:"+urlString +" "+namespace+api);
			e.printStackTrace();
			throw e;
		} finally {
			if (out != null) {
				out.close();
				out.flush();
			}
		}
	}
	/**
	 * 对称加密后结果
	 */
	public static String[] getCredential(String strCondition, boolean credential) throws UnsupportedEncodingException {
		String strCredential = null;
		String condition = null;
		String strKey = null;
		// 生成临时对称密钥bKEY
		if (bKEY == null) {
			bKEY = sehrCrypto.sehrCrypto.GenerateKey128();
		}
		if (credential) {
			// 对身份证据Compress()压缩
			byte[] bSource = getStrCredential().getBytes("UTF-16LE");
			byte[] pbyteSource = sehrCrypto.sehrCrypto.Compress(bSource);
			// 采用bKEY对称加密Encrypt()
			byte[] encryptSource = sehrCrypto.sehrCrypto.Encrypt(pbyteSource, bKEY);
			// 再编码EncodeU()
			strCredential = new String(sehrCrypto.sehrCrypto.EncodeU(encryptSource));
		}
		if (StringUtils.isNotEmpty(strCondition)) {
			// 对身份证据Compress()压缩
			byte[] pbyteSource = sehrCrypto.sehrCrypto.Compress(strCondition.getBytes("UTF-16LE"));
			// 采用bKEY对称加密Encrypt()
			byte[] encryptSource = sehrCrypto.sehrCrypto.Encrypt(pbyteSource, bKEY);
			// 再编码EncodeU()
			condition = new String(sehrCrypto.sehrCrypto.EncodeU(encryptSource));
		}
		byte[] bKeyRsa = sehrCrypto.sehrCrypto.RSAEncrypt(bKEY, publicKey);
		strKey = new String(sehrCrypto.sehrCrypto.EncodeU(bKeyRsa));
		return new String[] { condition, strCredential, strKey };
	}
}

+ 29 - 0
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/common/util/SpringContextHolder.java

@ -0,0 +1,29 @@
package com.yihu.wlyy.service.common.util;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.context.annotation.Configuration;
@Configuration
public class SpringContextHolder implements ApplicationContextAware {
    @Autowired
    private static ApplicationContext context;
    @Override
    public void setApplicationContext(ApplicationContext context) throws BeansException {
        SpringContextHolder.context = context;
    }
    public static Object getSpringBean(String beanName) {
        return context == null ? null : context.getBean(beanName);
    }
    public static String[] getBeanDefinitionNames() {
        return context.getBeanDefinitionNames();
    }
}

+ 1126 - 0
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/common/util/StringUtil.java

@ -0,0 +1,1126 @@
package com.yihu.wlyy.service.common.util;
import org.apache.commons.lang3.StringUtils;
import java.io.IOException;
import java.io.StringWriter;
import java.io.UnsupportedEncodingException;
import java.io.Writer;
import java.sql.Clob;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class StringUtil {
    /**
     * 获取手机号码
     */
    public static String getTelnum(String sParam){
        if(sParam.length()<=0)
            return "";
        Pattern pattern = Pattern.compile("(1|861)(3|5|8)\\d{9}$*");
        Matcher matcher = pattern.matcher(sParam);
        StringBuffer bf = new StringBuffer();
        if (matcher.find(0)) {
            String re = matcher.group(0);
            return re;
        }
        else{
            return "";
        }
    }
    public static String substring(String str, int start) {
        return StringUtils.substring(str, start);
    }
    public static String substring(String str, int start, int end) {
        return StringUtils.substring(str, start, end);
    }
    public static boolean isBlank(String str) {
        return StringUtils.isBlank(str);
    }
    public static String toString(Object obj) {
        if (obj == null) {
            return null;
        }
        return obj.toString();
    }
    public static String trimLeft(String value) {
        if (value == null)
            return "";
        String result = value;
        char ch[] = result.toCharArray();
        int index = -1;
        for (int i = 0; i < ch.length; i++) {
            if (Character.isWhitespace(ch[i])) {
                index = i;
            } else {
                break;
            }
        }
        if (index != -1) {
            result = result.substring(index + 1);
        }
        return result;
    }
    public static String trimRight(String value) {
        if (value == null)
            return "";
        String result = value;
        char ch[] = result.toCharArray();
        int endIndex = -1;
        for (int i = ch.length - 1; i > -1; i--) {
            if (Character.isWhitespace(ch[i])) {
                endIndex = i;
            } else {
                break;
            }
        }
        if (endIndex != -1) {
            result = result.substring(0, endIndex);
        }
        return result;
    }
    public static String fillHeadCharsLen(String strOri, int len) {
        return fillHeadCharsLen(strOri, "0", len);
    }
    public static String fillBackCharsLen(String strOri, int len) {
        return fillBackCharsLen(strOri, "0", len);
    }
    public static String fillHeadCharsLen(String strOri, String subStr, int len) {
        if (strOri == null || strOri.trim().length() == 0) {
            strOri = "";
        }
        if (subStr == null) {
            subStr = " ";
        }
        String fillStr = "";
        for (int i = 0; i < len; i++) {
            fillStr = fillStr + subStr;
        }
        subStr = fillStr + strOri;
        return (subStr.substring(subStr.length() - len, subStr.length()));
    }
    public static String fillBackCharsLen(String strOri, String subStr, int len) {
        if (strOri == null || strOri.trim().length() == 0) {
            strOri = "";
        }
        if (subStr == null) {
            subStr = " ";
        }
        String fillStr = "";
        for (int i = 0; i < len; i++) {
            fillStr = fillStr + subStr;
        }
        subStr = strOri + fillStr;
        return (subStr.substring(0, len));
    }
    public static String fillHeadChars(String strOri, int counter) {
        return fillHeadChars(strOri, "0", counter);
    }
    public static String fillBackChars(String strOri, int counter) {
        return fillBackChars(strOri, "0", counter);
    }
    public static String fillHeadChars(String strOri, String subStr, int counter) {
        if (strOri == null || strOri.trim().length() == 0) {
            strOri = "";
        }
        if (counter <= 0 || subStr == null) {
            return strOri;
        }
        String fillStr = "";
        for (int i = 0; i < counter; i++) {
            fillStr = fillStr + subStr;
        }
        return (fillStr + strOri);
    }
    public static String fillBackChars(String strOri, String subStr, int counter) {
        if (strOri == null || strOri.trim().length() == 0) {
            strOri = "";
        }
        if (counter <= 0 || subStr == null) {
            return strOri;
        }
        String fillStr = "";
        for (int i = 0; i < counter; i++) {
            fillStr = fillStr + subStr;
        }
        return (strOri + fillStr);
    }
    public static boolean isEmpty(Object strObj) {
        if (strObj == null || strObj.toString().trim().length() < 1) {
            return true;
        } else {
            return false;
        }
    }
    public static boolean isStrEmpty(String str) {
        if ((str == null) || (str.trim().length() < 1) || "null".endsWith(str.toLowerCase())) {
            return true;
        } else {
            return false;
        }
    }
    public static String getValue(String str) {
        if (str == null) {
            return "";
        }
        if (str.trim().length() <= 0)
            return "";
        str = "H" + str;
        str = str.trim();
        str = str.substring(1);
        return str;
    }
    public static boolean chkTextLen(String text, int len) {
        if (text == null || text.length() > len) {
            return false;
        } else {
            return true;
        }
    }
    public static boolean chkTextTrimLen(String text, int len) {
        if (text == null || text.trim().length() > len) {
            return false;
        } else {
            return true;
        }
    }
    public static boolean isStrEn(String text) {
        for (int i = 0; i < text.length(); i++) {
            if (text.charAt(i) > 127) {
                return false;
            }
        }
        return true;
    }
    public static boolean isCharNum(char ch) {
        if (ch > 47 && ch < 58) {
            return true;
        } else {
            return false;
        }
    }
    public static boolean isStrNum(String str) {
        if (isStrEmpty(str)) {
            return true;
        }
        boolean notNum = false;
        for (int i = 0; i < str.length(); i++) {
            if (!isCharNum(str.charAt(i))) {
                notNum = true;
            }
        }
        return !notNum;
    }
    public static boolean isNum(String strSrc) throws Exception {
        for (int i = 0; i < strSrc.length(); i++) {
            if (!isCharNum(strSrc.charAt(i)))
                return false;
        }
        return true;
    }
    public static boolean isCharLetter(char ch) {
        if ((ch >= 65 && ch <= 90) && (ch >= 97 && ch <= 122)) {
            return true;
        } else {
            return false;
        }
    }
    public static boolean isStrLetter(String str) {
        if (isStrEmpty(str))
            return true;
        boolean notLetter = false;
        for (int i = 0; i < str.length(); i++) {
            if (!isCharLetter(str.charAt(i))) {
                notLetter = true;
            }
        }
        return !notLetter;
    }
    public static char strToChar(String src) {
        src = src.trim();
        char result = src.charAt(0);
        return result;
    }
    public static String encodeSQL(String sql) {
        StringBuffer tempBuff = new StringBuffer();
        for (int i = 0; i < sql.length(); i++) {
            tempBuff.append(Integer.toHexString(sql.charAt(i)));
        }
        return tempBuff.toString();
    }
    public static String decodeSQL(String encoded) {
        StringBuffer tempBuff = new StringBuffer();
        for (int i = 0; i < encoded.length(); i += 2) {
            tempBuff.append((char) Integer.parseInt(
                    encoded.substring(i, i + 2), 16));
        }
        return tempBuff.toString();
    }
    public static String getAbsolutePath(String path1, String context1) {
        int i1 = path1.indexOf(context1);
        if (i1 < 0) {
            return path1;
        } else {
            return path1.substring(path1.indexOf(context1) + context1.length());
        }
    }
    public static String getSubString(String str1, int sindex, int eindex) {
        if (str1 == null) {
            return "";
        }
        if (str1.trim().length() <= 0)
            return "";
        if (str1.length() > sindex) {
            if (eindex >= 0)
                return str1.substring(sindex, eindex);
            else if (eindex < 0)
                return str1.substring(sindex);
        }
        return "";
    }
    public static String[] getValues(String[] strs, int size1) {
        String[] strs1 = new String[size1];
        for (int i = 0; i < size1; i++) {
            strs1[i] = "";
        }
        if (strs == null) {
            return strs1;
        } else {
            if (strs.length < size1) {
                for (int i = 0; i < strs.length; i++) {
                    strs1[i] = strs[i];
                }
                return strs1;
            } else {
                return strs;
            }
        }
    }
    public static String replaceStrAll(String strSource, String strFrom,
                                       String strTo) {
        String strDest = "";
        int intFromLen = strFrom.length();
        int intPos;
        while ((intPos = strSource.indexOf(strFrom)) != -1) {
            strDest = strDest + strSource.substring(0, intPos);
            strDest = strDest + strTo;
            strSource = strSource.substring(intPos + intFromLen);
        }
        strDest = strDest + strSource;
        return strDest;
    }
    public static String replaceStr(String strTarget, String strNew) {
        int iIndex = -1;
        while (true) {
            iIndex = strTarget.indexOf('\n');
            if (iIndex < 0) {
                break;
            }
            String strTemp = null;
            strTemp = strTarget.substring(0, iIndex);
            strTarget = strTemp + strNew + strTarget.substring(iIndex + 1);
        }
        return strTarget;
    }
    public static boolean includestr(String str1, String[] strarray) {
        if (strarray == null || strarray.length <= 0)
            return false;
        for (int i = 0; i < strarray.length; i++) {
            if (strarray[i] == null) {
                if (str1 == null)
                    return true;
                else
                    continue;
            }
            if (strarray[i].trim().equals(str1)) {
                return true;
            }
        }
        return false;
    }
    public static String[] getAreaValues(String fvalue) {
        String tmpstr = fvalue;
        int i = 0;
        if (tmpstr == null)
            return null;
        if (tmpstr.trim().equals(""))
            return null;
        while (tmpstr.indexOf("\n") >= 0) {
            i++;
            tmpstr = tmpstr.substring(tmpstr.indexOf("\n") + 1);
        }
        if (tmpstr.trim().equals("")) {
            i--;
        }
        String[] fvalues = new String[i + 1];
        tmpstr = fvalue;
        i = 0;
        while (tmpstr.indexOf("\n") >= 0) {
            fvalues[i] = tmpstr.substring(0, tmpstr.indexOf("\n"));
            if (fvalues[i].indexOf("\r") >= 0)
                fvalues[i] = fvalues[i].substring(0, fvalues[i].indexOf("\r"));
            i++;
            tmpstr = tmpstr.substring(tmpstr.indexOf("\n") + 1);
        }
        if (!tmpstr.trim().equals(""))
            fvalues[i] = tmpstr;
        return fvalues;
    }
    public static String getrealAreaValues(String fvalue) {
        String tmpstr = fvalue;
        String returnstr = "";
        if (tmpstr == null)
            return null;
        if (tmpstr.trim().equals(""))
            return "";
        while (tmpstr.indexOf("|") > 0) {
            returnstr += tmpstr.substring(0, tmpstr.indexOf("|")) + "\n";
            tmpstr = tmpstr.substring(tmpstr.indexOf("|") + 1);
        }
        return returnstr;
    }
    public static int countChar(String strInput, char chr) {
        int iCount = 0;
        char chrTmp = ' ';
        if (strInput.trim().length() == 0)
            return 0;
        for (int i = 0; i < strInput.length(); i++) {
            chrTmp = strInput.charAt(i);
            if (chrTmp == chr) {
                iCount++;
            }
        }
        return iCount;
    }
    public static String strArrayToStr(String[] strs) {
        return strArrayToStr(strs, null);
    }
    public static void printStrs(String[] strs) {
        for (int i = 0; i < strs.length; i++) {
            System.out.println(strs[i]);
        }
    }
    public static void printDualStr(String[][] dualStr) {
        for (int i = 0; i < dualStr.length; i++) {
            for (int j = 0; j < dualStr[i].length; j++) {
                System.out.print(dualStr[i][j] + " ");
            }
            System.out.println();
        }
    }
    public static String[][] rowToColumn(String[][] dualStr) {
        String[][] returnDualStr = null;
        if (dualStr != null) {
            returnDualStr = new String[dualStr[0].length][dualStr.length];
            for (int i = 0; i < dualStr.length; i++)
                for (int j = 0; j < dualStr[0].length; j++)
                    returnDualStr[j][i] = dualStr[i][j];
        }
        return returnDualStr;
    }
    public static String latinString(String inStr) {
        String res = inStr;
        if (null == res)
            return null;
        res = replaceStrAll(res, "\"", "\\\"");
        res = replaceStrAll(res, "'", "\\'");
        return res;
    }
    public static String replaceWhiteSpace(String strTarget, String strNew) {
        int iIndex = -1;
        while (true) {
            char cRep = 32;
            iIndex = strTarget.indexOf(cRep);
            if (iIndex < 0) {
                break;
            }
            String strTemp = null;
            strTemp = strTarget.substring(0, iIndex);
            strTarget = strTemp + strNew + strTarget.substring(iIndex + 1);
        }
        return strTarget;
    }
    public static String double2str(double amount, int length) {
        String strAmt = Double.toString(amount);
        int pos = strAmt.indexOf('.');
        if (pos != -1 && strAmt.length() > length + pos + 1)
            strAmt = strAmt.substring(0, pos + length + 1);
        return strAmt;
    }
    public static String[] doSplit(String str, char chr) {
        int iCount = 0;
        char chrTmp = ' ';
        // ?????????????????
        for (int i = 0; i < str.length(); i++) {
            chrTmp = str.charAt(i);
            if (chrTmp == chr) {
                iCount++;
            }
        }
        String[] strArray = new String[iCount];
        for (int i = 0; i < iCount; i++) {
            int iPos = str.indexOf(chr);
            if (iPos == 0) {
                strArray[i] = "";
            } else {
                strArray[i] = str.substring(0, iPos);
            }
            str = str.substring(iPos + 1); // ??iPos+1??????,str????????��
        }
        return strArray;
    }
    public static String[] strSplit(String src, String splitchar) {
        int resultSize = 0;
        int len = src.length();
        int idx = 0;
        String strTemp = "";
        for (int i = 0; i < len; i++) {
            if (src.substring(i, i + 1).equals(splitchar)) {
                resultSize++;
            }
        }
        if ((len > 1) & (!src.substring(len - 1, len).equals(splitchar))) {
            resultSize++;
        }
        String result[] = new String[resultSize];
        for (int i = 0; i < len; i++) {
            if (src.substring(i, i + 1).equals(splitchar)) {
                result[idx] = strTemp;
                idx++;
                strTemp = "";
            } else {
                strTemp = String.valueOf(strTemp)
                        + String.valueOf(src.charAt(i));
            }
        }
        if (!strTemp.equals("")) {
            result[idx] = strTemp;
        }
        return result;
    }
    public static String[] split(String strToSplit, String strSeparator,
                                 int iLimit) {
        ArrayList tmpList = new ArrayList();
        int iFromIndex = 0;
        int iCurIndex = strToSplit.length();
        String strUnitInfo = "";
        int iCurCounts = 0;
        while ((iCurIndex != -1) && (iFromIndex < strToSplit.length())
                && (iCurCounts < iLimit)) {
            iCurIndex = strToSplit.indexOf(strSeparator, iFromIndex);
            if (iCurIndex == -1) {
                strUnitInfo = strToSplit.substring(iFromIndex, strToSplit
                        .length());
            } else {
                strUnitInfo = strToSplit.substring(iFromIndex, iCurIndex);
                iFromIndex = iCurIndex + 1;
            }
            tmpList.add(strUnitInfo);
            iCurCounts++;
        }
        int iCounts = tmpList.size();
        String tmpArray[] = new String[iCounts];
        for (int i = 0; i < iCounts; i++) {
            tmpArray[i] = (String) tmpList.get(i);
        }
        return tmpArray;
    }
    public static String strIntercept(String src, int len) {
        if (src == null) {
            return "";
        }
        if (src.length() > len) {
            src = String.valueOf(String.valueOf(src.substring(0, len))).concat(
                    "...");
        }
        return src;
    }
    public static String strtochn(String str_in) {
        try {
            String temp_p = str_in;
            if (temp_p == null) {
                temp_p = "";
            }
            String temp = "";
            if (!temp_p.equals("")) {
                byte[] byte1 = temp_p.getBytes("ISO8859_1");
                temp = new String(byte1);
            }
            return temp;
        } catch (Exception e) {
        }
        return "null";
    }
    public static String ISO2GBK(String strvalue) {
        try {
            if (strvalue == null)
                return null;
            else {
                strvalue = new String(strvalue.getBytes("ISO8859_1"), "GBK");
                return strvalue;
            }
        } catch (Exception e) {
            return null;
        }
    }
    /**
     * ***************************************************** ??
     * ?????????????????????��?????? ????????param str ??????????????? ????????? ?? ???return String
     * ????????????? ??????? ******************************************************
     */
    public static String cnCodeTrans(String str) {
        String s = "";
        try {
            s = new String(str.getBytes("GB2312"), "8859_1");
        } catch (UnsupportedEncodingException a) {
            System.out.print("chinese thansform exception");
        }
        return s;
    }
    /**
     * ***************************************************** ??
     * ????��?????????????????STaaaa????ST****** ????????param strSource???????????????param
     * strRule???? ????????? ?? ???return false:???????????true:????????? ???????
     * ******************************************************
     */
    public static boolean judgeMatch(String strSource, String strRule) {
        int i = 0;
        // ????????��?
        if ((null == strSource) || (strSource.length() == 0))
            return false;
        // ????????��?
        if ((null == strRule) || (strRule.length() == 0))
            return false;
        // ??????????
        if (strSource.length() > strRule.length())
            return false;
        // ??��???��?
        for (i = 0; i < strRule.length(); i++) {
            // ?????????
            if (strSource.length() < i + 1) {
                break;
            }
            if ((strRule.charAt(i) != '*')
                    && (strSource.charAt(i) != strRule.charAt(i))) {
                return false;
            }
        }
        // ??????????????????????????????'*'?????????
        for (; i < strRule.length(); i++) {
            if (strRule.charAt(i) != '*')
                return false;
        }
        return true;
    }
    public static String column2Property(String column) {
        column = column.toLowerCase();
        int i = column.indexOf("_");
        while (i != -1) {
            if (i != column.length() - 1) {
                char temp = column.charAt(i + 1);
                String strTemp = String.valueOf(temp);
                column = column.replaceFirst("_" + strTemp, strTemp
                        .toUpperCase());
                i = column.indexOf("_");
            } else {
                break;
            }
        }
        return column;
    }
    public static String strArrayToStr(String[] strs, String separator) {
        StringBuffer returnstr = new StringBuffer("");
        if (strs == null)
            return "";
        if (separator == null)
            separator = "";
        for (int i = 0; i < strs.length; i++) {
            returnstr.append(strs[i]);
            if (i < strs.length - 1)
                returnstr.append(separator);
        }
        return returnstr.toString();
    }
    public static String objectArrayToStr(Object[] objects, String separator) {
        StringBuffer returnstr = new StringBuffer("");
        if (objects == null)
            return "";
        if (separator == null)
            separator = "";
        for (int i = 0; i < objects.length; i++) {
            returnstr.append(String.valueOf(objects[i]));
            if (i < objects.length - 1)
                returnstr.append(separator);
        }
        return returnstr.toString();
    }
    public static String listToStr(List element, String separator) {
        StringBuffer returnstr = new StringBuffer("");
        if (element == null)
            return "";
        if (separator == null)
            separator = "";
        Iterator it = element.iterator();
        while (it.hasNext()) {
            returnstr.append(String.valueOf(it.next()));
            if (it.hasNext())
                returnstr.append(separator);
        }
        return returnstr.toString();
    }
    public static String[] listToStrArray(List element) {
        if (element == null || element.size() == 0)
            return null;
        Iterator it = element.iterator();
        String[] strArray = new String[element.size()];
        int i = 0;
        while (it.hasNext()) {
            strArray[i] = String.valueOf(it.next());
            i++;
        }
        return strArray;
    }
    public static List strToList(String str, String separator) {
        if (str == null || str.equals(""))
            return null;
        if (separator == null)
            separator = "";
        String[] strArr = str.split(separator);
        int size = strArr.length;
        List list = new ArrayList();
        for (int i = 0; i < size; i++) {
            list.add(strArr[i]);
        }
        return list;
    }
    public static StringBuffer populate(StringBuffer bf, String value,
                                        boolean isNotLast) {
        if (value == null) {
            return bf;
        }
        // ???????????????????�I??????????????????????????????SQL???????????
        System.out.println(value.replaceAll("'", "''"));
        bf.append("'").append(value.replaceAll("'", "''")).append("'");
        if (isNotLast)
            bf.append(",");
        return bf;
    }
    public static boolean isExist(String str, String substr, String sepatator) {
        if (str == null || str.trim().equals(""))
            return false;
        if (substr == null || substr.trim().equals(""))
            return false;
        String[] strArr = str.split(sepatator);
        int size = strArr.length;
        for (int i = 0; i < size; i++) {
            if (strArr[i].equals(substr))
                return true;
        }
        return false;
    }
    public static boolean isExist(String str, String substr) {
        return isExist(str, substr, ",");
    }
    public static String leftInclude(String str) {
        if (str == null || str.equals(""))
            return str;
        return str + "%";
    }
    public static String rightInclude(String str) {
        if (str == null || str.equals(""))
            return str;
        return "%" + str;
    }
    public static String include(String str) {
        if (str == null || str.equals(""))
            return str;
        return "%" + str + "%";
    }
    public static String nvl(Object source, Object target) {
        return source != null ? String.valueOf(source)
                : (target != null ? String.valueOf(target) : null);
    }
    public static String clob2Str(Object clobValue) throws SQLException {
        return ((Clob) clobValue).getSubString(1, (int) ((Clob) clobValue)
                .length());
    }
    public static String hideFlowStr(String str, int maxLen) {
        if (str == null || maxLen == 0) {
            return "";
        }
        if (str.length() > maxLen) {
            str = str.substring(0, maxLen) + "...";
        }
        return str;
    }
    public static String escapeLuceneSpecialCharacters(String str) {
        if (str == null) {
            return null;
        }
        try {
            StringWriter writer = new StringWriter(str.length() * 2);
            escapeLuceneSpecialCharacterString(writer, str);
            return writer.toString();
        } catch (IOException ex) {
            //LogService.getLogger(StringUtil.class).error(ex.getMessage());
            return null;
        }
    }
    private static void escapeLuceneSpecialCharacterString(Writer out,
                                                           String str) throws IOException {
        if (str == null) {
            return;
        }
        int sz = str.length();
        for (int i = 0; i < sz; i++) {
            char ch = str.charAt(i);
            /*
             * Reference link:
			 * http://lucene.apache.org/java/docs/queryparsersyntax.html Lucene
			 * supports escaping special characters that are part of the query
			 * syntax. The current list special characters are: + - && || ! ( ) { } [ ] ^ " ~ * ? : \
			 * To escape these character use the \ before the character.
			 */
            switch (ch) {
                case '+':
                case '-':
                case '!':
                case '(':
                case ')':
                case '{':
                case '}':
                case '[':
                case ']':
                case '^':
                case '\"':
                case '~':
                case '*':
                case '?':
                case ':':
                case '\\':
                    out.write('\\');
                    out.write(ch);
                    break;
                case '&':
                case '|':
                    // check if it is '&&' or '||' ~ check if the next char is '&'
                    // or '|'
                    if ((i + 1) < sz && str.charAt(i + 1) == ch) {
                        out.write('\\');
                        out.write(ch);
                        i++;
                    }
                    out.write(ch);
                    break;
                default:
                    out.write(ch);
                    break;
            }
        }
    }
    public static String getFirstLetter(String chinese) {
        final int[] li_SecPosValue = {1601, 1637, 1833, 2078, 2274, 2302,
                2433, 2594, 2787, 3106, 3212, 3472, 3635, 3722, 3730, 3858,
                4027, 4086, 4390, 4558, 4684, 4925, 5249, 5590};
        final String[] lc_FirstLetter = {"A", "B", "C", "D", "E", "F", "G",
                "H", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T",
                "W", "X", "Y", "Z"};
        if (chinese == null || chinese.trim().length() == 0) {
            return "";
        }
        chinese = conversionStr(chinese, "GB2312", "ISO8859-1");
        if (chinese.length() > 1) { // ?��?????????
            int li_SectorCode = (int) chinese.charAt(0); // ????????
            int li_PositionCode = (int) chinese.charAt(1); // ????��??
            li_SectorCode = li_SectorCode - 160;
            li_PositionCode = li_PositionCode - 160;
            int li_SecPosCode = li_SectorCode * 100 + li_PositionCode;// ??????��??
            if (li_SecPosCode > 1600 && li_SecPosCode < 5590) {
                for (int i = 0; i < 23; i++) {
                    if (li_SecPosCode >= li_SecPosValue[i]
                            && li_SecPosCode < li_SecPosValue[i + 1]) {
                        chinese = lc_FirstLetter[i];
                        break;
                    }
                }
            } else {
                chinese = conversionStr(chinese, "ISO8859-1", "GB2312");
                chinese = chinese.substring(0, 1);
            }
        }
        return chinese;
    }
    private static String conversionStr(String str, String charsetName,
                                        String toCharsetName) {
        try {
            str = new String(str.getBytes(charsetName), toCharsetName);
        } catch (UnsupportedEncodingException ex) {
        }
        return str;
    }
    public static String checkStr(String html) {
        try {
            html = html.replaceAll("\r", "");
            html = html.replaceAll("\n", "");
            html = html.replaceAll("\"", "'");
            html = html.replaceAll("\t", " ");
            Pattern p_script;
            Matcher m_script;
            Pattern p_href;
            Matcher m_href;
            Pattern p_a;
            Matcher m_a;
            Pattern p_on;
            Matcher m_on;
            Pattern p_iframe;
            Matcher m_iframe;
            Pattern p_frameset;
            Matcher m_frameset;
            Pattern p_img;
            Matcher m_img;
            Pattern p_p1;
            Matcher m_p1;
            Pattern p_p2;
            Matcher m_p2;
            String stript_str = "<script[\\s\\S]+</script *>";
            String href_str = " href *= *[\\s\\S]*script *:";
            String on_str = " on[\\s\\S]*=";
            String iframe_str = "<iframe[\\s\\S]+</iframe *>";
            String frameset_str = "<frameset[\\s\\S]+</frameset *>";
            String a_str = "<a ([^>])*>.*?</a([^>])*>";
            //String img_str = "\\<img[^\\>]+\\>";
            String p_str1 = "</p>";
            String p_str2 = "<p>";
            p_script = Pattern.compile(stript_str, Pattern.CASE_INSENSITIVE);
            m_script = p_script.matcher(html);
            html = m_script.replaceAll(""); // ????script???
            p_href = Pattern.compile(href_str, Pattern.CASE_INSENSITIVE);
            m_href = p_href.matcher(html);
            html = m_href.replaceAll(""); // ????script???
            p_a = Pattern.compile(a_str, Pattern.CASE_INSENSITIVE);
            m_a = p_a.matcher(html);
            html = m_a.replaceAll(""); // ????script???
            p_on = Pattern.compile(on_str, Pattern.CASE_INSENSITIVE);
            m_on = p_on.matcher(html);
            html = m_on.replaceAll(""); // ????script???
            p_iframe = Pattern.compile(iframe_str, Pattern.CASE_INSENSITIVE);
            m_iframe = p_iframe.matcher(html);
            html = m_iframe.replaceAll(""); // ????script???
            p_frameset = Pattern
                    .compile(frameset_str, Pattern.CASE_INSENSITIVE);
            m_frameset = p_frameset.matcher(html);
            html = m_frameset.replaceAll(""); // ????script???
            // p_img = Pattern.compile(img_str, Pattern.CASE_INSENSITIVE);
            // m_img = p_img.matcher(html);
            // html = m_img.replaceAll(""); // ????script???
            p_p1 = Pattern.compile(p_str1, Pattern.CASE_INSENSITIVE);
            m_p1 = p_p1.matcher(html);
            html = m_p1.replaceAll(""); // ????script???
            p_p2 = Pattern.compile(p_str2, Pattern.CASE_INSENSITIVE);
            m_p2 = p_p2.matcher(html);
            html = m_p2.replaceAll(""); // ????script???
        } catch (Exception e) {
            System.err.println("Html2Text: " + e.getMessage());
        }
        return html;
    }
    public static String substr(String value, int maxlength, String postfix) {
        int k = 0;
        int l = 0;
        for (int i = 0; i < value.length() && maxlength > l * 2 + k; i++) {
            if (value.charAt(i) > '\200') {
                l++;
            } else {
                k++;
            }
        }
        if (l + k >= value.length()) {
            return value;
        } else if (maxlength >= l * 2 + k && l + k > 0) {
            value = value.substring(0, l + k);
        } else if (l + k > 0) {
            value = value.substring(0, (l + k) - 1);
        } else {
            return value;
        }
        if (!StringUtils.isEmpty(postfix)) {
            value += postfix;
        }
        return value;
    }
    public String nullToSpace(String Content) {
        if (Content == null) {
            Content = "";
        }
        return Content;
    }
    public String GBK2ISO(String strvalue) throws Exception {
        try {
            if (strvalue == null)
                return null;
            else {
                strvalue = new String(strvalue.getBytes("GBK"), "ISO8859_1");
                return strvalue;
            }
        } catch (Exception e) {
            return null;
        }
    }
    public static   String replaceBlank(String str) {
        String dest = "";
        if (str!=null) {
            Pattern p = Pattern.compile("\\s*|\t|\r|\n");
            Matcher m = p.matcher(str);
            dest = m.replaceAll("");
        }
        return dest;
    }
}

+ 15 - 0
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/common/util/UUIDUtil.java

@ -0,0 +1,15 @@
package com.yihu.wlyy.service.common.util;
import java.util.UUID;
public class UUIDUtil {
    /**
     *获取UUID
     * @return
     */
    public static String getUUID()
    {
        return UUID.randomUUID().toString().replaceAll("-", "");
    }
}

+ 56 - 0
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/common/util/WebserviceUtil.java

@ -0,0 +1,56 @@
package com.yihu.wlyy.service.common.util;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import javax.xml.namespace.QName;
import java.util.Map;
/**
 * Created by hzp on 2017/7/31.
 * webservice调用服务
 **/
public class WebserviceUtil {
    /**
     * webservice 调用接口
     */
    public static String post(String urlString,String namespace,String api, Map<String,String> params) throws Exception {
        try {
            Service service = new Service();
            Call call = (Call) service.createCall();// 通过service创建call对象
            // 设置service所在URL
            call.setTargetEndpointAddress(new java.net.URL(urlString));
            call.setOperationName(new QName(namespace, api));
            call.setUseSOAPAction(true);
            Object[] objs = null;
            if(params!=null && params.size()>0)
            {
                objs = new Object[params.size()];
                int i=0;
                for(String key : params.keySet())
                {
                    call.addParameter(new QName(key), org.apache.axis.encoding.XMLType.XSD_STRING,javax.xml.rpc.ParameterMode.IN);//接口的参数
                    objs[i] = params.get(key);
                    i++;
                }
            }
            call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);//设置返回类型
            String  ret = (String )call.invoke(objs);
            return ret.toString();
        } catch (Exception e) {
            System.out.print("urlString:"+urlString +" "+namespace+api);
            e.printStackTrace();
            throw e;
        }
    }
}

+ 111 - 0
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/controller/ArchivesController.java

@ -0,0 +1,111 @@
package com.yihu.wlyy.service.controller;
import com.yihu.wlyy.service.common.model.Result;
import com.yihu.wlyy.service.service.ArchivesService;
import com.zoe.phip.ssp.sdk.ApiException;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
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.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
/**
 * 智业服务接口
 * */
@Controller
@RequestMapping(value = "/third/archives/")
@Api(description = "智业档案服务接口")
public class ArchivesController {
	@Autowired
	private ArchivesService archivesService;
	/********************************* 居民档案相关接口 ****************************************************************/
	@RequestMapping(value = "getEhrSickMedicalList",method = RequestMethod.POST)
	@ResponseBody
	@ApiOperation("查询居民健康体检列表信息接口")
	public Result getEhrSickMedicalList(
			@ApiParam(name="idcard",value="患者身份证",defaultValue = "350821201112240026")
			@RequestParam(value="idcard",required = true) String idcard){
		try {
			String response = archivesService.getEhrSickMedicalList(idcard);
			return Result.success("查询居民健康体检列表成功!",response);
		} catch (Exception ex) {
			if(ex instanceof ApiException)
			{
				ApiException apiEx = (ApiException) ex;
				return Result.error(apiEx.errorCode(),ex.getMessage());
			}
			else{
				return Result.error(ex.getMessage());
			}
		}
	}
	@RequestMapping(value = "getEhrSickMedicalRecord",method = RequestMethod.POST)
	@ResponseBody
	@ApiOperation("查询居民健康体检详情接口")
	public Result getEhrSickMedicalRecord(
			@ApiParam(name="medicalNo",value="体检ID",defaultValue = "")
			@RequestParam(value="medicalNo",required = true) String medicalNo){
		try {
			String response = archivesService.getEhrSickMedicalRecord(medicalNo);
			return Result.success("查询居民健康体检列表成功!",response);
		} catch (Exception ex) {
			if(ex instanceof ApiException)
			{
				ApiException apiEx = (ApiException) ex;
				return Result.error(apiEx.errorCode(),ex.getMessage());
			}
			else{
				return Result.error(ex.getMessage());
			}
		}
	}
	@RequestMapping(value = "uploadFollowup",method = RequestMethod.POST)
	@ResponseBody
	@ApiOperation("上传随访记录接口")
	public Result uploadFollowup(@ApiParam(name="id",value="随访记录id",defaultValue = "4")
								  @RequestParam(value="id",required = true) Long id){
		try {
			archivesService.uploadFollowup(id);
			return Result.success("上传随访记录成功!");
		} catch (Exception ex) {
			if(ex instanceof ApiException)
			{
				ApiException apiEx = (ApiException) ex;
				return Result.error(apiEx.errorCode(),ex.getMessage());
			}
			else{
				return Result.error(ex.getMessage());
			}
		}
	}
	@RequestMapping(value = "uploadHealthIndex",method = RequestMethod.POST)
	@ResponseBody
	@ApiOperation("上传体征指标接口")
	public Result uploadHealthIndex(@ApiParam(name="id",value="体征记录id",defaultValue = "5226")
									 @RequestParam(value="id",required = true) Long id){
		try {
			archivesService.uploadHealthIndex(id);
			return Result.success("上传体征指标数据成功!");
		} catch (Exception ex) {
			if(ex instanceof ApiException)
			{
				ApiException apiEx = (ApiException) ex;
				return Result.error(apiEx.errorCode(),ex.getMessage());
			}
			else{
				return Result.error(ex.getMessage());
			}
		}
	}
}

+ 248 - 0
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/controller/GuahaoController.java

@ -0,0 +1,248 @@
package com.yihu.wlyy.service.controller;
import com.yihu.wlyy.service.common.model.Result;
import com.yihu.wlyy.service.entity.PatientReservation;
import com.yihu.wlyy.service.service.guahao.GuahaoDoctor;
import com.yihu.wlyy.service.service.guahao.GuahaoService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
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.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
 * 智业服务接口
 * */
@Controller
@RequestMapping(value = "/third/guahao/")
@Api(description = "智业预约服务接口")
public class GuahaoController {
	@Autowired
	GuahaoService guahaoService;
	@RequestMapping(value = "GetOrgList",method = RequestMethod.POST)
	@ResponseBody
	@ApiOperation("获取医院列表")
	public Result GetOrgList(@ApiParam(name="type",value="1医院 2社区") @RequestParam String type)
	{
		try {
			List<Map<String, String>> list = guahaoService.GetOrgList(type);
			return Result.success("获取医院列表成功!",list);
		} catch (Exception ex) {
			ex.printStackTrace();
			return Result.error(ex.getMessage());
		}
	}
	@RequestMapping(value = "GetOrgDepList",method = RequestMethod.POST)
	@ResponseBody
	@ApiOperation("获取科室接口")
	public Result GetOrgDepList(@ApiParam(name="hospitalId",value="机构代码") @RequestParam String hospitalId)
	{
		try {
			List<Map<String, String>> list = guahaoService.GetOrgDepList(hospitalId);
			return Result.success("获取科室列表成功!",list);
		} catch (Exception ex) {
			ex.printStackTrace();
			return Result.error(ex.getMessage());
		}
	}
	@RequestMapping(value = "GetDoctorList",method = RequestMethod.POST)
	@ResponseBody
	@ApiOperation("获取医生列表接口")
	public Result GetDoctorList(@ApiParam(name="hospitalId",value="机构代码") @RequestParam String hospitalId,
								@ApiParam(name="hosDeptId",value="科室代码") @RequestParam String hosDeptId)
	{
		try {
			List<GuahaoDoctor> list = guahaoService.GetDoctorList(hospitalId,hosDeptId);
			return Result.success("获取医生列表成功!",list);
		} catch (Exception ex) {
			ex.printStackTrace();
			return Result.error(ex.getMessage());
		}
	}
	/**
	 * status 0 停诊、1正常、2满号、3已过期
	 */
	@RequestMapping(value = "GetDoctorArrange",method = RequestMethod.POST)
	@ResponseBody
	@ApiOperation("获取医生排班接口(包含排班详细)")
	public Result GetDoctorArrange(@ApiParam(name="hospitalId",value="机构代码") @RequestParam String hospitalId,
								   @ApiParam(name="hosDeptId",value="科室代码") @RequestParam String hosDeptId,
								   @ApiParam(name="doctorId",value="医生代码") @RequestParam String doctorId)
	{
		try {
			List<Map<String, Object>> list = guahaoService.GetDoctorArrange(hospitalId,hosDeptId,doctorId);
			return Result.success("获取医生排班成功!",list);
		} catch (Exception ex) {
			ex.printStackTrace();
			return Result.error(ex.getMessage());
		}
	}
	/**
	 * status 0 停诊、1正常、2满号、3已过期
	 */
	@RequestMapping(value = "GetDoctorArrangeSimple",method = RequestMethod.POST)
	@ResponseBody
	@ApiOperation("获取医生排班接口(一级)")
	public Result GetDoctorArrangeSimple(@ApiParam(name="hospitalId",value="机构代码") @RequestParam String hospitalId,
										 @ApiParam(name="hosDeptId",value="科室代码") @RequestParam String hosDeptId,
										 @ApiParam(name="doctorId",value="医生代码") @RequestParam String doctorId)
	{
		try {
			List<Map<String, String>> list = guahaoService.GetDoctorArrangeSimple(hospitalId,hosDeptId,doctorId);
			return Result.success("获取医生一级排班成功!",list);
		} catch (Exception ex) {
			ex.printStackTrace();
			return Result.error(ex.getMessage());
		}
	}
	@RequestMapping(value = "CreateOrder",method = RequestMethod.POST)
	@ResponseBody
	@ApiOperation("创建挂号单")
	public Result CreateOrder(@ApiParam(name="hospitalId",value="机构代码") @RequestParam String hospitalId,
							  @ApiParam(name="hospitalName",value="机构名称") @RequestParam String hospitalName,
							  @ApiParam(name="hosDeptId",value="科室代码") @RequestParam String hosDeptId,
							  @ApiParam(name="hosDeptName",value="科室名称") @RequestParam String hosDeptName,
							  @ApiParam(name="doctorId",value="医生代码") @RequestParam String doctorId,
							  @ApiParam(name="doctorName",value="医生名称") @RequestParam String doctorName,
							  @ApiParam(name="arrangeDate",value="排班时间") @RequestParam String arrangeDate,
							  @ApiParam(name="patient",value="患者代码") @RequestParam String patient,
							  @ApiParam(name="patientName",value="患者名称") @RequestParam String patientName,
							  @ApiParam(name="cardNo",value="身份证号码") @RequestParam String cardNo,
							  @ApiParam(name="clinicCard",value="社保卡号") @RequestParam String clinicCard,
							  @ApiParam(name="patientPhone",value="患者手机") @RequestParam String patientPhone) throws Exception
	{
		try {
			String re = guahaoService.CreateOrder( hospitalId, hospitalName, hosDeptId, hosDeptName, doctorId, doctorName, arrangeDate, patient, patientName, cardNo, clinicCard, patientPhone);
			return Result.success("创建挂号单成功!",re);
		} catch (Exception ex) {
			ex.printStackTrace();
			return Result.error(ex.getMessage());
		}
	}
	@RequestMapping(value = "CancelOrder",method = RequestMethod.POST)
	@ResponseBody
	@ApiOperation("取消挂号单")
	public Result CancelOrder(@ApiParam(name="orderId",value="单号ID") @RequestParam String orderId,
							  @ApiParam(name="clinicCard",value="社保卡号") @RequestParam String clinicCard)
	{
		try {
			Boolean re = guahaoService.CancelOrder( orderId, clinicCard);
			return Result.success("取消挂号单成功!",re);
		} catch (Exception ex) {
			ex.printStackTrace();
			return Result.error(ex.getMessage());
		}
	}
	@RequestMapping(value = "GetDoctorInfo",method = RequestMethod.POST)
	@ResponseBody
	@ApiOperation("获取医生信息")
	public Result GetDoctorInfo(@ApiParam(name="doctorId",value="医生代码") @RequestParam String doctorId,
								@ApiParam(name="hospitalId",value="机构代码") @RequestParam String hospitalId,
								@ApiParam(name="hosDeptId",value="科室代码") @RequestParam String hosDeptId)
	{
		try {
			GuahaoDoctor re = guahaoService.GetDoctorInfo(doctorId,hospitalId,hosDeptId);
			return Result.success("获取医生信息成功!",re);
		} catch (Exception ex) {
			ex.printStackTrace();
			return Result.error(ex.getMessage());
		}
	}
	/**
	 * 0 撤销 1 确认 2 已诊  3停诊
	 */
	@RequestMapping(value = "GetOrderStatus",method = RequestMethod.POST)
	@ResponseBody
	@ApiOperation("获取预约状态")
	public Result GetOrderStatus(@ApiParam(name="hospitalId",value="机构代码") @RequestParam String hospitalId,
								  @ApiParam(name="orderId",value="订单ID") @RequestParam String orderId,
								  @ApiParam(name="clinicCard",value="社保卡号") @RequestParam String clinicCard)
	{
		try {
			Integer re = guahaoService.GetOrderStatus(hospitalId,orderId,clinicCard);
			return Result.success("获取预约状态成功!",re);
		} catch (Exception ex) {
			ex.printStackTrace();
			return Result.error(ex.getMessage());
		}
	}
	/**
	 * 获取时间
	 */
	private static Date getMonthBefore(Date d, int month) {
		Calendar now = Calendar.getInstance();
		now.setTime(d);
		now.set(Calendar.MONTH, now.get(Calendar.MONTH) - month);
		return now.getTime();
	}
	@RequestMapping(value = "GetRegList",method = RequestMethod.POST)
	@ResponseBody
	@ApiOperation("根据患者医保卡获取近三个月的预约记录")
	public Result GetRegList(@ApiParam(name="patient",value="患者代码") @RequestParam String patient)
	{
		try {
			SimpleDateFormat sm = new SimpleDateFormat("yyyy-MM-dd");
			Date nowDate = new Date();
			Date oneMonthAfter = getMonthBefore(nowDate, -1);
			Date threeMonthBefore = getMonthBefore(nowDate, 3);        //三个月历史记录
			List<PatientReservation> list = guahaoService.GetRegList(patient, sm.format(threeMonthBefore), sm.format(oneMonthAfter), threeMonthBefore, oneMonthAfter);
			return Result.success("根据患者医保卡获取近三个月的预约记录成功!",list);
		} catch (Exception ex) {
			ex.printStackTrace();
			return Result.error(ex.getMessage());
		}
	}
	@RequestMapping(value = "GetRegDetail",method = RequestMethod.POST)
	@ResponseBody
	@ApiOperation("根据患者,预约编号,机构编号获取单条记录预约记录")
	public Result GetRegDetail(@ApiParam(name="patient",value="患者代码") @RequestParam String patient,
							   @ApiParam(name="orgCode",value="机构代码") @RequestParam String orgCode,
							   @ApiParam(name="regCode",value="订单ID") @RequestParam String regCode)
	{
		try {
			PatientReservation re = guahaoService.GetRegDetail(patient,orgCode,regCode);
			return Result.success("获取单条记录预约记录成功!",re);
		} catch (Exception ex) {
			ex.printStackTrace();
			return Result.error(ex.getMessage());
		}
	}
}

+ 137 - 0
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/controller/OpenApiController.java

@ -0,0 +1,137 @@
package com.yihu.wlyy.service.controller;
import com.yihu.wlyy.service.common.model.Result;
import com.yihu.wlyy.service.service.OpenApiService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
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.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
/**
 * 开放给第三方机构接口
 * */
@Controller
@RequestMapping(value = "/openapi/")
@Api(description = "开放接口")
public class OpenApiController {
	@Autowired
	private OpenApiService openApiService;
	/**
	 *  判断是否已签约接口
	 *//*
	@RequestMapping(value = "service/CheckSignFamily",method = RequestMethod.GET)
	@ResponseBody
	@ApiOperation("判断是否已签约接口")
	public Result CheckSignFamily(
			@ApiParam(name="appkey",value="应用key",defaultValue = "zysoft")
			@RequestParam(value="appkey",required = true) String appkey,
			@ApiParam(name="service",value="签名校验",defaultValue = "6799BED57FF58EDFCF68C96415BF9F25F53BFA3B")
			@RequestParam(value="service",required = true) String service,
			@ApiParam(name="timestamp",value="时间戳",defaultValue = "2016-09-07 14:59:59")
			@RequestParam(value="timestamp",required = true) String timestamp,
			@ApiParam(name="idcard",value="身份证号码",defaultValue = "350203196704230064")
			@RequestParam(value="idcard",required = true) String idcard) {
		try{
			Map<String, String> paramMap = new HashMap<>();
			paramMap.put("timestamp",timestamp);
			paramMap.put("idcard",idcard);
			//请求校验
			openApiService.checkRequest(appkey,service,timestamp,paramMap);
			Map<String,String> re = openSignService.checkSignFamily(idcard);
			return Result.success("数据获取成功!",re);
		}
		catch (Exception e)
		{
			return Result.error(e.getMessage());
		}
	}
	*//**
	 *  获取签约信息接口
	 *//*
	@RequestMapping(value = "service/SignFamily",method = RequestMethod.GET)
	@ResponseBody
	@ApiOperation("获取签约信息接口")
	public Result GetSignFamily(
								 @ApiParam(name="appkey",value="应用key",defaultValue = "zysoft")
								 @RequestParam(value="appkey",required = true) String appkey,
								 @ApiParam(name="service",value="签名校验",defaultValue = "6799BED57FF58EDFCF68C96415BF9F25F53BFA3B")
								 @RequestParam(value="service",required = true) String service,
								 @ApiParam(name="timestamp",value="时间戳",defaultValue = "2016-09-07 14:59:59")
								 @RequestParam(value="timestamp",required = true) String timestamp,
								 @ApiParam(name="code",value="签约代码",defaultValue = "")
								 @RequestParam(value="code",required = true) String code) {
		try {
			Map<String, String> paramMap = new HashMap<>();
			paramMap.put("timestamp",timestamp);
			paramMap.put("code",code);
			openApiService.checkRequest(appkey,service,timestamp,paramMap);
			SignModel re = openSignService.getSignFamily(code);
			return Result.success("获取签约信息成功!",re);
		} catch (Exception e) {
			return Result.error(e.getMessage());
		}
	}
	*//**
	 *  接收签约信息接口
	 *//*
	@RequestMapping(value = "service/SignFamily",method = RequestMethod.POST)
	@ResponseBody
	@ApiOperation("接收签约信息接口")
	public Result SaveSignFamily(@ApiParam(name="appkey",value="应用key",defaultValue = "zysoft")
								  @RequestParam(value="appkey",required = true) String appkey,
								  @ApiParam(name="service",value="签名校验",defaultValue = "6799BED57FF58EDFCF68C96415BF9F25F53BFA3B")
								  @RequestParam(value="service",required = true) String service,
								  @ApiParam(name="timestamp",value="时间戳",defaultValue = "2016-09-07 14:59:59")
								  @RequestParam(value="timestamp",required = true) String timestamp,
								  @ApiParam(name="data",value="签约信息",defaultValue = "{}")
								  @RequestParam(value="data",required = true) String data) {
		try {
			Map<String, String> paramMap = new HashMap<>();
			paramMap.put("timestamp",timestamp);
			paramMap.put("data",data);
			//openApiService.checkRequest(appkey,service,timestamp,paramMap);
			//保存签约
			SignModel obj = objectMapper.readValue(data,SignModel.class);
			openSignService.saveSignFamily(obj);
			return Result.success("接收签约信息成功!");
		} catch (Exception e) {
			return Result.error(e.getMessage());
		}
	}*/
	/**************************************** 统一接口 ********************************************************/
	@RequestMapping(value = "interface",method = RequestMethod.POST)
	@ResponseBody
	@ApiOperation("统一接口")
	public Result upload(@ApiParam(name="appkey",value="应用key",defaultValue = "zysoft")
						 @RequestParam(value="appkey",required = true) String appkey,
						 @ApiParam(name="api",value="调用接口",defaultValue = "quatoUpload")
						 @RequestParam(value="api",required = true) String api,
						 @ApiParam(name="timestamp",value="时间戳",defaultValue = "2016-11-21 17:00:00")
						 @RequestParam(value="timestamp",required = true) String timestamp,
						 @ApiParam(name="sign",value="签名校验",defaultValue = "CA8F6C37D73B5A2D24D50DABFF78DCB168890E47")
						 @RequestParam(value="sign",required = true) String sign,
						 @ApiParam(name="data",value="调用数据",defaultValue = "{}")
						 @RequestParam(value="data",required = true) String data) {
		return openApiService.transferApi(appkey,api,timestamp,data,sign);
	}
}

+ 98 - 0
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/controller/PrescriptionController.java

@ -0,0 +1,98 @@
package com.yihu.wlyy.service.controller;
import com.yihu.wlyy.service.common.model.Result;
import com.yihu.wlyy.service.service.prescription.PrescriptionCAService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
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.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
/**
 * 长处方接口
 * */
@Controller
@RequestMapping(value = "/third/prescription/")
@Api(description = "长处方接口")
public class PrescriptionController {
	@Autowired
	PrescriptionCAService caService;
	/************************************ CA认证 ************************************************************/
	@RequestMapping(value = "RequestRealNameSoftCertAndSign",method = RequestMethod.POST)
	@ResponseBody
	@ApiOperation("请求实名软证书并进行数字签名")
	public Result requestRealNameSoftCertAndSign(@ApiParam(name="strUserIdcardNum",value="用户身份证号") @RequestParam String strUserIdcardNum,
												 @ApiParam(name="strRealNameSoftCertCalledPasswd",value="证书被调用保护口令") @RequestParam String strRealNameSoftCertCalledPasswd,
												 @ApiParam(name="strOriginalData",value="原文(若原文大于 1KB,需先对原文取 MD5摘要值,而后以该 MD5摘要值入参)") @RequestParam String strOriginalData,
												 @ApiParam(name="srcBusinessStreamNO",value="本次请求的业务流水号,用于与业务系统关联") @RequestParam String srcBusinessStreamNO)
	{
		try {
			String re = caService.requestRealNameSoftCertAndSign(strUserIdcardNum,strRealNameSoftCertCalledPasswd,strOriginalData,srcBusinessStreamNO);
			return Result.success("请求实名软证书并进行数字签名成功!",re);
		} catch (Exception ex) {
			ex.printStackTrace();
			return Result.error(ex.getMessage());
		}
	}
	@RequestMapping(value = "GetRealNameSoftCertExpiredDatetime",method = RequestMethod.POST)
	@ResponseBody
	@ApiOperation("获取实名软证书的过期时间")
	public Result getRealNameSoftCertExpiredDatetime(@ApiParam(name="strUserIdcardNum",value="用户身份证号") @RequestParam String strUserIdcardNum)
	{
		try {
			String re = caService.getRealNameSoftCertExpiredDatetime(strUserIdcardNum);
			return Result.success("获取实名软证书的过期时间成功!",re);
		} catch (Exception ex) {
			ex.printStackTrace();
			return Result.error(ex.getMessage());
		}
	}
	@RequestMapping(value = "ModifyRealNameSoftCertCalledPasswd",method = RequestMethod.POST)
	@ResponseBody
	@ApiOperation("修改实名软证书调用保护口令")
	public Result modifyRealNameSoftCertCalledPasswd(@ApiParam(name="strUserIdcardNum",value="用户身份证号") @RequestParam String strUserIdcardNum,
													 @ApiParam(name="strOldCalledPasswd",value="旧证书调用保护口令") @RequestParam String strOldCalledPasswd,
													 @ApiParam(name="strNewCalledPasswd",value="新证书调用保护口令") @RequestParam String strNewCalledPasswd)
	{
		try {
			String re = caService.modifyRealNameSoftCertCalledPasswd(strUserIdcardNum,strOldCalledPasswd,strNewCalledPasswd);
			return Result.success("修改实名软证书调用保护口令成功!",re);
		} catch (Exception ex) {
			ex.printStackTrace();
			return Result.error(ex.getMessage());
		}
	}
	@RequestMapping(value = "VerifySignOnMultiServer",method = RequestMethod.POST)
	@ResponseBody
	@ApiOperation("验证签名(带多服务器负载均衡)")
	public Result verifySignOnMultiServer(@ApiParam(name="strSignData",value="签名值") @RequestParam String strSignData,
								   @ApiParam(name="strCertData",value="证书主体数据") @RequestParam String strCertData,
								   @ApiParam(name="strOriginalData ",value="原文数据") @RequestParam String strOriginalData)
	{
		try {
			String re = caService.verifySignOnMultiServer(strSignData,strCertData,strOriginalData);
			return Result.success("验证签名成功!",re);
		} catch (Exception ex) {
			ex.printStackTrace();
			return Result.error(ex.getMessage());
		}
	}
}

+ 56 - 0
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/controller/SignController.java

@ -0,0 +1,56 @@
package com.yihu.wlyy.service.controller;
import com.yihu.wlyy.service.common.model.Result;
import com.yihu.wlyy.service.service.SignZYService;
import com.yihu.wlyy.service.service.ZysoftService;
import com.zoe.phip.ssp.sdk.ApiException;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
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.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.Map;
/**
 * 智业服务接口
 * */
@Controller
@RequestMapping(value = "/third/sign/")
@Api(description = "基卫签约服务接口")
public class SignController {
	@Autowired
	ZysoftService zysoftService;
	@Autowired
	private SignZYService signZYService;
	/******************************* 签约接口 ********************************************************/
	@RequestMapping(value = "CheckSignFamily",method = RequestMethod.POST)
	@ResponseBody
	@ApiOperation("查询是否已签约")
	public Result checkSignFamily(
			@ApiParam(name="idcard",value="患者身份证",defaultValue = "350821201112240026")
			@RequestParam(value="idcard",required = true) String idcard){
		try {
			Map<String,String> response = signZYService.checkSignFamily(idcard);
			return Result.success("查询签约成功!",response);
		} catch (Exception ex) {
			if(ex instanceof ApiException)
			{
				ApiException apiEx = (ApiException) ex;
				return Result.error(apiEx.errorCode(),ex.getMessage());
			}
			else{
				return Result.error(ex.getMessage());
			}
		}
	}
}

+ 400 - 0
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/controller/SmjkController.java

@ -0,0 +1,400 @@
package com.yihu.wlyy.service.controller;
import com.yihu.wlyy.service.common.model.Result;
import com.yihu.wlyy.service.service.SmjkService;
import com.yihu.wlyy.service.service.guahao.GuahaoDoctor;
import com.zoe.phip.ssp.sdk.ApiException;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
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.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.List;
/**
 * 智业服务接口
 * */
@Controller
@RequestMapping(value = "/third/smjk/")
@Api(description = "市民信息服务接口")
public class SmjkController {
	@Autowired
	SmjkService smjkService;
	/****************************** 患者信息 ********************************************/
	@RequestMapping(value = "ResidentEventList",method = RequestMethod.POST)
	@ResponseBody
	@ApiOperation("获取居民就诊事件列表")
	public Result getResidentEventListJson(@ApiParam(name="strSSID",value="健康卡号",defaultValue = "A0601003595X")
									 @RequestParam(value="strSSID",required = true) String strSSID,
									 @ApiParam(name="type",value="就诊类型",defaultValue = "")
									 @RequestParam(value="type",required = false) String type,
									 @ApiParam(name="page",value="第几页",defaultValue = "1")
									 @RequestParam(value="page",required = true) String page,
									 @ApiParam(name="pageSize",value="每页显示的项数",defaultValue = "10")
									 @RequestParam(value="pageSize",required = true) String pageSize) {
		try {
			String data = smjkService.getResidentEventListJson(strSSID,type, page, pageSize);
			return Result.success("获取居民就诊事件列表成功!",data);
		} catch (Exception ex) {
			if(ex instanceof ApiException)
			{
				ApiException apiEx = (ApiException) ex;
				return Result.error(apiEx.errorCode(),ex.getMessage());
			}
			else{
				return Result.error(ex.getMessage());
			}
		}
	}
	@RequestMapping(value = "EventCatalog",method = RequestMethod.POST)
	@ResponseBody
	@ApiOperation("通过事件获取档案文档列表")
	public Result getEventCatalog(@ApiParam(name="strSSID",value="健康卡号",defaultValue = "A0601003595X")
								  @RequestParam(value="strSSID",required = true) String strSSID,
								  @ApiParam(name="strEvent",value="事件ID",defaultValue = "")
								  @RequestParam(value="strEvent",required = true) String strEvent) {
		try {
			String data = smjkService.getEventCatalog(strSSID,strEvent);
			return Result.success("通过事件获取档案文档列表成功!",data);
		} catch (Exception ex) {
			if(ex instanceof ApiException)
			{
				ApiException apiEx = (ApiException) ex;
				return Result.error(apiEx.errorCode(),ex.getMessage());
			}
			else{
				return Result.error(ex.getMessage());
			}
		}
	}
	@RequestMapping(value = "HealthData",method = RequestMethod.POST)
	@ResponseBody
	@ApiOperation("获取健康档案信息")
	public Result getHealthData(@ApiParam(name="strSSID",value="健康卡号",defaultValue = "A0601003595X")
								@RequestParam(value="strSSID",required = true) String strSSID,
								@ApiParam(name="strEvent",value="事件ID",defaultValue = "")
								@RequestParam(value="strEvent",required = true) String strEvent,
								@ApiParam(name="strCatalog",value="档案类型",defaultValue = "")
								@RequestParam(value="strCatalog",required = true) String strCatalog,
								@ApiParam(name="strSerial",value="该类别顺序号,默认填1",defaultValue = "1")
								@RequestParam(value="strSerial",required = true) String strSerial) {
		try {
			String data = smjkService.getHealthData(strSSID, strEvent, strCatalog, strSerial);
			return Result.success("获取健康档案信息成功!",data);
		} catch (Exception ex) {
			if(ex instanceof ApiException)
			{
				ApiException apiEx = (ApiException) ex;
				return Result.error(apiEx.errorCode(),ex.getMessage());
			}
			else{
				return Result.error(ex.getMessage());
			}
		}
	}
	@RequestMapping(value = "ExamAndLabReport",method = RequestMethod.POST)
	@ResponseBody
	@ApiOperation("获取检查检验报告")
	public Result getExamAndLabReport(@ApiParam(name="strSSID",value="健康卡号",defaultValue = "A0601003595X")
										   @RequestParam(value="strSSID",required = true) String strSSID,
										   @ApiParam(name="page",value="第几页",defaultValue = "1")
										   @RequestParam(value="page",required = true) String page,
										   @ApiParam(name="pageSize",value="每页显示的项数",defaultValue = "10")
										   @RequestParam(value="pageSize",required = true) String pageSize) {
		try {
			String data = smjkService.getExamAndLabReport(strSSID, page, pageSize);
			return Result.success("获取检查检验报告成功!",data);
		} catch (Exception ex) {
			if(ex instanceof ApiException)
			{
				ApiException apiEx = (ApiException) ex;
				return Result.error(apiEx.errorCode(),ex.getMessage());
			}
			else{
				return Result.error(ex.getMessage());
			}
		}
	}
	@RequestMapping(value = "DrugsListPage",method = RequestMethod.POST)
	@ResponseBody
	@ApiOperation("获取用药记录")
	public Result getDrugsListPage(@ApiParam(name="strSSID",value="健康卡号",defaultValue = "A0601003595X")
							   @RequestParam(value="strSSID",required = true) String strSSID,
								   @ApiParam(name="page",value="第几页",defaultValue = "1")
								   @RequestParam(value="page",required = true) String page,
								   @ApiParam(name="pageSize",value="每页显示的项数",defaultValue = "10")
									   @RequestParam(value="pageSize",required = true) String pageSize) {
		try {
			String data = smjkService.getDrugsList(strSSID, page, pageSize);
			return Result.success("获取用药记录成功!",data);
		} catch (Exception ex) {
			if(ex instanceof ApiException)
			{
				ApiException apiEx = (ApiException) ex;
				return Result.error(apiEx.errorCode(),ex.getMessage());
			}
			else{
				return Result.error(ex.getMessage());
			}
		}
	}
	/******************************************* 预约挂号 ************************************************************************/
	@RequestMapping(value = "RegDeptSpeDoctorSectionList",method = RequestMethod.POST)
	@ResponseBody
	@ApiOperation("获取转诊预约医生号源信息")
	public Result getRegDeptSpeDoctorSectionList(@ApiParam(name="OrgCode",value="机构编码",defaultValue = "350211A1001")
												 @RequestParam(value="OrgCode",required = true) String OrgCode,
												 @ApiParam(name="DeptCode",value="科室编码",defaultValue = "1011610")
												 @RequestParam(value="DeptCode",required = true) String DeptCode,
												 @ApiParam(name="strStart",value="预约排班开始时间",defaultValue = "2016-12-29")
												 @RequestParam(value="strStart",required = true) String strStart,
												 @ApiParam(name="strEnd",value="预约排班结束时间",defaultValue = "2016-12-31")
												 @RequestParam(value="strEnd",required = true) String strEnd,
												 @ApiParam(name="DocCode",value="医生编码",defaultValue = "50108")
												 @RequestParam(value="DocCode",required = true) String DocCode) {
		try {
			String data = smjkService.getRegDeptSpeDoctorSectionList(OrgCode,DeptCode,strStart,strEnd,DocCode);
			return Result.success("获取转诊预约医生号源信息成功!",data);
		} catch (Exception ex) {
			if(ex instanceof ApiException)
			{
				ApiException apiEx = (ApiException) ex;
				return Result.error(apiEx.errorCode(),ex.getMessage());
			}
			else{
				return Result.error(ex.getMessage());
			}
		}
	}
	@RequestMapping(value = "RegDeptSpeDoctorList",method = RequestMethod.POST)
	@ResponseBody
	@ApiOperation("获取转诊预约医生列表")
	public Result getRegDeptSpeDoctorList(
			@ApiParam(name="orgCode",value="机构编码") @RequestParam(name="orgCode",required = true) String orgCode,
			@ApiParam(name="deptCode",value="科室编码") @RequestParam(name="deptCode",required = true) String deptCode,
			@ApiParam(name="strStart",value="预约排班开始时间") @RequestParam(name="strStart",required = true) String strStart,
			@ApiParam(name="strEnd",value="预约排班结束时间") @RequestParam(name="strEnd",required = true) String strEnd){
		try {
			List<GuahaoDoctor> list = smjkService.getRegDeptSpeDoctorList(orgCode,deptCode,strStart,strEnd);
			return Result.success("获取转诊预约医生列表成功!",list);
		} catch (Exception ex) {
			if(ex instanceof ApiException)
			{
				ApiException apiEx = (ApiException) ex;
				return Result.error(apiEx.errorCode(),ex.getMessage());
			}
			else{
				return Result.error(ex.getMessage());
			}
		}
	}
	@RequestMapping(value = "WebRegisterByFamily",method = RequestMethod.POST)
	@ResponseBody
	@ApiOperation("家庭签约确认预约接口")
	public Result webRegisterByFamily(
			@ApiParam(name="idcard",value="身份证",defaultValue = "350521199001021533s")
			@RequestParam(value="idcard",required = true) String idcard,
			@ApiParam(name="patientName",value="患者姓名",defaultValue = "111")
			@RequestParam(value="patientName",required = true) String patientName,
			@ApiParam(name="ssid",value="社保卡号",defaultValue = "A0601003595X")
			@RequestParam(value="ssid",required = true) String ssid,
			@ApiParam(name="sectionType",value="预约时间段",defaultValue = "p")
			@RequestParam(value="sectionType",required = true) String sectionType,
			@ApiParam(name="startTime",value="一次预约段的开始时间",defaultValue = "2016-12-29 14:00:00")
			@RequestParam(value="startTime",required = true) String startTime,
			@ApiParam(name="orgCode",value="机构编码",defaultValue = "350211A1001")
			@RequestParam(value="orgCode",required = true) String orgCode,
			 @ApiParam(name="deptCode",value="科室编码",defaultValue = "1011610")
			 @RequestParam(value="deptCode",required = true) String deptCode,
			 @ApiParam(name="deptName",value="科室名称",defaultValue = "内分泌糖尿病科门诊")
			 @RequestParam(value="deptName",required = true) String deptName,
			 @ApiParam(name="doctorCode",value="医生编码",defaultValue = "50108")
			 @RequestParam(value="doctorCode",required = true) String doctorCode,
			 @ApiParam(name="doctorName",value="医生姓名",defaultValue = "杨叔禹")
			 @RequestParam(value="doctorName",required = true) String doctorName,
			@ApiParam(name="patientPhone",value="患者手机号码",defaultValue = "13555555555")
			@RequestParam(value="patientPhone",required = false) String patientPhone) {
		try {
			String re = smjkService.webRegisterByFamily(idcard,patientName,ssid,sectionType,startTime,orgCode,deptCode,deptName,doctorCode,doctorName,patientPhone);
			return Result.success("确认预约成功!",re);
		} catch (Exception ex) {
			if(ex instanceof ApiException)
			{
				ApiException apiEx = (ApiException) ex;
				return Result.error(apiEx.errorCode(),ex.getMessage());
			}
			else{
				return Result.error(ex.getMessage());
			}
		}
	}
	/*********************************** 旧接口 *****************************************************/
	@RequestMapping(value = "ExamReport",method = RequestMethod.POST)
	@ResponseBody
	@ApiOperation("获取检查报告(X)")
	public Result getExamReport(@ApiParam(name="strSSID",value="健康卡号",defaultValue = "A0601003595X")
								@RequestParam(value="strSSID",required = true) String strSSID,
								@ApiParam(name="startDate",value="查询的开始日期",defaultValue = "2010-01-01")
								@RequestParam(value="startDate",required = true) String startDate,
								@ApiParam(name="endDate",value="查询的结束日期",defaultValue = "2016-10-01")
								@RequestParam(value="endDate",required = true) String endDate,
								@ApiParam(name="startNum",value="需要获取的起始行数",defaultValue = "0")
								@RequestParam(value="startNum",required = true) String startNum,
								@ApiParam(name="endNum",value="需要获取的结束的行数",defaultValue = "10")
								@RequestParam(value="endNum",required = true) String endNum) {
		try {
			String data = smjkService.getExamReport(strSSID, startDate, endDate, startNum, endNum);
			return Result.success("获取检查报告成功!",data);
		} catch (Exception ex) {
			if(ex instanceof ApiException)
			{
				ApiException apiEx = (ApiException) ex;
				return Result.error(apiEx.errorCode(),ex.getMessage());
			}
			else{
				return Result.error(ex.getMessage());
			}
		}
	}
	@RequestMapping(value = "LabReport",method = RequestMethod.POST)
	@ResponseBody
	@ApiOperation("获取检验报告(X)")
	public Result getLabReport(@ApiParam(name="strSSID",value="健康卡号",defaultValue = "A0601003595X")
							   @RequestParam(value="strSSID",required = true) String strSSID,
							   @ApiParam(name="startDate",value="查询的开始日期",defaultValue = "2010-01-01")
							   @RequestParam(value="startDate",required = true) String startDate,
							   @ApiParam(name="endDate",value="查询的结束日期",defaultValue = "2016-10-01")
							   @RequestParam(value="endDate",required = true) String endDate,
							   @ApiParam(name="startNum",value="需要获取的起始行数",defaultValue = "0")
							   @RequestParam(value="startNum",required = true) String startNum,
							   @ApiParam(name="endNum",value="需要获取的结束的行数",defaultValue = "10")
							   @RequestParam(value="endNum",required = true) String endNum) {
		try {
			String data = smjkService.getLabReport(strSSID, startDate, endDate, startNum, endNum);
			return Result.success("获取检验报告成功!",data);
		} catch (Exception ex) {
			if(ex instanceof ApiException)
			{
				ApiException apiEx = (ApiException) ex;
				return Result.error(apiEx.errorCode(),ex.getMessage());
			}
			else{
				return Result.error(ex.getMessage());
			}
		}
	}
	@RequestMapping(value = "OutpatientRecord",method = RequestMethod.POST)
	@ResponseBody
	@ApiOperation("获取门/急诊记录(X)")
	public Result getOutpatientRecord(@ApiParam(name="strSSID",value="健康卡号",defaultValue = "A0601003595X")
									  @RequestParam(value="strSSID",required = true) String strSSID,
									  @ApiParam(name="startDate",value="查询的开始日期",defaultValue = "2010-01-01")
									  @RequestParam(value="startDate",required = true) String startDate,
									  @ApiParam(name="endDate",value="查询的结束日期",defaultValue = "2016-11-01")
									  @RequestParam(value="endDate",required = true) String endDate,
									  @ApiParam(name="startNum",value="需要获取的起始行数",defaultValue = "0")
									  @RequestParam(value="startNum",required = true) String startNum,
									  @ApiParam(name="endNum",value="需要获取的结束的行数",defaultValue = "10")
									  @RequestParam(value="endNum",required = true) String endNum) {
		try {
			String data = smjkService.getOutpatientRecord(strSSID, startDate, endDate, startNum, endNum);
			return Result.success("获取门/急诊记录成功!",data);
		} catch (Exception ex) {
			if(ex instanceof ApiException)
			{
				ApiException apiEx = (ApiException) ex;
				return Result.error(apiEx.errorCode(),ex.getMessage());
			}
			else{
				return Result.error(ex.getMessage());
			}
		}
	}
	@RequestMapping(value = "InpatientRecord",method = RequestMethod.POST)
	@ResponseBody
	@ApiOperation("获取住院记录(X)")
	public Result getInpatientRecord(@ApiParam(name="strSSID",value="健康卡号",defaultValue = "A0601003595X")
									 @RequestParam(value="strSSID",required = true) String strSSID,
									 @ApiParam(name="startDate",value="查询的开始日期",defaultValue = "2010-01-01")
									 @RequestParam(value="startDate",required = true) String startDate,
									 @ApiParam(name="endDate",value="查询的结束日期",defaultValue = "2016-11-01")
									 @RequestParam(value="endDate",required = true) String endDate,
									 @ApiParam(name="startNum",value="需要获取的起始行数",defaultValue = "0")
									 @RequestParam(value="startNum",required = true) String startNum,
									 @ApiParam(name="endNum",value="需要获取的结束的行数",defaultValue = "10")
									 @RequestParam(value="endNum",required = true) String endNum) {
		try {
			String data = smjkService.getInpatientRecord(strSSID, startDate, endDate, startNum, endNum);
			return Result.success("获取住院记录成功!",data);
		} catch (Exception ex) {
			if(ex instanceof ApiException)
			{
				ApiException apiEx = (ApiException) ex;
				return Result.error(apiEx.errorCode(),ex.getMessage());
			}
			else{
				return Result.error(ex.getMessage());
			}
		}
	}
	@RequestMapping(value = "DrugsList",method = RequestMethod.POST)
	@ResponseBody
	@ApiOperation("获取用药记录(X)")
	public Result getDrugsList(@ApiParam(name="strSSID",value="健康卡号",defaultValue = "A0601003595X")
							   @RequestParam(value="strSSID",required = true) String strSSID,
							   @ApiParam(name="startDate",value="查询的开始日期",defaultValue = "2015-01-01")
							   @RequestParam(value="startDate",required = true) String startDate,
							   @ApiParam(name="endDate",value="查询的结束日期",defaultValue = "2016-10-01")
							   @RequestParam(value="endDate",required = true) String endDate,
							   @ApiParam(name="startNum",value="需要获取的起始行数",defaultValue = "0")
							   @RequestParam(value="startNum",required = true) String startNum,
							   @ApiParam(name="endNum",value="需要获取的结束的行数",defaultValue = "10")
							   @RequestParam(value="endNum",required = true) String endNum) {
		try {
			String data = smjkService.getDrugsList(strSSID, startDate, endDate, startNum, endNum);
			return Result.success("获取用药记录成功!",data);
		} catch (Exception ex) {
			if(ex instanceof ApiException)
			{
				ApiException apiEx = (ApiException) ex;
				return Result.error(apiEx.errorCode(),ex.getMessage());
			}
			else{
				return Result.error(ex.getMessage());
			}
		}
	}
}

+ 271 - 0
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/controller/ZysoftServiceController.java

@ -0,0 +1,271 @@
package com.yihu.wlyy.service.controller;
import com.yihu.wlyy.service.common.SystemConfig;
import com.yihu.wlyy.service.common.model.Result;
import com.yihu.wlyy.service.service.ZysoftService;
import com.zoe.phip.ssp.sdk.ApiException;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
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.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
/**
 * 智业服务接口
 * */
@Controller
@RequestMapping(value = "/third/zysoftservice/")
@Api(description = "智业基卫签约服务接口")
public class ZysoftServiceController {
	@Autowired
	private ZysoftService zysoftService;
	private String hospital = SystemConfig.getInstance().getJwHospital();
	private String licence = SystemConfig.getInstance().getJwLicence();
	@RequestMapping(value = "getSickFamilySignFlag",method = RequestMethod.POST)
	@ResponseBody
	@ApiOperation("查询是否已签约")
	public Result getSickFamilySignFlag(
			@ApiParam(name="idcard",value="患者身份证",defaultValue = "350821201112240026")
			@RequestParam(value="idcard",required = true) String idcard){
		try {
			String response = zysoftService.getSickFamilySignFlag(idcard, hospital, licence);
			return Result.success("查询签约成功!",response);
		} catch (Exception ex) {
			if(ex instanceof ApiException)
			{
				ApiException apiEx = (ApiException) ex;
				return Result.error(apiEx.errorCode(),ex.getMessage());
			}
			else{
				return Result.error(ex.getMessage());
			}
		}
	}
	@RequestMapping(value = "getSickCurrnetFamilySignInfo",method = RequestMethod.POST)
	@ResponseBody
	@ApiOperation("获取签约信息(患者身份证)")
	public Result getSickCurrnetFamilySignInfo(
			@ApiParam(name="idcard",value="患者身份证",defaultValue = "")
			@RequestParam(value="idcard",required = true) String idcard){
		try {
			String response = zysoftService.getSickCurrnetFamilySignInfo(idcard, hospital, licence);
			return Result.success("查询签约成功!",response);
		} catch (Exception ex) {
			if(ex instanceof ApiException)
			{
				ApiException apiEx = (ApiException) ex;
				return Result.error(apiEx.errorCode(),ex.getMessage());
			}
			else{
				return Result.error(ex.getMessage());
			}
		}
	}
	@RequestMapping(value = "getSickCurrnetFamilySignInfoByProid",method = RequestMethod.POST)
	@ResponseBody
	@ApiOperation("获取签约信息")
	public Result getSickCurrnetFamilySignInfoByProid(
			@ApiParam(name="proid",value="proid",defaultValue = "")
			@RequestParam(value="proid",required = true) String proid){
		try {
			String response = zysoftService.getSickCurrnetFamilySignInfoByProid(proid, hospital, licence);
			return Result.success("查询签约成功!",response);
		} catch (Exception ex) {
			if(ex instanceof ApiException)
			{
				ApiException apiEx = (ApiException) ex;
				return Result.error(apiEx.errorCode(),ex.getMessage());
			}
			else{
				return Result.error(ex.getMessage());
			}
		}
	}
	@RequestMapping(value = "getEhrOrgFamilySignInfo",method = RequestMethod.POST)
	@ResponseBody
	@ApiOperation("查询机构签约信息")
	public Result getEhrOrgFamilySignInfo(
			@ApiParam(name="hospital",value="机构代码",defaultValue = "")
			@RequestParam(value="hospital",required = true) String hospital,
			@ApiParam(name="licence",value="机构授权码",defaultValue = "")
			@RequestParam(value="licence",required = true) String licence,
			@ApiParam(name="startTime",value="",defaultValue = "2016-10-10 00:00:00")
			@RequestParam(value="startTime",required = true) String startTime,
			@ApiParam(name="endTime",value="",defaultValue = "2016-10-10 00:00:00")
			@RequestParam(value="endTime",required = true) String endTime,
			@ApiParam(name="isNew",value="1新增 0 修改",defaultValue = "")
			@RequestParam(value="isNew",required = false) String isNew){
		try {
			String response = zysoftService.getEhrOrgFamilySignInfo(startTime, endTime, hospital, licence,isNew);
			return Result.success("查询机构签约信息成功!",response);
		} catch (Exception ex) {
			if(ex instanceof ApiException)
			{
				ApiException apiEx = (ApiException) ex;
				return Result.error(apiEx.errorCode(),ex.getMessage());
			}
			else{
				return Result.error(ex.getMessage());
			}
		}
	}
	/************************************** 续签信息 ***************************************************************************/
	@RequestMapping(value = "getSickCurrnetFamilyRenewSignInfo",method = RequestMethod.POST)
	@ResponseBody
	@ApiOperation("获取续签信息")
	public Result getSickCurrnetFamilyRenewSignInfo(
			@ApiParam(name="idcard",value="患者身份证",defaultValue = "350821201112240026")
			@RequestParam(value="idcard",required = true) String idcard){
		try {
			String response = zysoftService.getSickCurrnetFamilyRenewSignInfo(idcard, hospital, licence);
			return Result.success("查询续签成功!",response);
		} catch (Exception ex) {
			if(ex instanceof ApiException)
			{
				ApiException apiEx = (ApiException) ex;
				return Result.error(apiEx.errorCode(),ex.getMessage());
			}
			else{
				return Result.error(ex.getMessage());
			}
		}
	}
	@RequestMapping(value = "getSickCurrnetFamilyRenewSignInfoByProid",method = RequestMethod.POST)
	@ResponseBody
	@ApiOperation("获取续签信息通过proid")
	public Result getSickCurrnetFamilyRenewSignInfoByProid(
			@ApiParam(name="proid",value="proid",defaultValue = "")
			@RequestParam(value="proid",required = true) String proid){
		try {
			String response = zysoftService.getSickCurrnetFamilyRenewSignInfoByProid(proid, hospital, licence);
			return Result.success("查询续签成功!",response);
		} catch (Exception ex) {
			if(ex instanceof ApiException)
			{
				ApiException apiEx = (ApiException) ex;
				return Result.error(apiEx.errorCode(),ex.getMessage());
			}
			else{
				return Result.error(ex.getMessage());
			}
		}
	}
	@RequestMapping(value = "getEhrOrgFamilyRenewSignInfo",method = RequestMethod.POST)
	@ResponseBody
	@ApiOperation("查询机构续签信息")
	public Result getEhrOrgFamilyRenewSignInfo(
			@ApiParam(name="hospital",value="机构代码",defaultValue = "")
			@RequestParam(value="hospital",required = true) String hospital,
			@ApiParam(name="licence",value="机构授权码",defaultValue = "")
			@RequestParam(value="licence",required = true) String licence,
			@ApiParam(name="startTime",value="",defaultValue = "2016-10-10 00:00:00")
			@RequestParam(value="startTime",required = true) String startTime,
			@ApiParam(name="endTime",value="",defaultValue = "2016-10-10 00:00:00")
			@RequestParam(value="endTime",required = true) String endTime,
			@ApiParam(name="isNew",value="1新增 0 修改",defaultValue = "")
			@RequestParam(value="isNew",required = false) String isNew){
		try {
			String response = zysoftService.getEhrOrgFamilyRenewSignInfo(startTime, endTime, hospital, licence,isNew);
			return Result.success("查询机构签约信息成功!",response);
		} catch (Exception ex) {
			if(ex instanceof ApiException)
			{
				ApiException apiEx = (ApiException) ex;
				return Result.error(apiEx.errorCode(),ex.getMessage());
			}
			else{
				return Result.error(ex.getMessage());
			}
		}
	}
	@RequestMapping(value = "getSignReport",method = RequestMethod.POST)
	@ResponseBody
	@ApiOperation("获取签约统计报表")
	public Result getSignReport(@ApiParam(name="report_type",value="类型【1.三师转网率 2.高危人群率】",defaultValue = "1")
								@RequestParam(value="report_type",required = true) String reportType,
								@ApiParam(name="report_level",value="类型【1.市级 2.区级 3.街道级】",defaultValue = "1")
								@RequestParam(value="report_level",required = true) String reportLevel,
								@ApiParam(name="start_time",value="开始时间",defaultValue = "2016-09-01 00:00:00")
								@RequestParam(value="start_time",required = true) String startTime,
								@ApiParam(name="end_time",value="结束时间",defaultValue = "2016-12-01 00:00:00")
								@RequestParam(value="end_time",required = true) String endTime) {
		try {
			String response = zysoftService.getSignReport(reportType,reportLevel,startTime,endTime, hospital, licence);
			return Result.success("获取签约统计报表成功!",response);
		} catch (Exception ex) {
			if(ex instanceof ApiException)
			{
				ApiException apiEx = (ApiException) ex;
				return Result.error(apiEx.errorCode(),ex.getMessage());
			}
			else{
				return Result.error(ex.getMessage());
			}
		}
	}
	/************************************* 医生团队 *******************************************************************/
	@RequestMapping(value = "getEhrOrgFamilyDoctorTeamInfo",method = RequestMethod.POST)
	@ResponseBody
	@ApiOperation("查询机构家庭医生团队信息")
	public Result getEhrOrgFamilyDoctorTeamInfo(
			@ApiParam(name="hospital",value="机构代码",defaultValue = "")
			@RequestParam(value="hospital",required = true) String hospital,
			@ApiParam(name="licence",value="机构授权码",defaultValue = "")
			@RequestParam(value="licence",required = true) String licence){
		try {
			String response = zysoftService.getEhrOrgFamilyDoctorTeamInfo(hospital, licence);
			return Result.success("查询机构家庭医生团队信息成功!",response);
		} catch (Exception ex) {
			if(ex instanceof ApiException)
			{
				ApiException apiEx = (ApiException) ex;
				return Result.error(apiEx.errorCode(),ex.getMessage());
			}
			else{
				return Result.error(ex.getMessage());
			}
		}
	}
	@RequestMapping(value = "getSickSanShiTeamSignInfo",method = RequestMethod.POST)
	@ResponseBody
	@ApiOperation("查询三师签约信息")
	public Result getSickSanShiTeamSignInfo(
			@ApiParam(name="idcard",value="患者身份证",defaultValue = "350821201112240026")
			@RequestParam(value="idcard",required = true) String idcard){
		try {
			String response = zysoftService.getSickSanShiTeamSignInfo(idcard, hospital, licence);
			return Result.success("查询三师签约信息成功!",response);
		} catch (Exception ex) {
			if(ex instanceof ApiException)
			{
				ApiException apiEx = (ApiException) ex;
				return Result.error(apiEx.errorCode(),ex.getMessage());
			}
			else{
				return Result.error(ex.getMessage());
			}
		}
	}
}

+ 32 - 0
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/dao/AdminTeamDao.java

@ -0,0 +1,32 @@
/*******************************************************************************
 * Copyright (c) 2005, 2014 springside.github.io
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 *******************************************************************************/
package com.yihu.wlyy.service.dao;
import com.yihu.wlyy.service.entity.AdminTeam;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
public interface AdminTeamDao extends PagingAndSortingRepository<AdminTeam, Long>, JpaSpecificationExecutor<AdminTeam> {
	@Query("select a from AdminTeam a where a.orgCode = ?1 and a.leaderCode = ?2 and a.available=true")
	AdminTeam findByOrgCodeAndLeaderCode(String orgCode,String leaderCode);
	/**
	 * 获取该注销团队
	 * @param hospital
	 * @param availableTeams
     * @return
     */
	@Query("select a from AdminTeam a where a.orgCode = ?1 and a.mappingCode not in (?2) and a.available=true")
	List<AdminTeam> findDeleteTeams(String hospital,List<String> availableTeams);
	@Query("select a from AdminTeam a where a.orgCode = ?1 and a.mappingCode =?2 and a.available=true")
	AdminTeam findByOrgCodeAndMappingCode(String orgCode,String mappingCode);
}

+ 60 - 0
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/dao/AdminTeamMemberDao.java

@ -0,0 +1,60 @@
package com.yihu.wlyy.service.dao;
import com.yihu.wlyy.service.entity.AdminTeam;
import com.yihu.wlyy.service.entity.AdminTeamMember;
import com.yihu.wlyy.service.entity.Doctor;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.data.repository.query.Param;
import java.util.List;
/**
 * 行政团队成员DAO。
 */
public interface AdminTeamMemberDao extends
        PagingAndSortingRepository<AdminTeamMember, Long>,
        JpaSpecificationExecutor<AdminTeamMember> {
    @Query("SELECT m FROM AdminTeamMember m WHERE m.teamId =?1 AND m.doctorCode=?2 AND m.available = true")
    AdminTeamMember findByTeamIdAndDcotorCode(Long teamId,String doctorCode);
    /**
     * 获取该注销团队成员
     */
    @Query("select a from AdminTeamMember a where a.teamId = ?1 and a.doctorCode not in (?2) AND a.available=true")
    List<AdminTeamMember> findDeleteMember(Long teamId,List<String> contain);
    AdminTeamMember findByTeamIdAndDoctorCodeOrderByDoctorCodeAsc(long teamId, String doctorCode);
    @Query("SELECT t FROM AdminTeamMember m, AdminTeam t WHERE m.doctorCode = :doctorCode AND t.id = m.teamId AND t.available = true")
    List<AdminTeam> findDoctorTeams(@Param(value = "doctorCode") String doctorCode);
    @Query("SELECT d FROM AdminTeamMember m, AdminTeam t, Doctor d WHERE t.id = :teamId AND t.id = m.teamId " +
            "AND m.doctorCode = d.code AND t.available = true AND m.available = true ORDER BY d.level")
    List<Doctor> findAllMembers(@Param(value = "teamId") long teamId);
    @Query("SELECT case when count(A) > 0 then true else false END FROM AdminTeamMember A WHERE A.teamId = :teamId " +
            "AND A.doctorCode = :doctorCode AND A.available = true")
    Boolean isMemberExist(@Param(value = "teamId") long teamId, @Param(value = "doctorCode") String doctorCode);
    @Query("SELECT d from Hospital h, Doctor d WHERE d.name like :doctorName " +
            "AND h.code = d.hospital AND h.code = :orgCode AND d.code not in " +
            "(select t.doctorCode from AdminTeamMember t WHERE t.teamId = :teamId)")
    Page<Doctor> findTeamExcludedMembers(@Param(value = "orgCode") String orgCode,
                                         @Param(value = "doctorName") String doctorName,
                                         @Param(value = "teamId") long teamId,
                                         Pageable pageable);
    @Modifying
    @Query("UPDATE AdminTeamMember t SET t.available = false where t.id = :teamId and doctorCode = :doctorCode")
    void removeMember(@Param("teamId") long teamId, @Param("doctorCode") String doctorCode);
    @Query("SELECT d FROM AdminTeamMember m, AdminTeam t, Doctor d WHERE t.id = ?1 AND t.id = m.teamId AND " +
            "m.doctorCode = d.code and  d.code != ?2 AND t.available = true and d.level != 1 ")
    List<Doctor> findAllHeathExcludeThis(long teamId, String doctorCode);
}

+ 37 - 0
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/dao/DoctorDao.java

@ -0,0 +1,37 @@
/*******************************************************************************
 * Copyright (c) 2005, 2014 springside.github.io
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 *******************************************************************************/
package com.yihu.wlyy.service.dao;
import com.yihu.wlyy.service.entity.Doctor;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
public interface DoctorDao extends PagingAndSortingRepository<Doctor, Long>, JpaSpecificationExecutor<Doctor> {
	@Query("select a from Doctor a where a.idcard = ?1 and a.status='1'")     // and a.del='1'
	Doctor findByIdcard(String idcard);
	// 按医生标识查询医生信息
	@Query("select p from Doctor p where p.code = ?1")
	Doctor findByCode(String code);
	// 手机号查询医生信息
	@Query("select p from Doctor p where p.mobile = ?1 and p.status='1'")
	Doctor findByMobile(String mobile);
	@Query("select a from Doctor a,DoctorMapping b where a.code = b.doctorCode and b.jwDoctor = ?1 and b.jwDoctorHospital = ?2")
	Doctor findMappingDoctor(String jwDoctor,String jwHospital);
	@Query("select a from Doctor a where a.name = ?1 and a.hospital = ?2 and a.status='1'")     // and a.del='1'
	List<Doctor> findByNameAndHospital(String name,String hospital);
	/*@Query(value = "select json from wlyy_temp",nativeQuery = true)
	List<String> findTemp();*/
}

+ 30 - 0
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/dao/DoctorMappingDao.java

@ -0,0 +1,30 @@
/*******************************************************************************
 * Copyright (c) 2005, 2014 springside.github.io
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 *******************************************************************************/
package com.yihu.wlyy.service.dao;
import com.yihu.wlyy.service.entity.Doctor;
import com.yihu.wlyy.service.entity.DoctorMapping;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
/**
 * 医生映射接口
 **/
public interface DoctorMappingDao extends PagingAndSortingRepository<DoctorMapping, Long>,JpaSpecificationExecutor<DoctorMapping> {
    @Query("select a.jwDoctor from DoctorMapping a where a.doctorCode = ?1 and a.jwDoctorHospital = ?2")
    String findByDocotrCodeAndJwDoctorHospital(String docotrCode,String jwDoctorHospital);
    DoctorMapping findByJwDoctorHospitalAndJwDoctor(String jwDoctorHospital,String jwDoctor);
    @Query("select a from Doctor a,DoctorMapping b where a.code = b.doctorCode and b.jwDoctorHospital = ?1 and b.jwDoctor = ?2")
    Doctor getDoctorByJw(String jwDoctorHospital,String jwDoctor);
    @Query("select a from Doctor a,DoctorMapping b where a.code = b.doctorCode and a.code = ?1 and b.jwDoctorHospital = ?2")
    Doctor getDoctor(String docotrCode,String jwDoctorHospital);
}

+ 29 - 0
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/dao/DoctorTeamDao.java

@ -0,0 +1,29 @@
package com.yihu.wlyy.service.dao;
import com.yihu.wlyy.service.entity.DoctorTeam;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
public interface DoctorTeamDao extends
		PagingAndSortingRepository<DoctorTeam, Long>,
		JpaSpecificationExecutor<DoctorTeam> {
	DoctorTeam findByCode(String code);
	//@Query("select dt from DoctorTeam dt,DoctorTeamMember dtm  where dt.code=dtm.team and dt.del=1 and dtm.del=1 and dtm.memberCode= ?1 and dtm.type= 5 and dtm.signType='2'")
	@Query("select dtt from DoctorTeam dtt where dtt.id = (select max(dt.id) from DoctorTeam dt,DoctorTeamMember dtm  where dt.code=dtm.team and dt.del=1 and dtm.del=1 and dtm.memberCode= ?1 and dtm.type= 5 and dtm.signType='2')")
	DoctorTeam findByParientCode(String parientCode);
	@Query("select dt from DoctorTeam dt,DoctorTeamMember dtm  where dt.code=dtm.team and dt.del=1 and dtm.del=1 and dtm.memberCode= ?1 and dtm.type= 5 and dtm.signType='1'")
	DoctorTeam findBySanshiParientCode(String parientCode);
	//@Query("select dt from DoctorTeam dt,DoctorTeamMember dtm  where dt.code=dtm.team and dt.del=1 and dtm.del=1 and dtm.memberCode= ?1 and dtm.type= 5 and dtm.signType=?2 order by dtm.id limit 1")
	@Query("select dtt from DoctorTeam dtt where dtt.id = (select max(dt.id) from DoctorTeam dt,DoctorTeamMember dtm  where dt.code=dtm.team and dt.del=1 and dtm.del=1 and dtm.memberCode= ?1 and dtm.type= 5 and dtm.signType=?2)")
	DoctorTeam findByParientCodeAndSignType(String parientCode, String type);
	@Modifying
	@Query("update DoctorTeam a set a.del =0  where a.code = ?1 and signType='2'")
	void deleteTeam(String teamCode);
}

+ 60 - 0
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/dao/DoctorTeamMemberDao.java

@ -0,0 +1,60 @@
package com.yihu.wlyy.service.dao;
import com.yihu.wlyy.service.entity.DoctorTeamMember;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.data.repository.query.Param;
import java.util.List;
/**
 * Created by hzp on 2016/10/13.
 */
public interface DoctorTeamMemberDao extends PagingAndSortingRepository<DoctorTeamMember, Long>, JpaSpecificationExecutor<DoctorTeamMember> {
    @Query(" FROM DoctorTeamMember a WHERE a.team=?1 and a.type=?2 and a.del='1'")
    DoctorTeamMember findDoctor2ByTeam(String code, int type);
    @Query(" FROM DoctorTeamMember a WHERE a.team=?1 and a.type=?2 and a.del='1'and signType='1'")
    DoctorTeamMember findDoctorSanshi2ByTeam(String code, int type);
    @Query(" FROM DoctorTeamMember a WHERE a.team=?1 and a.type=?2 and a.del='1'and signType='2'")
    DoctorTeamMember findDoctorJiating2ByTeam(String code, int type);
    @Query(" FROM DoctorTeamMember a WHERE a.team=?1 and a.memberCode=?2 and a.del='1'")
    DoctorTeamMember findMemberCodeAndTeam(String code, String doctor);
    @Modifying
    @Query("update DoctorTeamMember a set a.del = '0' where a.team = ?1 and a.type=1 ")
    void updateType1Del(String code);
    @Modifying
    @Query("update DoctorTeamMember a set a.del = '0' where a.team = ?1 and signType='2' ")
    void deleteMember(String code);
    @Query("select count(a) FROM DoctorTeamMember a WHERE a.memberCode =?1 and  a.del='1'")
    Integer teamListByDoctorCode(String doctorCode);
    @Query(" FROM DoctorTeamMember a WHERE a.team =?1 and  a.del='1' and  a.signType='1'")
    List<DoctorTeamMember> findBySanshiTeam(String teamCode);
    @Query(" FROM DoctorTeamMember a WHERE a.team =?1 and  a.del='1' and  a.signType='1' and  a.type=?2 ")
    DoctorTeamMember findSanshiByTeamAndType(String teamCode, int i);
    List<DoctorTeamMember> findByTeamAndDel(String team, String del);
    @Query(" FROM DoctorTeamMember a WHERE a.team =?1 and  a.del='1' and  a.signType='2' and  a.memberCode=?2 ")
    DoctorTeamMember findMemberByTeamAndCode(String teamCode, String oldDoctorCode);
    /**
     * 判断医生是否为三师签团队的成员。
     *
     * @param doctorCode
     * @return
     */
    @Query("SELECT case when count(a) > 0 THEN true else false END FROM DoctorTeamMember a WHERE a.signType = 1 AND a" +
            ".memberCode = :memberCode")
    Boolean isSanShiSigning(@Param("memberCode") String doctorCode);
}

+ 21 - 0
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/dao/FollowupContentDao.java

@ -0,0 +1,21 @@
/*******************************************************************************
 * Copyright (c) 2005, 2014 springside.github.io
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 *******************************************************************************/
package com.yihu.wlyy.service.dao;
import com.yihu.wlyy.service.entity.FollowupContent;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
public interface FollowupContentDao extends PagingAndSortingRepository<FollowupContent, Long>, JpaSpecificationExecutor<FollowupContent> {
    @Query("select distinct a.followupProject from FollowupContent a where a.followupId=?1")
    List<String> findProjectByFollowupId(Long followupId) throws Exception;
    List<FollowupContent> findByFollowupIdAndFollowupProject(Long followupId, String followupProject);
}

+ 21 - 0
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/dao/FollowupDao.java

@ -0,0 +1,21 @@
/*******************************************************************************
 * Copyright (c) 2005, 2014 springside.github.io
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 *******************************************************************************/
package com.yihu.wlyy.service.dao;
import com.yihu.wlyy.service.entity.Followup;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.Date;
import java.util.List;
public interface FollowupDao extends PagingAndSortingRepository<Followup, Long>, JpaSpecificationExecutor<Followup> {
    @Query("select a from Followup a where a.doctorCode = ?1 and a.followupDate between ?2 and ?3 and a.status <> '0'")
    List<Followup> findByDoctor(String doctor, Date begin, Date end, Pageable pageRequest) throws Exception;
}

+ 22 - 0
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/dao/FollowupDrugsDao.java

@ -0,0 +1,22 @@
/*******************************************************************************
 * Copyright (c) 2005, 2014 springside.github.io
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 *******************************************************************************/
package com.yihu.wlyy.service.dao;
import com.yihu.wlyy.service.entity.FollowupDrugs;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
public interface FollowupDrugsDao extends PagingAndSortingRepository<FollowupDrugs, Long>, JpaSpecificationExecutor<FollowupDrugs> {
    @Modifying
    @Query("delete FollowupDrugs a where a.followupId=?1")
    int deleteByFollowupId(Long followupId) throws Exception;
    List<FollowupDrugs> findByFollowupId(Long followupId) throws Exception;
}

+ 42 - 0
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/dao/HospitalDao.java

@ -0,0 +1,42 @@
/*******************************************************************************
 * Copyright (c) 2005, 2014 springside.github.io
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 *******************************************************************************/
package com.yihu.wlyy.service.dao;
import com.yihu.wlyy.service.entity.Hospital;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
public interface HospitalDao extends PagingAndSortingRepository<Hospital, Long>,JpaSpecificationExecutor<Hospital> {
	// 根據CODE查詢医院名称
	@Query("select p from Hospital p where p.code = ?1")
	Hospital findByCode(String code);
	@Query("select a from Hospital a where a.name like ?1 and a.id<?2")
	Page<Hospital> getHospitalList(String query, long id, Pageable pageRequest);
	@Query("select p from Hospital p where p.del = 1 and p.level in (1,2) ")
	List<Hospital> findAllHospital();
	@Query("select p from Hospital p where p.del = 1 and p.level = 2 ")
	List<Hospital> findAllSqHospital();
	@Query("select p from Hospital p where p.del = 1 and p.level = 2 and town = ?1")
	List<Hospital> findAreaSqHospital(String town);
	@Query("select p from Hospital p where p.del = 1 and p.level =2 ")
	List<Hospital> findHospital2();
	@Query("select p from Hospital p where p.del = 1 and p.level =2 ")
	List<Hospital> findHospitalzxFWZ();
	@Query("select p from Hospital p where p.town = ?1 and p.del='1' and p.level =2 and p.centerSite='00'")
	List<Hospital> findByTownCode(String town);
}

+ 32 - 0
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/dao/HospitalMappingDao.java

@ -0,0 +1,32 @@
/*******************************************************************************
 * Copyright (c) 2005, 2014 springside.github.io
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 *******************************************************************************/
package com.yihu.wlyy.service.dao;
import com.yihu.wlyy.service.entity.HospitalMapping;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
/**
 * 医院映射接口
 **/
public interface HospitalMappingDao extends PagingAndSortingRepository<HospitalMapping, Long>,JpaSpecificationExecutor<HospitalMapping> {
	@Query(value="select a.photo from dm_hospital a,wlyy_hospital_mapping b where a.code = b.code and b.mapping_code = ?1 and b.type=?2",nativeQuery = true)
	String getPhotoByMappingCode(String mappingCode,String type);
	@Query("select a from HospitalMapping a where a.code=?1 and a.type=?2")
	HospitalMapping getMappingCode(String code, String type);
	@Query("select a from HospitalMapping a where a.mappingCode=?1 and a.type=?2")
	HospitalMapping getCodeByMapping(String mappingCode, String type);
	@Query("select a from HospitalMapping a where a.licence is not null and a.licence<>'' and a.type='1'")
	List<HospitalMapping> findJwOrg() throws Exception;
}

+ 19 - 0
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/dao/HttpLogDao.java

@ -0,0 +1,19 @@
/*******************************************************************************
 * Copyright (c) 2005, 2014 springside.github.io
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 *******************************************************************************/
package com.yihu.wlyy.service.dao;
import com.yihu.wlyy.service.entity.HttpLog;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
public interface HttpLogDao extends PagingAndSortingRepository<HttpLog, Long>,JpaSpecificationExecutor<HttpLog> {
    @Query("select a.response from HttpLog a where a.status='6' and a.params = ?1" )
    String findSpcLog(String hospital);
}

+ 20 - 0
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/dao/MessageDao.java

@ -0,0 +1,20 @@
/*******************************************************************************
 * Copyright (c) 2005, 2014 springside.github.io
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 *******************************************************************************/
package com.yihu.wlyy.service.dao;
import com.yihu.wlyy.service.entity.Message;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
public interface MessageDao extends PagingAndSortingRepository<Message, Long>, JpaSpecificationExecutor<Message> {
	@Query("select a from Message a where a.type=1 and a.read=1 and a.sender = ?1 and a.receiver = ?2")
	List<Message> findSignFamilyMessage(String sender, String receiver);
}

+ 36 - 0
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/dao/PatientDao.java

@ -0,0 +1,36 @@
/*******************************************************************************
 * Copyright (c) 2005, 2014 springside.github.io
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 *******************************************************************************/
package com.yihu.wlyy.service.dao;
import com.yihu.wlyy.service.entity.Patient;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
public interface PatientDao extends PagingAndSortingRepository<Patient, Long> {
	// 查询患者姓名
	@Query("select p.name from Patient p where p.code=?1 and p.status=1")
	String findNameByCode(String code);
	// 根據患者標識查詢患者信息
	@Query("select p from Patient p where p.code=?1 and p.status=1")
	Patient findByCode(String code);
	// 根據身份證號查詢患者信息
	@Query("select p from Patient p where p.idcard=?1 and p.status=1")
	Patient findByIdcard(String idcard);
	
	@Query("select p from Patient p where p.ssc=?1 and p.status=1")
	Patient findBySsc(String ssc);
	// 根據手机号查詢患者信息
	@Query("select p from Patient p where p.mobile=?1 and p.status=1")
	List<Patient> findByMobile(String mobile);
}

+ 14 - 0
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/dao/PatientDeviceDao.java

@ -0,0 +1,14 @@
package com.yihu.wlyy.service.dao;
import com.yihu.wlyy.service.entity.PatientDevice;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
;
public interface PatientDeviceDao extends PagingAndSortingRepository<PatientDevice, Long>, JpaSpecificationExecutor<PatientDevice> {
	@Query(value = "select a.* from wlyy_patient_device a where a.user=?1 and a.category_code=?2 and a.device_sn=?3 limit 1",nativeQuery = true)
	PatientDevice findPatientDevice(String patient, String categoryCode, String deviceSN);
}

+ 21 - 0
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/dao/PatientDiseaseDao.java

@ -0,0 +1,21 @@
package com.yihu.wlyy.service.dao;
import com.yihu.wlyy.service.entity.PatientDisease;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
/**
 * 患者疾病Dao
 */
public interface PatientDiseaseDao extends PagingAndSortingRepository<PatientDisease, Long>, JpaSpecificationExecutor<PatientDisease> {
    @Query("select a from PatientDisease a where a.patient = ?1 and a.disease = ?2")
    PatientDisease findByPatientAndDisease(String patient,String disease);
}

+ 39 - 0
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/dao/PatientFamilyMemberDao.java

@ -0,0 +1,39 @@
package com.yihu.wlyy.service.dao;
import com.yihu.wlyy.service.entity.PatientFamilyMember;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
/**
 * 家庭成员
 * Created by hzp on 2017/02/23.
 */
public interface PatientFamilyMemberDao extends PagingAndSortingRepository<PatientFamilyMember, Long>,
        JpaSpecificationExecutor<PatientFamilyMember> {
    /**
     * 查询居民的某个成员
     * @param patient 居民
     * @param member 成员
     * @return
     */
    PatientFamilyMember findByPatientAndFamilyMember(String patient, String member);
    /**
     * 查询居民的某个关系成员
     * @param patient 居民
     * @param familyRelation 关系
     * @return
     */
    List<PatientFamilyMember> findByPatientAndFamilyRelation(String patient, Integer familyRelation);
    /**
     * 查找某个居民的家庭成员
     *
     * @param patient 居民
     * @return
     */
    List<PatientFamilyMember> findByPatient(String patient);
}

+ 38 - 0
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/dao/PatientReservationDao.java

@ -0,0 +1,38 @@
/*******************************************************************************
 * Copyright (c) 2005, 2014 springside.github.io
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 *******************************************************************************/
package com.yihu.wlyy.service.dao;
import com.yihu.wlyy.service.entity.PatientReservation;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.Date;
import java.util.List;
public interface PatientReservationDao extends PagingAndSortingRepository<PatientReservation, Long>, JpaSpecificationExecutor<PatientReservation> {
	PatientReservation findById(Long id);
	PatientReservation findByCode(String code);
	List<PatientReservation> findByPatient(String patient, Pageable page);
	List<PatientReservation> findByPatientAndAdminTeamCode(String patient, Long teamCode, Pageable page);
	List<PatientReservation> findByDoctor(String doctor, Pageable page);
	@Query("select count(1) from PatientReservation a where a.doctor = ?1 and a.patient=?2 ")
	Long  countReservationByDoctorForPatient(String doctor, String patient);
	@Query(value = "select a.* from wlyy_patient_reservation a where a.patient = ?1 and a.canceler=?2 and a.canceler_time>?3 and a.status ='0' order by a.canceler_time DESC limit 1",nativeQuery = true)
	PatientReservation findByPatientAndCancelerAndCancelTime(String patient, String canceler, String cancelerTime);
	//根据患者医获取近三个月的已取消的预约记录
	@Query("select a from PatientReservation a where a.patient = ?1 and a.startTime between ?2 and ?3 and a.status = 0 order by a.startTime desc")
	List<PatientReservation> findByPatientAndStartTime(String patientCode, Date startTime, Date endTime);
}

+ 24 - 0
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/dao/QuotaResultDao.java

@ -0,0 +1,24 @@
package com.yihu.wlyy.service.dao;
import com.yihu.wlyy.service.entity.QuotaResult;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
/**
 * Created by Administrator on 2016/8/16.
 */
public interface QuotaResultDao extends PagingAndSortingRepository<QuotaResult, String>, JpaSpecificationExecutor<QuotaResult> {
    @Query("select a FROM QuotaResult a WHERE a.quotaDate =?1 and a.quatoCode=?2 and a.city=?3 and a.level1Type='4' and a.del='1'")
    QuotaResult findByQuatoDateAndQuatoCodeAndCity(String quotaDate, String quatoCode, String city);
    @Query("select a FROM QuotaResult a WHERE a.quotaDate =?1 and a.quatoCode=?2 and a.town=?3 and a.level1Type='3' and a.del='1'")
    QuotaResult findByQuatoDateAndQuatoCodeAndTown(String quotaDate, String quatoCode, String town);
    @Query("select a FROM QuotaResult a WHERE a.quotaDate =?1 and a.quatoCode=?2 and a.orgCode=?3 and a.level1Type='2' and a.del='1'")
    QuotaResult findByQuatoDateAndQuatoCodeAndOrgCode(String quotaDate, String quatoCode, String orgCode);
}

+ 62 - 0
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/dao/SignFamilyDao.java

@ -0,0 +1,62 @@
/*******************************************************************************
 * Copyright (c) 2005, 2014 springside.github.io
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 *******************************************************************************/
package com.yihu.wlyy.service.dao;
import com.yihu.wlyy.service.entity.SignFamily;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
public interface SignFamilyDao extends PagingAndSortingRepository<SignFamily, Long>, JpaSpecificationExecutor<SignFamily> {
	SignFamily findByCode(String code);
	SignFamily findByFamilyCode(String familyCode);
	/**
	 * 判断是否三师签约
	 */
	@Query("select a from SignFamily a where a.idcard = ?1 and a.type = 1 and a.status > 0")
	SignFamily findSanshiByIdcard(String idcard);
	/**
	 * 判断是否已签约
     */
	@Query("select a from SignFamily a where a.idcard = ?1 and a.type = 2 and a.status > 0")
	SignFamily findByIdcard(String idcard);
	/**
	 * 通过患者获取签约信息(家庭签约+三师签约)
	 */
	@Query(value = "select a.* from wlyy_Sign_Family a where a.patient = ?1 and a.status > 0 order by a.type desc limit 1",nativeQuery = true)
	SignFamily findByPatient(String patient);
	@Query(" from SignFamily a where a.patient = ?1 and a.type = ?2 and (a.status=-3 or a.status=-4)  order by a.id desc")
	List<SignFamily> findLastJySignByPatient(String patient, int type);
	/**
	 * 通过患者获取签约信息(家庭签约+三师签约)
	 */
	@Query("select a from SignFamily a where a.doctor = ?1 and a.type = 2 and a.status > 0")
	List<SignFamily> findByDoctor(String doctor);
	/**
	 * 判断是否已存在待处理签约
	 */
	@Query("select a from SignFamily a where a.idcard = ?1 and a.type = 2 and a.status = 0")
	SignFamily findByIdcardPre(String idcard);
	/**
	 * 判断是否存在去年签约
	 */
	@Query("select a from SignFamily a where a.idcard = ?1 and a.signYear=?2 and a.type = 2 and (a.status= -4 or a.status>0) and a.expensesStatus = '1'")
	SignFamily findOldSign(String idcard,String signYear);
}

+ 22 - 0
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/dao/SignFamilyLogDao.java

@ -0,0 +1,22 @@
/*******************************************************************************
 * Copyright (c) 2005, 2014 springside.github.io
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 *******************************************************************************/
package com.yihu.wlyy.service.dao;
import com.yihu.wlyy.service.entity.SignFamilyLog;
import com.yihu.wlyy.service.entity.SignFamilyMapping;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
/**
 * 签约日志接口
 **/
public interface SignFamilyLogDao extends PagingAndSortingRepository<SignFamilyLog, Long>,JpaSpecificationExecutor<SignFamilyLog> {
}

+ 46 - 0
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/dao/SignFamilyMappingDao.java

@ -0,0 +1,46 @@
/*******************************************************************************
 * Copyright (c) 2005, 2014 springside.github.io
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 *******************************************************************************/
package com.yihu.wlyy.service.dao;
import com.yihu.wlyy.service.entity.SignFamilyMapping;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.sql.Date;
import java.util.List;
/**
 * 签约映射接口
 **/
public interface SignFamilyMappingDao extends PagingAndSortingRepository<SignFamilyMapping, Long>,JpaSpecificationExecutor<SignFamilyMapping> {
	SignFamilyMapping findByCode(String code);
	SignFamilyMapping findByProId(String proId);
	/**
	 * 全部需要上传
	 */
	@Query("select a from SignFamilyMapping a where a.needUpload = '1'")
	List<SignFamilyMapping> findNeedUpload();
	/**
	 * 全部需要更新
	 */
	@Query("select a from SignFamilyMapping a where a.needUpdate = '1' ")
	List<SignFamilyMapping> findNeedUpdate();
	/**
	 * 全部需要预签约上传
	 */
	@Query("select a from SignFamilyMapping a where a.needRenewUpload = '1' ")
	List<SignFamilyMapping> findNeedUploadRenew();
	@Query("select a.proId from SignFamilyMapping a where a.code=?1")
	String getProId(String code);
}

+ 25 - 0
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/dao/SignFamilyRenewDao.java

@ -0,0 +1,25 @@
/*******************************************************************************
 * Copyright (c) 2005, 2014 springside.github.io
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 *******************************************************************************/
package com.yihu.wlyy.service.dao;
import com.yihu.wlyy.service.entity.SignFamily;
import com.yihu.wlyy.service.entity.SignFamilyRenew;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
public interface SignFamilyRenewDao extends PagingAndSortingRepository<SignFamilyRenew, Long>, JpaSpecificationExecutor<SignFamilyRenew> {
    SignFamilyRenew findByCode(String code);
    /**
     * 判断是否已签约
     */
    @Query("select a from SignFamilyRenew a where a.idcard = ?1 and a.type = 2 and a.status > 0")
    SignFamilyRenew findByIdcard(String idcard);
}

+ 28 - 0
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/dao/SignFamilyRenewLogDao.java

@ -0,0 +1,28 @@
/*******************************************************************************
 * Copyright (c) 2005, 2014 springside.github.io
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 *******************************************************************************/
package com.yihu.wlyy.service.dao;
import com.yihu.wlyy.service.entity.SignFamilyRenewLog;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
/**
 * 续签日志接口
 **/
public interface SignFamilyRenewLogDao extends PagingAndSortingRepository<SignFamilyRenewLog, Long>,JpaSpecificationExecutor<SignFamilyRenewLog> {
    SignFamilyRenewLog findByIdcardAndSignYear(String idcard,String signYear);
    SignFamilyRenewLog findByProId(String proId);
    SignFamilyRenewLog findByRenewProId(String renewProId);
    @Query("select a from SignFamilyRenewLog a where a.needUpload ='1'")
    List<SignFamilyRenewLog> findNeedUpload();
}

+ 81 - 0
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/dao/SignPatientLabelInfoDao.java

@ -0,0 +1,81 @@
package com.yihu.wlyy.service.dao;
import com.yihu.wlyy.service.entity.SignPatientLabelInfo;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
/**
 * Created by lyr on 2016/10/9.
 */
public interface SignPatientLabelInfoDao extends
        PagingAndSortingRepository<SignPatientLabelInfo, Long>,
        JpaSpecificationExecutor<SignPatientLabelInfo> {
    /**
     * 查询某个患者的标签
     *
     * @param patient 患者
     * @param status  状态
     * @return
     */
    List<SignPatientLabelInfo> findByPatientAndStatus(String patient, Integer status);
    /**
     * 查询某个患者的某个类型标签
     *
     * @param patient   患者
     * @param labelType 标签类型
     * @param status    状态
     * @return
     */
    List<SignPatientLabelInfo> findByPatientAndLabelTypeAndStatus(String patient, String labelType, Integer status);
    /**
     * 获取患者某类标签标识
     */
    @Query("select a from SignPatientLabelInfo a where a.patient=?1 and a.labelType=?2 and a.status='1'")
    SignPatientLabelInfo findFlagByLabelType(String patient, String labelType);
    /**
     * 查询某个患者的某个类型的某个标签
     *
     * @param patient   患者
     * @param labelCode  标签代码
     * @param labelType 标签类型
     * @param status    状态
     * @return
     */
    SignPatientLabelInfo findByPatientAndLabelAndLabelTypeAndStatus(String patient, String labelCode, String labelType, Integer status);
    /**
     * 删除患者的某个标签类型的所有指定状态标签
     *
     * @param patient
     * @param labelType
     * @param status
     * @return
     */
    int deleteByPatientAndLabelTypeAndStatus(String patient, String labelType, Integer status);
    /**
     * 更新某个标签名称
     *
     * @param labelName
     * @param labelCode
     * @return
     */
    @Modifying
    @Query("update SignPatientLabelInfo a set a.labelName = ?1 where a.label= ?2 and a.labelType = '4' ")
    int updateLabelName(String labelName, String labelCode);
   /* @Modifying
    @Query("delete SignPatientLabelInfo a where a.patient= ?1 and a.labelType in ('1','2','3','4')")
    int deletePatientLabels(String patient); */
}

+ 16 - 0
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/dao/SystemDictDao.java

@ -0,0 +1,16 @@
package com.yihu.wlyy.service.dao;
import com.yihu.wlyy.service.entity.SystemDict;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
/**
 * Created by hzp on 2016/10/24.
 */
public interface SystemDictDao extends PagingAndSortingRepository<SystemDict, Long>, JpaSpecificationExecutor<SystemDict> {
    @Query("select s from SystemDict s where s.dictName=?1 and s.code=?2")
    SystemDict findByDictNameAndCode(String dictName,String code);
}

+ 66 - 0
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/dao/device/PatientHealthIndexDao.java

@ -0,0 +1,66 @@
package com.yihu.wlyy.service.dao.device;
import com.yihu.wlyy.service.entity.device.PatientHealthIndex;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.Date;
import java.util.List;
public interface PatientHealthIndexDao
		extends PagingAndSortingRepository<PatientHealthIndex, Long>, JpaSpecificationExecutor<PatientHealthIndex> {
	
	/**
	 * 按录入时间和患者标识查询健康记录
	 * @param patientCode
	 * @param date
	 * @return
	 */
	@Query("select a from PatientHealthIndex a where a.user = ?1 and type = ?2 and a.recordDate = ?3 and a.del = '1'")
	Iterable<PatientHealthIndex> findByPatienDate(String patientCode, int type, Date date);
	
	@Query("select a from PatientHealthIndex a where a.user = ?1 and a.type = ?2 and a.recordDate between ?3 and ?4 and a.del = '1' group by recordDate order by recordDate asc")
	Iterable<PatientHealthIndex> findByPatient(String user, int type, Date begin, Date end);
	
	@Query("select a.value1 from PatientHealthIndex a where a.user = ?1 and a.type = ?2 and a.recordDate < ?3 and a.value1 > 0 order by recordDate desc")
	Page<String> findValue1ByPatient(String user, int type, Date recordDate, Pageable pageRequest);
	
	@Query("select a.value2 from PatientHealthIndex a where a.user = ?1 and a.type = ?2 and a.recordDate < ?3 and a.value2 > 0 order by recordDate desc")
	Page<String> findValue2ByPatient(String user, int type, Date recordDate, Pageable pageRequest);
	
	@Query("select a.value3 from PatientHealthIndex a where a.user = ?1 and a.type = ?2 and a.recordDate < ?3 and a.value3 > 0 order by recordDate desc")
	Page<String> findValue3ByPatient(String user, int type, Date recordDate, Pageable pageRequest);
	
	@Query("select a.value4 from PatientHealthIndex a where a.user = ?1 and a.type = ?2 and a.recordDate < ?3 and a.value4 > 0 order by recordDate desc")
	Page<String> findValue4ByPatient(String user, int type, Date recordDate, Pageable pageRequest);
	
	@Query("select a.value5 from PatientHealthIndex a where a.user = ?1 and a.type = ?2 and a.recordDate < ?3 and a.value5 > 0 order by recordDate desc")
	Page<String> findValue5ByPatient(String user, int type, Date recordDate, Pageable pageRequest);
	
	@Query("select a.value6 from PatientHealthIndex a where a.user = ?1 and a.type = ?2 and a.recordDate < ?3 and a.value6 > 0 order by recordDate desc")
	Page<String> findValue6ByPatient(String user, int type, Date recordDate, Pageable pageRequest);
	
	@Query("select a.value7 from PatientHealthIndex a where a.user = ?1 and a.type = ?2 and a.recordDate < ?3 and a.value7 > 0 order by recordDate desc")
	Page<String> findValue7ByPatient(String user, int type, Date recordDate, Pageable pageRequest);
	@Query("select a from PatientHealthIndex a where a.user = ?1 and a.type = ?2 and a.recordDate >= ?3 and a.recordDate <= ?4 and a.del = '1'")
	Page<PatientHealthIndex> findIndexByPatient(String patient, int type, Date start, Date end, Pageable pageRequest);
	@Query("SELECT a FROM PatientHealthIndex a where a.user = ?1 order by a.recordDate desc ")
	Iterable<PatientHealthIndex> findRecentByPatient(String patient);
	@Query("select DATE_FORMAT(a.recordDate,'%Y-%m-%d') from PatientHealthIndex a where a.user = ?1 and a.recordDate >= ?2 and a.recordDate <= ?3 and a.del = '1' group by DATE_FORMAT(a.recordDate,'%Y-%m-%d') order by DATE_FORMAT(a.recordDate,'%Y-%m-%d') desc")
	List<String> findDateList(String patient, Date start, Date end, Pageable pageRequest);
	/**
	 * 获取患者一天血糖值
     */
	@Query("select a from PatientHealthIndex a where a.type=1 and a.user = ?1 and DATE_FORMAT(a.recordDate,'%Y-%m-%d') = ?2 order by a.recordDate,a.id")
	List<PatientHealthIndex> findByDate(String patient, String date);
	@Query(value = "select a.* from device.wlyy_patient_health_index a where a.user=?1 and a.type=?2 order by a.record_date desc limit 0,1",nativeQuery = true)
	PatientHealthIndex findLastData(String patient, Integer type);
}

+ 80 - 0
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/entity/AdminTeam.java

@ -0,0 +1,80 @@
package com.yihu.wlyy.service.entity;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yihu.wlyy.service.common.model.IdEntity;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.util.Date;
/**
 * 行政团队
 */
@Entity
@Table(name = "wlyy_admin_team")
public class AdminTeam extends IdEntity {
	// 名稱
	private String name;	
	// 是否作废,1正常,0作废
	private boolean available;
	//创建时间
	private Date createTime;
	//机构代码
	private String orgCode;
	//领队医生代码
	private String leaderCode;
	//基卫映射团队代码
	private String mappingCode;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public boolean getAvailable() {
		return available;
	}
	public void setAvailable(boolean available) {
		this.available = available;
	}
	public Date getCreateTime() {
		return createTime;
	}
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
	public void setCreateTime(Date createTime) {
		this.createTime = createTime;
	}
	public String getOrgCode() {
		return orgCode;
	}
	public void setOrgCode(String orgCode) {
		this.orgCode = orgCode;
	}
	public String getLeaderCode() {
		return leaderCode;
	}
	public void setLeaderCode(String leaderCode) {
		this.leaderCode = leaderCode;
	}
	public String getMappingCode() {
		return mappingCode;
	}
	public void setMappingCode(String mappingCode) {
		this.mappingCode = mappingCode;
	}
}

+ 0 - 0
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/entity/AdminTeamMember.java


Some files were not shown because too many files changed in this diff