Przeglądaj źródła

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

wangzhinan 3 lat temu
rodzic
commit
8fb894a6f7
81 zmienionych plików z 1550 dodań i 249 usunięć
  1. 3 0
      business/base-service/src/main/java/com/yihu/jw/hospital/message/dao/SystemMessageDao.java
  2. 12 0
      common/common-entity/sql记录
  3. 73 0
      common/common-entity/src/main/java/com/yihu/jw/entity/care/device/PatientSafeAreaConfirm.java
  4. 9 0
      common/common-entity/src/main/java/com/yihu/jw/entity/care/device/PatientSafeAreaDO.java
  5. 1 0
      common/common-entity/src/main/java/com/yihu/jw/entity/hospital/message/SystemMessageDO.java
  6. 0 4
      common/common-fegin/pom.xml
  7. 0 4
      gateway/ag-basic/pom.xml
  8. 0 8
      server/svr-admin-server/pom.xml
  9. 0 4
      server/svr-authentication/pom.xml
  10. 1 1
      server/svr-authentication/src/main/java/com/yihu/jw/security/oauth2/provider/endpoint/WlyyIotLoginEndpoint.java
  11. 1 1
      server/svr-authentication/src/main/java/com/yihu/jw/security/oauth2/provider/endpoint/WlyyLoginEndpoint.java
  12. 1 1
      server/svr-authentication/src/main/resources/application.yml
  13. 0 4
      server/svr-configuration/pom.xml
  14. 0 4
      server/svr-dashboard/pom.xml
  15. 0 4
      server/svr-zipkin/pom.xml
  16. 0 4
      svr/figure-label/pom.xml
  17. 0 5
      svr/svr-base/pom.xml
  18. 4 1
      svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/device/DeviceManageEndpoint.java
  19. 0 4
      svr/svr-cloud-care/pom.xml
  20. 20 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/dao/device/PatientSafeAreaConfirmDao.java
  21. 9 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/dao/device/PatientSafeAreaDao.java
  22. 1 1
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/doctor/DoctorBirthdayWishesEndpoint.java
  23. 32 7
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/family/FamilyMemberEndpoint.java
  24. 22 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/message/PatientMessageEndpoint.java
  25. 11 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/patient/PatientContactsEndpoint.java
  26. 87 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/safeArea/DoctorSafeAreaController.java
  27. 31 6
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/security/SecurityMonitoringOrderEndpoint.java
  28. 15 1
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/sign/SignEndpoint.java
  29. 1 1
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/third/platForm/PatientInfoPlatFormEndpoint.java
  30. 1 1
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/assistance/EmergencyAssistanceService.java
  31. 25 5
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/consult/ConsultTeamService.java
  32. 1 1
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/contacts/ContactsService.java
  33. 126 3
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/device/PatientDeviceService.java
  34. 4 3
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/device/PatientHealthIndexService.java
  35. 1 2
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/family/PatientFamilyMemberService.java
  36. 1 1
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/label/PatientLableService.java
  37. 1 1
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/lifeCare/LifeCareOrderService.java
  38. 36 4
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/message/BaseServiceNewsService.java
  39. 1 1
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/message/DoctorMessageService.java
  40. 68 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/message/PatientMessageService.java
  41. 1 1
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/patient/OnlineContactService.java
  42. 55 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/safeArea/SafeAreaService.java
  43. 247 27
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/security/SecurityMonitoringOrderService.java
  44. 1 1
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/sign/ServicePackageService.java
  45. 34 5
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/statistics/DetectionPlatformService.java
  46. 25 8
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/statistics/StatisticsService.java
  47. 49 8
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/third/PatientInfoPlatFormService.java
  48. 1 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/visit/BaseVisitService.java
  49. 119 4
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/util/GetuiUtil.java
  50. 4 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/util/MessageUtil.java
  51. 2 0
      svr/svr-cloud-device/src/main/java/com/yihu/jw/care/dao/device/PatientSafeAreaDao.java
  52. 21 6
      svr/svr-cloud-device/src/main/java/com/yihu/jw/care/service/DeviceService.java
  53. 2 0
      svr/svr-cloud-device/src/main/java/com/yihu/jw/care/util/DeviceDataPushLogUtil.java
  54. 4 0
      svr/svr-cloud-device/src/main/java/com/yihu/jw/care/util/DeviceLostMessageUtil.java
  55. 10 1
      svr/svr-cloud-device/src/main/java/com/yihu/jw/care/util/SecurityOrderUtil.java
  56. 0 5
      svr/svr-cloud-job/pom.xml
  57. 4 0
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/util/DeviceLostMessageUtil.java
  58. 0 5
      svr/svr-cloud-medicine/pom.xml
  59. 0 4
      svr/svr-door-service/pom.xml
  60. 0 4
      svr/svr-healthy-house/pom.xml
  61. 0 4
      svr/svr-internet-hospital-entrance/pom.xml
  62. 0 5
      svr/svr-internet-hospital-job/pom.xml
  63. 0 5
      svr/svr-internet-hospital/pom.xml
  64. 0 5
      svr/svr-iot-job/pom.xml
  65. 0 5
      svr/svr-patient/pom.xml
  66. 0 4
      svr/svr-rehabilitation/pom.xml
  67. 0 13
      svr/svr-statistics-es/src/main/java/com/yihu/wlyy/statistics/config/WebSecurityConfig.java
  68. 0 12
      svr/svr-statistics/pom.xml
  69. 0 13
      svr/svr-statistics/src/main/java/com/yihu/jw/statistics/config/WebSecurityConfig.java
  70. 0 4
      svr/svr-wlyy-archives/pom.xml
  71. 0 5
      svr/svr-wlyy-health-bank/pom.xml
  72. 15 0
      svr/svr-wlyy-health-bank/src/main/java/com/yihu/jw/config/jpa/WlyyHealthBankJpa.java
  73. 55 0
      svr/svr-wlyy-health-bank/src/main/java/com/yihu/jw/filter/XssAndHttpServletRequestWrapper.java
  74. 25 0
      svr/svr-wlyy-health-bank/src/main/java/com/yihu/jw/filter/XssFiter.java
  75. 91 0
      svr/svr-wlyy-health-bank/src/main/java/com/yihu/jw/util/XssUtil.java
  76. 0 4
      svr/svr-wlyy-specialist/pom.xml
  77. 15 0
      svr/svr-wlyy-specialist/src/main/java/com/yihu/jw/config/jpa/WlyySpecialistJpa.java
  78. 55 0
      svr/svr-wlyy-specialist/src/main/java/com/yihu/jw/filter/XssAndHttpServletRequestWrapper.java
  79. 25 0
      svr/svr-wlyy-specialist/src/main/java/com/yihu/jw/filter/XssFiter.java
  80. 91 0
      svr/svr-wlyy-specialist/src/main/java/com/yihu/jw/util/XssUtil.java
  81. 0 4
      svr/svr-wlyy/pom.xml

+ 3 - 0
business/base-service/src/main/java/com/yihu/jw/hospital/message/dao/SystemMessageDao.java

@ -69,4 +69,7 @@ public interface SystemMessageDao extends PagingAndSortingRepository<SystemMessa
    @Query("DELETE FROM SystemMessageDO where type='43' and relationCode in(?1) ")
    @Query("DELETE FROM SystemMessageDO where type='43' and relationCode in(?1) ")
    void delMessageByRelationCode(List<String> relationCode);
    void delMessageByRelationCode(List<String> relationCode);
    @Modifying
    @Query("update SystemMessageDO m set m.isRead=1 ,m.over=0,m.data=?3 where m.type=?1 and m.relationCode=?2 ")
    void readByTypeAndRelationCode(String type,String relationCode,String data);
}
}

+ 12 - 0
common/common-entity/sql记录

@ -1589,3 +1589,15 @@ CREATE TABLE `dm_ys_config` (
-- 2021-11-11
-- 2021-11-11
alter table base_patient  add column `home_lat_lon` varchar(100) DEFAULT NULL COMMENT '居民家庭经纬度';
alter table base_patient  add column `home_lat_lon` varchar(100) DEFAULT NULL COMMENT '居民家庭经纬度';
ALTER table wlyy_patient_safe_area add column manage_status TINYINT(2) default '0' COMMENT '电子围栏确认情况 0待确认 1已确认';
ALTER table wlyy_patient_safe_area add column manage_status TINYINT(2) default '0' COMMENT '电子围栏确认情况 0待确认 1已确认';
ALTER TABLE wlyy_patient_safe_area add column  `del` varchar(1) DEFAULT '1' COMMENT '作废标识,1正常,0作废';
CREATE TABLE wlyy_patient_safe_area_confirm (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `patient` varchar(50) DEFAULT NULL COMMENT '居民id',
	 doctor_code varchar(50) DEFAULT NULL COMMENT '助老员code',
	`safe_id` varchar(50) DEFAULT NULL COMMENT '安全区域id 关联居民电子围栏id',
  `create_time` timestamp NULL DEFAULT NULL COMMENT '创建日期',
  `manage_status` tinyint(2) DEFAULT '0' COMMENT '电子围栏确认情况 0待确认 1已确认',
  `del` varchar(1) DEFAULT '1' COMMENT '作废标识,1正常,0作废',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COMMENT='患者电子围栏新增记录';

+ 73 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/care/device/PatientSafeAreaConfirm.java

@ -0,0 +1,73 @@
package com.yihu.jw.entity.care.device;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yihu.jw.entity.IdEntity;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.util.Date;
/**
 * Created by Bing on 2021/11/16.
 */
@Entity
@Table(name="wlyy_patient_safe_area_confirm")
public class PatientSafeAreaConfirm extends IdEntity {
    private String patient;
    private String doctorCode;//助老员code
    private String safeId; //安全区域id 关联居民电子围栏id
    private String del;//作废标识,1正常,0作废
    private Integer manageStatus;//电子围栏确认情况 0待确认 1已确认
    private Date createTime;
    public String getPatient() {
        return patient;
    }
    public void setPatient(String patient) {
        this.patient = patient;
    }
    public String getDoctorCode() {
        return doctorCode;
    }
    public void setDoctorCode(String doctorCode) {
        this.doctorCode = doctorCode;
    }
    public String getSafeId() {
        return safeId;
    }
    public void setSafeId(String safeId) {
        this.safeId = safeId;
    }
    public String getDel() {
        return del;
    }
    public void setDel(String del) {
        this.del = del;
    }
    public Integer getManageStatus() {
        return manageStatus;
    }
    public void setManageStatus(Integer manageStatus) {
        this.manageStatus = manageStatus;
    }
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
}

+ 9 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/care/device/PatientSafeAreaDO.java

@ -21,6 +21,7 @@ public class PatientSafeAreaDO extends IdEntity {
    private Date createTime;
    private Date createTime;
    private Date updateTime;
    private Date updateTime;
    private String del;//作废标识,1正常,0作废
    private Integer manageStatus;//电子围栏确认情况 0待确认 1已确认
    private Integer manageStatus;//电子围栏确认情况 0待确认 1已确认
    public String getPatient() {
    public String getPatient() {
@ -73,4 +74,12 @@ public class PatientSafeAreaDO extends IdEntity {
    public void setManageStatus(Integer manageStatus) {
    public void setManageStatus(Integer manageStatus) {
        this.manageStatus = manageStatus;
        this.manageStatus = manageStatus;
    }
    }
    public String getDel() {
        return del;
    }
    public void setDel(String del) {
        this.del = del;
    }
}
}

+ 1 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/hospital/message/SystemMessageDO.java

@ -22,6 +22,7 @@ public class SystemMessageDO extends UuidIdentityEntity {
     * 人文关怀系统消息 41
     * 人文关怀系统消息 41
     * 体征设备测量系统消息 42
     * 体征设备测量系统消息 42
     * 设备离线系统消息 43
     * 设备离线系统消息 43
     * 监护确认消息 44
     * 家属紧急预警系统消息 50
     * 家属紧急预警系统消息 50
     * 新生儿在线咨询 850
     * 新生儿在线咨询 850
     * 老人在线咨询 851
     * 老人在线咨询 851

+ 0 - 4
common/common-fegin/pom.xml

@ -73,10 +73,6 @@
            <groupId>org.springframework.boot</groupId>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>
        </dependency>
        <!--  <dependency>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-actuator</artifactId>
          </dependency>-->
        <!--<dependency>-->
        <!--<dependency>-->
        <!--<groupId>org.springframework.boot</groupId>-->
        <!--<groupId>org.springframework.boot</groupId>-->
        <!--<artifactId>spring-boot-starter-security</artifactId>-->
        <!--<artifactId>spring-boot-starter-security</artifactId>-->

+ 0 - 4
gateway/ag-basic/pom.xml

@ -41,10 +41,6 @@
        </dependency>
        </dependency>
        <!-- 支持Tomcat启动 -->
        <!-- 支持Tomcat启动 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>
            <artifactId>spring-cloud-starter-eureka</artifactId>

+ 0 - 8
server/svr-admin-server/pom.xml

@ -19,14 +19,6 @@
            <groupId>org.springframework.boot</groupId>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-actuator-docs</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <!--服务器监监听-->
        <!--服务器监监听-->
        <dependency>
        <dependency>
            <groupId>de.codecentric</groupId>
            <groupId>de.codecentric</groupId>

+ 0 - 4
server/svr-authentication/pom.xml

@ -71,10 +71,6 @@
            <groupId>org.springframework.cloud</groupId>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-ribbon</artifactId>
            <artifactId>spring-cloud-starter-ribbon</artifactId>
        </dependency>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
        <dependency>
            <groupId>com.zaxxer</groupId>
            <groupId>com.zaxxer</groupId>
            <artifactId>HikariCP</artifactId>
            <artifactId>HikariCP</artifactId>

+ 1 - 1
server/svr-authentication/src/main/java/com/yihu/jw/security/oauth2/provider/endpoint/WlyyIotLoginEndpoint.java

@ -69,7 +69,7 @@ public class WlyyIotLoginEndpoint {
        if (result.equals("success")) {
        if (result.equals("success")) {
            Captcha _captcha = new Captcha();
            Captcha _captcha = new Captcha();
            _captcha.setCode(captcha);
//            _captcha.setCode(captcha);
            _captcha.setExpiresIn(300);
            _captcha.setExpiresIn(300);
            wlyyRedisVerifyCodeService.store(client_id, mobile, captcha, 300);
            wlyyRedisVerifyCodeService.store(client_id, mobile, captcha, 300);

+ 1 - 1
server/svr-authentication/src/main/java/com/yihu/jw/security/oauth2/provider/endpoint/WlyyLoginEndpoint.java

@ -340,7 +340,7 @@ public class WlyyLoginEndpoint extends AbstractEndpoint {
        }
        }
        WlyyUserSimple wlyyUserSimple = userDetailsService.authSuccess(parameters.get("username"));
        WlyyUserSimple wlyyUserSimple = userDetailsService.authSuccess(parameters.get("username"));
        if ("pad".equals(parameters.get("clientType"))&&("2".equals(wlyyUserSimple.getArchiveType())) ){//医养平板端登录限制
        if ("pad".equals(parameters.get("clientType"))&&!("1".equals(wlyyUserSimple.getArchiveType())) ){//医养平板端登录限制
            throw new InvalidGrantException("不允许登录该平台");
            throw new InvalidGrantException("不允许登录该平台");
        }
        }
        wlyyUserSimple.setAccessToken(token.getValue());
        wlyyUserSimple.setAccessToken(token.getValue());

+ 1 - 1
server/svr-authentication/src/main/resources/application.yml

@ -338,7 +338,7 @@ spring:
  redis:
  redis:
    host: 59.61.92.90 # Redis server host.
    host: 59.61.92.90 # Redis server host.
    port: 9054  # Redis server port.
    port: 9054  # Redis server port.
    password: jkzlehr
    password: o!a1#B74&m
  ##发现服务
  ##发现服务
## i健康用户信息接口,开放出来给互联网医院登录同步用户信息用
## i健康用户信息接口,开放出来给互联网医院登录同步用户信息用

+ 0 - 4
server/svr-configuration/pom.xml

@ -54,10 +54,6 @@
            <groupId>org.springframework.boot</groupId>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
    </dependencies>
    </dependencies>
    <build>
    <build>

+ 0 - 4
server/svr-dashboard/pom.xml

@ -44,10 +44,6 @@
            <groupId>org.springframework.cloud</groupId>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-config</artifactId>
            <artifactId>spring-cloud-starter-config</artifactId>
        </dependency>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <groupId>org.springframework.cloud</groupId>

+ 0 - 4
server/svr-zipkin/pom.xml

@ -26,10 +26,6 @@
            <groupId>org.springframework.cloud</groupId>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-config</artifactId>
            <artifactId>spring-cloud-starter-config</artifactId>
        </dependency>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
        <dependency>
            <groupId>io.zipkin.java</groupId>
            <groupId>io.zipkin.java</groupId>

+ 0 - 4
svr/figure-label/pom.xml

@ -50,10 +50,6 @@
            <groupId>org.springframework.boot</groupId>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-autoconfigure</artifactId>
            <artifactId>spring-boot-autoconfigure</artifactId>
        </dependency>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-actuator-docs</artifactId>
        </dependency>
        <dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <artifactId>spring-beans</artifactId>

+ 0 - 5
svr/svr-base/pom.xml

@ -41,11 +41,6 @@
            <artifactId>tomcat-embed-jasper</artifactId>
            <artifactId>tomcat-embed-jasper</artifactId>
        </dependency>
        </dependency>
        <!-- 支持Tomcat启动 -->
        <!-- 支持Tomcat启动 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
            <artifactId>spring-boot-starter-data-redis</artifactId>

+ 4 - 1
svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/device/DeviceManageEndpoint.java

@ -303,6 +303,7 @@ public class DeviceManageEndpoint extends EnvelopRestEndpoint {
                }
                }
                if (!StringUtils.isEmpty(errorMsg.trim())) {
                if (!StringUtils.isEmpty(errorMsg.trim())) {
                    deviceDetail.setErrorMsg(errorMsg);
                    deviceDetail.setErrorMsg(errorMsg);
                    deviceDetail.setDeviceCode(deviceCode);
                    errorLs.add(deviceDetail);
                    errorLs.add(deviceDetail);
                    continue;
                    continue;
                }
                }
@ -315,6 +316,8 @@ public class DeviceManageEndpoint extends EnvelopRestEndpoint {
                deviceDetail.setDeviceModel(deviceModel);
                deviceDetail.setDeviceModel(deviceModel);
                deviceDetail.setDeviceCode(deviceCode);
                deviceDetail.setDeviceCode(deviceCode);
                deviceDetail.setSim(sim);
                deviceDetail.setSim(sim);
                deviceDetail.setIccid(iccid);
                deviceDetail.setImsi(imsi);
                Device device = deviceDao.findByModel(deviceModel);
                Device device = deviceDao.findByModel(deviceModel);
                if (device!=null){
                if (device!=null){
                    deviceDetail.setDeviceType(device.getDeviceType());
                    deviceDetail.setDeviceType(device.getDeviceType());
@ -334,7 +337,7 @@ public class DeviceManageEndpoint extends EnvelopRestEndpoint {
            map.put("successNum", correctLs.size());
            map.put("successNum", correctLs.size());
            map.put("failedNum", rows-1 - correctLs.size() );
            map.put("failedNum", rows-1 - correctLs.size() );
            map.put("errorData", JSON.toJSONString(errorMsgMapTotal, SerializerFeature.WriteMapNullValue));
            map.put("errorData", JSON.toJSONString(errorMsgMapTotal, SerializerFeature.WriteMapNullValue));
            map.put("errorData", errorLs);
            map.put("errorDataList", errorLs);
            return ObjEnvelop.getSuccess("success",JSON.toJSONString(map,SerializerFeature.WriteMapNullValue));
            return ObjEnvelop.getSuccess("success",JSON.toJSONString(map,SerializerFeature.WriteMapNullValue));
        } catch (Exception e) {
        } catch (Exception e) {

+ 0 - 4
svr/svr-cloud-care/pom.xml

@ -42,10 +42,6 @@
        </dependency>
        </dependency>
        <!-- 支持Tomcat启动 -->
        <!-- 支持Tomcat启动 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
            <artifactId>spring-boot-starter-data-redis</artifactId>

+ 20 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/dao/device/PatientSafeAreaConfirmDao.java

@ -0,0 +1,20 @@
package com.yihu.jw.care.dao.device;
import com.yihu.jw.entity.care.device.PatientSafeAreaConfirm;
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 PatientSafeAreaConfirmDao extends PagingAndSortingRepository<PatientSafeAreaConfirm,Long>,
        JpaSpecificationExecutor<PatientSafeAreaConfirm> {
    List<PatientSafeAreaConfirm> findByDoctorCodeAndPatient(String doctorCode,String patient);
    @Modifying
    @Query(value = "update  PatientSafeAreaConfirm p set p.manageStatus=1 where p.patient=?1")
    void manageByPatient(String patient);
}

+ 9 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/dao/device/PatientSafeAreaDao.java

@ -3,6 +3,7 @@ package com.yihu.jw.care.dao.device;
import com.yihu.jw.entity.care.device.PatientSafeAreaDO;
import com.yihu.jw.entity.care.device.PatientSafeAreaDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
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.PagingAndSortingRepository;
import java.util.List;
import java.util.List;
@ -13,9 +14,17 @@ import java.util.List;
public interface PatientSafeAreaDao extends PagingAndSortingRepository<PatientSafeAreaDO,Long>,
public interface PatientSafeAreaDao extends PagingAndSortingRepository<PatientSafeAreaDO,Long>,
        JpaSpecificationExecutor<PatientSafeAreaDO> {
        JpaSpecificationExecutor<PatientSafeAreaDO> {
    @Query(value = " select p from PatientSafeAreaDO p where p.patient=?1 and p.del='1' and p.manageStatus=1 ")
    List<PatientSafeAreaDO> findByPatient(String patient);
    List<PatientSafeAreaDO> findByPatient(String patient);
    @Query(value = " select p from PatientSafeAreaDO p where p.patient=?1 and p.del='1'")
    List<PatientSafeAreaDO> findByPatient2(String patient);
    @Modifying
    @Modifying
    @Query(value = "update PatientSafeAreaDO p set p.del='0' where p.patient=?1 ")
    void deleteByPatient(String patient);
    void deleteByPatient(String patient);
    @Modifying
    @Query(value = " update PatientSafeAreaDO p set p.manageStatus=1 where p.patient=?1")
    void manageByPatient(String patient);
}
}

+ 1 - 1
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/doctor/DoctorBirthdayWishesEndpoint.java

@ -241,7 +241,7 @@ public class DoctorBirthdayWishesEndpoint extends BaseController {
                if (patients.size()>0){//发送生日祝福
                if (patients.size()>0){//发送生日祝福
                    Map<String,Object> tmp = patients.get(0);
                    Map<String,Object> tmp = patients.get(0);
                    com.alibaba.fastjson.JSONObject json = new com.alibaba.fastjson.JSONObject();
                    com.alibaba.fastjson.JSONObject json = new com.alibaba.fastjson.JSONObject();
                    String first = "助老员key1为您发送生日祝福,请点击查看。";
                    String first = "社工key1为您发送生日祝福,请点击查看。";
                    first = first.replace("key1",one.getDoctorName());
                    first = first.replace("key1",one.getDoctorName());
                    json.put("id", one.getId());
                    json.put("id", one.getId());
//                    json.put("toUser", patient);
//                    json.put("toUser", patient);

+ 32 - 7
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/family/FamilyMemberEndpoint.java

@ -118,7 +118,7 @@ public class FamilyMemberEndpoint extends EnvelopRestEndpoint {
            if (result.getInteger(ResponseContant.resultFlag)==ResponseContant.success){
            if (result.getInteger(ResponseContant.resultFlag)==ResponseContant.success){
                return success("添加成功");
                return success("添加成功");
            }else {
            }else {
                return success(result.getString(ResponseContant.resultMsg));
                return Envelop.getError(result.getString(ResponseContant.resultMsg));
            }
            }
        } catch (Exception e) {
        } catch (Exception e) {
            return failedException2(e);
            return failedException2(e);
@ -180,8 +180,12 @@ public class FamilyMemberEndpoint extends EnvelopRestEndpoint {
            if (StringUtils.isEmpty(member)) {
            if (StringUtils.isEmpty(member)) {
                return failed( "成员不能为空",-1);
                return failed( "成员不能为空",-1);
            }
            }
            int result = familyMemberService.deleteMember(getUID(), member);
            int result=-1;
            if (StringUtils.isNotBlank(getAgentUID())){
                result = familyMemberService.deleteMember(getAgentUID(), member);
            }else   {
                result = familyMemberService.deleteMember(getUID(), member);
            }
            if (result == -1) {
            if (result == -1) {
                return failed( "与该成员的关系不存在",-1);
                return failed( "与该成员的关系不存在",-1);
@ -228,12 +232,33 @@ public class FamilyMemberEndpoint extends EnvelopRestEndpoint {
        try {
        try {
            JSONObject data = new JSONObject();
            JSONObject data = new JSONObject();
            JSONArray result = new JSONArray();
            JSONArray result = new JSONArray();
            if (StringUtils.isNotEmpty(patient)) {
                result = familyMemberService.getPatientMembers(patient, "", isContain,isContacts,archiveType);
            } else  {
                result = familyMemberService.getPatientFamilyMembers(getUID(), "",isContacts,archiveType);
            if (StringUtils.isNotBlank(getAgentUID())){
                result = familyMemberService.getPatientFamilyMembers(getAgentUID(), "",isContacts,archiveType);
            }else{
                if (StringUtils.isNotEmpty(patient)) {
                    result = familyMemberService.getPatientMembers(patient, "", isContain,isContacts,archiveType);
                } else  {
                    result = familyMemberService.getPatientFamilyMembers(getUID(), "",isContacts,archiveType);
                }
            }
            }
            data.put("normalmembers",result);//家人关系
            return ObjEnvelop.getSuccess( "查询成功", data);
        } catch (Exception e) {
            return failedObjEnvelopException2(e);
        }
    }
    @RequestMapping(value = "open/members", method = RequestMethod.GET)
    @ApiOperation(value = "家庭成员查询")
    public ObjEnvelop getOpenPatientFamilyMembers(@RequestParam(required = false) String patient,
                                              @RequestParam(required = false) String isContain,
                                              @RequestParam(required = false) Integer isContacts,
                                              @RequestParam(required = false) String archiveType) {
        try {
            JSONObject data = new JSONObject();
            JSONArray result = new JSONArray();
            result = familyMemberService.getPatientMembers(patient, "", isContain,isContacts,archiveType);
            data.put("normalmembers",result);//家人关系
            data.put("normalmembers",result);//家人关系
            return ObjEnvelop.getSuccess( "查询成功", data);
            return ObjEnvelop.getSuccess( "查询成功", data);

+ 22 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/message/PatientMessageEndpoint.java

@ -1,7 +1,9 @@
package com.yihu.jw.care.endpoint.message;
package com.yihu.jw.care.endpoint.message;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.care.aop.ObserverRequired;
import com.yihu.jw.care.aop.ObserverRequired;
import com.yihu.jw.care.service.message.PatientMessageService;
import com.yihu.jw.care.service.message.PatientMessageService;
import com.yihu.jw.restmodel.ResponseContant;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.ListEnvelop;
import com.yihu.jw.restmodel.web.ListEnvelop;
import com.yihu.jw.restmodel.web.ObjEnvelop;
import com.yihu.jw.restmodel.web.ObjEnvelop;
@ -115,5 +117,25 @@ public class PatientMessageEndpoint extends EnvelopRestEndpoint {
            return failedException2(e);
            return failedException2(e);
        }
        }
    }
        @PostMapping(value = "/ConfirmFences")
    @ApiOperation("家属确认电子围栏监护消息")
    @ObserverRequired
    public Envelop ConfirmFences(@ApiParam(name = "messageId",required = true)
                                 @RequestParam(value = "messageId")String messageId,
                                 @ApiParam(name = "safe_area",value = "lon1,lat1;lon2,lat2; 5个坐标 形成一个封闭区域  A;B;C;D;A ")
                                 @RequestParam(value = "safe_area",required = false)String safe_area){
        try {
            JSONObject result = patientMessageService.ConfirmFences(messageId,safe_area);
            if (result.getInteger(ResponseContant.resultFlag)==ResponseContant.success){
                return ObjEnvelop.getSuccess("已确认","");
            }else {
                return ObjEnvelop.getError(result.getString(ResponseContant.resultMsg));
            }
        }catch (Exception e){
            return failedException2(e);
        }
    }
    }
}
}

+ 11 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/patient/PatientContactsEndpoint.java

@ -144,4 +144,15 @@ public class PatientContactsEndpoint extends EnvelopRestEndpoint {
            return failedListEnvelopException2(e);
            return failedListEnvelopException2(e);
        }
        }
    }
    }
    @RequestMapping(value ="open/getPatientSosContacts",method = RequestMethod.GET)
    @ApiOperation(value = "获取居民紧急联系人")
    public ListEnvelop openGetPatientSosContacts(@ApiParam(name = "patient", value = "patient", defaultValue = "patient")
                                             @RequestParam(value = "patient", required = true) String patient){
        try {
            return ListEnvelop.getSuccess("获取成功",contactsService.getPatientSosContacts(patient));
        }catch (Exception e){
            return failedListEnvelopException2(e);
        }
    }
}
}

+ 87 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/safeArea/DoctorSafeAreaController.java

@ -0,0 +1,87 @@
package com.yihu.jw.care.endpoint.safeArea;
import com.yihu.jw.care.aop.ObserverRequired;
import com.yihu.jw.care.service.device.PatientDeviceService;
import com.yihu.jw.care.service.safeArea.SafeAreaService;
import com.yihu.jw.restmodel.ResponseContant;
import com.yihu.jw.restmodel.web.ObjEnvelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.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;
/**
 * Created by Bing on 2021/11/16.
 */
@RestController
@RequestMapping(value = "doctor/safeArea")
@Api(description = " 医生电子围栏")
public class DoctorSafeAreaController extends EnvelopRestEndpoint {
    @Autowired
    private PatientDeviceService patientDeviceService;
    @Autowired
    private SafeAreaService safeAreaService;
    @ApiOperation("助老员新增电子围栏记录")
    @ObserverRequired
    @RequestMapping(value = "doctorNewSafeArea",method = RequestMethod.GET)
    public ObjEnvelop doctorNewSafeArea(@ApiParam(name = "doctor",value = "doctor")
                                    @RequestParam(value = "doctor",required = false)String doctor,
                                        @ApiParam(name = "patient",value = "患者")
                                    @RequestParam(value = "patient",required = false)String patient,
                                        @ApiParam(name = "safe_area",value = "lon1,lat1;lon2,lat2; 5个坐标 形成一个封闭区域  A;B;C;D;A ")
                                    @RequestParam(value = "safe_area",required = false)String safe_area
    ){
        try {
            com.alibaba.fastjson.JSONObject result = patientDeviceService.doctorNewSafeArea(doctor,patient,safe_area);
            if (result.getInteger(ResponseContant.resultFlag)==ResponseContant.success){
                return ObjEnvelop.getSuccess("添加成功","");
            }else {
                return ObjEnvelop.getError(result.getString(ResponseContant.resultMsg));
            }
        }catch (Exception e){
            return failedObjEnvelopException2(e);
        }
    }
    @ApiOperation("查看新增围栏记录tab")
    @RequestMapping(value = "doctorNewSafeAreaTab",method = RequestMethod.GET)
    public ObjEnvelop doctorNewSafeArea(@ApiParam(name = "doctor",value = "doctor")
                                        @RequestParam(value = "doctor",required = false)String doctor,
                                        @ApiParam(name = "manageStatus",value = "患者")
                                        @RequestParam(value = "manageStatus",required = false)Integer manageStatus
    ){
        try {
            return ObjEnvelop.getSuccess("获取成功",safeAreaService.doctorNewSafeAreaTab(doctor,manageStatus));
        }catch (Exception e){
            return failedObjEnvelopException2(e);
        }
    }
    @ApiOperation("查看新增围栏记录列表")
    @RequestMapping(value = "doctorNewSafeAreaList",method = RequestMethod.GET)
    public ObjEnvelop doctorNewSafeAreaList(@ApiParam(name = "doctor",value = "doctor")
                                        @RequestParam(value = "doctor",required = false)String doctor,
                                        @ApiParam(name = "manageStatus",value = "管理状态 0 1")
                                        @RequestParam(value = "manageStatus",required = false)Integer manageStatus
    ){
        try {
            try {
                return ObjEnvelop.getSuccess("获取成功",safeAreaService.doctorNewSafeAreaList(doctor,manageStatus));
            }catch (Exception e){
                return failedObjEnvelopException2(e);
            }
        }catch (Exception e){
            return failedObjEnvelopException2(e);
        }
    }
}

+ 31 - 6
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/security/SecurityMonitoringOrderEndpoint.java

@ -68,11 +68,13 @@ public class SecurityMonitoringOrderEndpoint extends EnvelopRestEndpoint {
                                            @ApiParam(name="page",value = "page",required = true)
                                            @ApiParam(name="page",value = "page",required = true)
                                            @RequestParam(value = "page")Integer page,
                                            @RequestParam(value = "page")Integer page,
                                            @ApiParam(name="pageSize",value = "pageSize",required = true)
                                            @ApiParam(name="pageSize",value = "pageSize",required = true)
                                            @RequestParam(value = "pageSize")Integer pageSize){
                                            @RequestParam(value = "pageSize")Integer pageSize,
                                            @ApiParam(name = "dailyMonitor", value = "日常监护 1查询日常监护关联工单0否", required = false)
                                            @RequestParam(value = "dailyMonitor",required = false,defaultValue = "0") Integer dailyMonitor){
        try {
        try {
            page = page>1?page-1:0;
            page = page>1?page-1:0;
            return securityMonitoringOrderService.getSecurityOrderList(doctor,serverDoctor,patientName, patient, status, svrDesc,topicItem,page, pageSize);
            return securityMonitoringOrderService.getSecurityOrderList(doctor,serverDoctor,patientName, patient, status, svrDesc,topicItem,page, pageSize,dailyMonitor);
        }catch (Exception e){
        }catch (Exception e){
            return failedPageEnvelopException2(e);
            return failedPageEnvelopException2(e);
        }
        }
@ -89,7 +91,9 @@ public class SecurityMonitoringOrderEndpoint extends EnvelopRestEndpoint {
                                     @ApiParam(name="svrDesc",value = "服务类型 关联security_server_dict字典")
                                     @ApiParam(name="svrDesc",value = "服务类型 关联security_server_dict字典")
                                     @RequestParam(value = "svrDesc",required = false)String svrDesc,
                                     @RequestParam(value = "svrDesc",required = false)String svrDesc,
                                     @ApiParam(name = "topicItem", value = "专题code,关联security_topic_dict字典", required = false)
                                     @ApiParam(name = "topicItem", value = "专题code,关联security_topic_dict字典", required = false)
                                     @RequestParam(value = "topicItem",required = false) String topicItem){
                                     @RequestParam(value = "topicItem",required = false) String topicItem,
                                     @ApiParam(name = "dailyMonitor", value = "日常监护 1查询日常监护关联工单0否", required = false)
                                     @RequestParam(value = "dailyMonitor",required = false,defaultValue = "0") Integer dailyMonitor){
        try {
        try {
            if (org.apache.commons.lang3.StringUtils.isBlank(patient)&& org.apache.commons.lang3.StringUtils.isBlank(doctor)){
            if (org.apache.commons.lang3.StringUtils.isBlank(patient)&& org.apache.commons.lang3.StringUtils.isBlank(doctor)){
                return ObjEnvelop.getError("请求参数错误");
                return ObjEnvelop.getError("请求参数错误");
@ -97,7 +101,7 @@ public class SecurityMonitoringOrderEndpoint extends EnvelopRestEndpoint {
            if (org.apache.commons.lang3.StringUtils.isNotBlank(patient)&& org.apache.commons.lang3.StringUtils.isNotBlank(doctor)){
            if (org.apache.commons.lang3.StringUtils.isNotBlank(patient)&& org.apache.commons.lang3.StringUtils.isNotBlank(doctor)){
                return ObjEnvelop.getError("请求参数错误");
                return ObjEnvelop.getError("请求参数错误");
            }
            }
            return ObjEnvelop.getSuccess("查询成功",securityMonitoringOrderService.getSecurityTab(patient,doctor,status,svrDesc,topicItem));
            return ObjEnvelop.getSuccess("查询成功",securityMonitoringOrderService.getSecurityTab(patient,doctor,status,svrDesc,topicItem,dailyMonitor));
        }catch (Exception e){
        }catch (Exception e){
            return failedObjEnvelopException2(e);
            return failedObjEnvelopException2(e);
        }
        }
@ -327,7 +331,7 @@ public class SecurityMonitoringOrderEndpoint extends EnvelopRestEndpoint {
                                @ApiParam(name = "topicItem", value = "专题code,关联security_topic_dict字典", required = false)
                                @ApiParam(name = "topicItem", value = "专题code,关联security_topic_dict字典", required = false)
                                @RequestParam(value = "topicItem",required = false,defaultValue = "preventLost") String topicItem) {
                                @RequestParam(value = "topicItem",required = false,defaultValue = "preventLost") String topicItem) {
        try {
        try {
            return ObjEnvelop.getSuccess( "查询成功", securityMonitoringOrderService.patientMonitoringInfo(patient,topicItem));
            return ObjEnvelop.getSuccess( "查询成功", securityMonitoringOrderService.patientMonitoringInfo(patient,topicItem,true));
        } catch (Exception e) {
        } catch (Exception e) {
            return failedObjEnvelopException2(e);
            return failedObjEnvelopException2(e);
        }
        }
@ -345,6 +349,27 @@ public class SecurityMonitoringOrderEndpoint extends EnvelopRestEndpoint {
        }
        }
    }
    }
    @ApiOperation("助老员端获取日常监护居民")
    @GetMapping(value = "findMonitorPatientsByDoctor")
    @ResponseBody
    public ObjEnvelop findMonitorPatientsByDoctor(@ApiParam(name = "doctor",  required = true)@RequestParam(value = "doctor")String doctor,
                                                  @ApiParam(name = "topicItem", value = "专题code,关联security_topic_dict字典,actionTrack行动轨迹", required = true)
                                                  @RequestParam(value = "topicItem",required = true,defaultValue = "preventLost") String topicItem,
                                                  @ApiParam(name = "day", value = "day", required = false)
                                                  @RequestParam(value = "day",required = false) String day,
                                                  @ApiParam(name = "page")
                                                  @RequestParam(value = "page",required = false) Integer page,
                                                  @ApiParam(name = "pageSize")
                                                  @RequestParam(value = "pageSize",required = false) Integer pageSize,
                                                  @ApiParam(name = "detail", value = "是否返回专题详情0否 1是")
                                                  @RequestParam(value = "detail",required = false,defaultValue = "0") Integer detail) {
        try {
            return ObjEnvelop.getSuccess( "查询成功", securityMonitoringOrderService.findMonitorPatientsByDoctor(doctor,topicItem,day,page,pageSize,detail));
        } catch (Exception e) {
            return failedObjEnvelopException2(e);
        }
    }
    @ApiOperation("获取居民签约专题信息")
    @ApiOperation("获取居民签约专题信息")
    @RequestMapping(value = "patientSignTopicInfo", method = {RequestMethod.POST, RequestMethod.GET})
    @RequestMapping(value = "patientSignTopicInfo", method = {RequestMethod.POST, RequestMethod.GET})
    @ResponseBody
    @ResponseBody
@ -353,7 +378,7 @@ public class SecurityMonitoringOrderEndpoint extends EnvelopRestEndpoint {
                                            @ApiParam(name = "topicItem", value = "专题code,关联security_topic_dict字典", required = false)
                                            @ApiParam(name = "topicItem", value = "专题code,关联security_topic_dict字典", required = false)
                                            @RequestParam(value = "topicItem") String topicItem) {
                                            @RequestParam(value = "topicItem") String topicItem) {
        try {
        try {
            return ObjEnvelop.getSuccess( "查询成功", securityMonitoringOrderService.patientSignTopicInfo(null,patient,topicItem,null));
            return ObjEnvelop.getSuccess( "查询成功", securityMonitoringOrderService.patientSignTopicInfo(null,patient,topicItem,null,true));
        } catch (Exception e) {
        } catch (Exception e) {
            return failedObjEnvelopException2(e);
            return failedObjEnvelopException2(e);
        }
        }

+ 15 - 1
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/sign/SignEndpoint.java

@ -93,7 +93,7 @@ public class SignEndpoint extends EnvelopRestEndpoint {
    }
    }
    @GetMapping(value = "findSignDoctor")
    @GetMapping(value = "findSignDoctor")
    @ApiOperation(value = "查找签约医生")
    @ApiOperation(value = "查找签约社工")
    public ListEnvelop findSignDoctor (
    public ListEnvelop findSignDoctor (
            @ApiParam(name = "patient", value = "居民code", required = true)
            @ApiParam(name = "patient", value = "居民code", required = true)
            @RequestParam(value = "patient",required = true) String patient,
            @RequestParam(value = "patient",required = true) String patient,
@ -106,6 +106,20 @@ public class SignEndpoint extends EnvelopRestEndpoint {
        }
        }
    }
    }
    @GetMapping(value = "open/findSignDoctor")
    @ApiOperation(value = "查找签约社工")
    public ListEnvelop openFindSignDoctor (
            @ApiParam(name = "patient", value = "居民code", required = true)
            @RequestParam(value = "patient",required = true) String patient,
            @ApiParam(name = "orgCode", value = "医院code", required = false)
            @RequestParam(value = "orgCode",required = false) String orgCode) throws Exception {
        try{
            return ListEnvelop.getSuccess("查询成功",servicePackageService.findSignDoctor(patient,orgCode));
        }catch (Exception e){
            return failedListEnvelopException2(e);
        }
    }
    @GetMapping(value = "signRecordPage")
    @GetMapping(value = "signRecordPage")
    @ApiOperation(value = "获取签约记录分页")
    @ApiOperation(value = "获取签约记录分页")
    public PageEnvelop<List<Map<String,Object>>> signRecordPage (
    public PageEnvelop<List<Map<String,Object>>> signRecordPage (

+ 1 - 1
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/third/platForm/PatientInfoPlatFormEndpoint.java

@ -225,7 +225,7 @@ public class PatientInfoPlatFormEndpoint extends EnvelopRestEndpoint {
                                     @ApiParam(name = "topicItem", value = "专题code,关联security_topic_dict字典", required = false)
                                     @ApiParam(name = "topicItem", value = "专题code,关联security_topic_dict字典", required = false)
                                     @RequestParam(value = "topicItem",required = false) String topicItem){
                                     @RequestParam(value = "topicItem",required = false) String topicItem){
        try {
        try {
            return baseController.write (200,"查询成功","data",securityMonitoringOrderService.patientMonitoringInfo(patient,topicItem));
            return baseController.write (200,"查询成功","data",securityMonitoringOrderService.patientMonitoringInfo(patient,topicItem,true));
        }catch (Exception e){
        }catch (Exception e){
            return baseController.errorResult(e);
            return baseController.errorResult(e);
        }
        }

+ 1 - 1
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/assistance/EmergencyAssistanceService.java

@ -493,7 +493,7 @@ public class EmergencyAssistanceService extends BaseJpaService<EmergencyAssistan
        for (BaseDoctorDO doctorDO:doctorDOS) {
        for (BaseDoctorDO doctorDO:doctorDOS) {
            Map<String,Object> noticeObj = new HashMap<>();
            Map<String,Object> noticeObj = new HashMap<>();
            noticeObj.put("type","1");
            noticeObj.put("type","1");
            noticeObj.put("typeName","助老员");
            noticeObj.put("typeName","社工");
            noticeObj.put("id",doctorDO.getId());
            noticeObj.put("id",doctorDO.getId());
            noticeObj.put("name",doctorDO.getName());
            noticeObj.put("name",doctorDO.getName());
            noticeObj.put("photo",doctorDO.getPhoto());
            noticeObj.put("photo",doctorDO.getPhoto());

+ 25 - 5
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/consult/ConsultTeamService.java

@ -22,10 +22,12 @@ import com.yihu.jw.im.dao.ConsultTeamDao;
import com.yihu.jw.im.util.ImUtil;
import com.yihu.jw.im.util.ImUtil;
import com.yihu.jw.patient.dao.BasePatientDao;
import com.yihu.jw.patient.dao.BasePatientDao;
import com.yihu.jw.restmodel.ResponseContant;
import com.yihu.jw.restmodel.ResponseContant;
import com.yihu.jw.util.date.DateUtil;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.Date;
@ -65,6 +67,8 @@ public class ConsultTeamService {
    private PatientDoorCoachOrderService patientDoorCoachOrderService;
    private PatientDoorCoachOrderService patientDoorCoachOrderService;
    @Autowired
    @Autowired
    private MessageUtil messageUtil;
    private MessageUtil messageUtil;
    @Value("${wechat.id}")
    private String wxId;
    private Logger logger= LoggerFactory.getLogger(ConsultTeamService.class);
    private Logger logger= LoggerFactory.getLogger(ConsultTeamService.class);
@ -197,6 +201,11 @@ public class ConsultTeamService {
        JSONObject participants = new JSONObject();
        JSONObject participants = new JSONObject();
        participants.put(patient, 0);
        participants.put(patient, 0);
        JSONArray familyArr =  familyMemberService.getPatientMembers(patient,null,null,null,"1,3");
        JSONArray familyArr =  familyMemberService.getPatientMembers(patient,null,null,null,"1,3");
        JSONObject templateJson = new JSONObject();
        templateJson.put("id",orderId);
        templateJson.put("OrderType",20);
        for (int i=0;i<familyArr.size();i++){
        for (int i=0;i<familyArr.size();i++){
            JSONObject tmp = familyArr.getJSONObject(i);
            JSONObject tmp = familyArr.getJSONObject(i);
            String patientId = tmp.getString("id");
            String patientId = tmp.getString("id");
@ -209,20 +218,24 @@ public class ConsultTeamService {
                String name = tmp.getString("name");
                String name = tmp.getString("name");
                //创建家属系统消息
                //创建家属系统消息
                SystemMessageDO messageDO = new SystemMessageDO();
                SystemMessageDO messageDO = new SystemMessageDO();
                messageDO.setTitle("安防监护");
                messageDO.setTitle("紧急救助");
                messageDO.setType("50");
                messageDO.setType("50");
                messageDO.setCode("22");
                messageDO.setCode("20");
                messageDO.setSender(patientDO.getId());
                messageDO.setSender(patientDO.getId());
                messageDO.setSenderName(patientDO.getName());
                messageDO.setSenderName(patientDO.getName());
                messageDO.setRelationCode(orderId);
                messageDO.setRelationCode(orderId);
                messageDO.setReceiver(patientId);
                messageDO.setReceiver(patientId);
                messageDO.setReceiverName(name);
                messageDO.setReceiverName(name);
                messageDO.setOver("0");
                messageDO.setOver("0");
                messageDO.setData(patientDO.getName()+"发起安防警报工单!");
                messageDO.setData(patientDO.getName()+"发起紧急救助!");
                messageDO.setDel("1");
                messageDO.setDel("1");
                messageDO.setIsRead("0");
                messageDO.setIsRead("0");
                messageDO.setCreateTime(new Date());
                messageDO.setCreateTime(new Date());
                systemMessageDao.save(messageDO);
                systemMessageDao.save(messageDO);
                BasePatientDO family3 = patientDao.findById(patientId);
                messageUtil.putTemplateWxMessage(wxId,"template_error_notice","jjhjyctz",family3.getOpenid(),patientDO.getName()+"发起紧急呼叫",null,null,36,templateJson, DateUtil.getStringDate(),"紧急呼叫",title+",请及时核实处理");
            }
            }
        }
        }
@ -354,7 +367,7 @@ public class ConsultTeamService {
     * @return
     * @return
     * @throws Exception
     * @throws Exception
     */
     */
    public JSONObject addSecurityMoConsult(String orderId,String patient,String agent,String symptoms) throws Exception {
    public JSONObject addSecurityMoConsult(String orderId,String patient,String agent,String symptoms,String serverDesc) throws Exception {
        JSONObject result = new JSONObject();
        JSONObject result = new JSONObject();
        // 判断居民是否已经签约
        // 判断居民是否已经签约
@ -376,7 +389,7 @@ public class ConsultTeamService {
        }
        }
        //咨询记录
        //咨询记录
        String title = patientDO.getName() + "疑似离开安全区域";
        String title = patientDO.getName() + serverDesc;
        ConsultDo consult = addConsult(patient,title,symptoms,patientDO.getPhone(),22);
        ConsultDo consult = addConsult(patient,title,symptoms,patientDO.getPhone(),22);
        //咨询详细信息
        //咨询详细信息
@ -406,6 +419,9 @@ public class ConsultTeamService {
        participants.put(patient, 0);
        participants.put(patient, 0);
        //家属
        //家属
        JSONArray familyArr =  familyMemberService.getPatientMembers(patient,null,null,null,"1,3");
        JSONArray familyArr =  familyMemberService.getPatientMembers(patient,null,null,null,"1,3");
        JSONObject templateJson = new JSONObject();
        templateJson.put("id",orderId);
        templateJson.put("OrderType",22);
        for (int i=0;i<familyArr.size();i++){
        for (int i=0;i<familyArr.size();i++){
            JSONObject tmp = familyArr.getJSONObject(i);
            JSONObject tmp = familyArr.getJSONObject(i);
            String patientId = tmp.getString("id");
            String patientId = tmp.getString("id");
@ -433,6 +449,10 @@ public class ConsultTeamService {
                messageDO.setIsRead("0");
                messageDO.setIsRead("0");
                messageDO.setCreateTime(new Date());
                messageDO.setCreateTime(new Date());
                systemMessageDao.save(messageDO);
                systemMessageDao.save(messageDO);
                BasePatientDO family3 = patientDao.findById(patientId);
                messageUtil.putTemplateWxMessage(wxId,"template_error_notice","afjhyctz",family3.getOpenid(),title,null,null,36,templateJson, DateUtil.getStringDate(),"安防监护",title+",请及时核实处理");
            }
            }
        }
        }

+ 1 - 1
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/contacts/ContactsService.java

@ -424,7 +424,7 @@ public class ContactsService {
        result.put("currentPositioning",null);       //当前定位
        result.put("currentPositioning",null);       //当前定位
        result.put("currentLat",null);       //当前定位
        result.put("currentLat",null);       //当前定位
        result.put("currentLon",null);
        result.put("currentLon",null);
        List<PatientSafeAreaDO> safes =  safeAreaDao.findByPatient(patient);
        List<PatientSafeAreaDO> safes =  safeAreaDao.findByPatient2(patient);
        result.put("fences",safes);
        result.put("fences",safes);
        Double dulat = null;
        Double dulat = null;
        Double dulon = null;
        Double dulon = null;

+ 126 - 3
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/device/PatientDeviceService.java

@ -30,6 +30,7 @@ import com.yihu.jw.util.healthIndex.HealthIndexUtil;
import com.yihu.mysql.query.BaseJpaService;
import com.yihu.mysql.query.BaseJpaService;
import org.apache.commons.collections.map.HashedMap;
import org.apache.commons.collections.map.HashedMap;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.StringUtils;
import org.hibernate.annotations.Synchronize;
import org.json.JSONArray;
import org.json.JSONArray;
import org.json.JSONObject;
import org.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.Logger;
@ -48,6 +49,7 @@ import org.springframework.http.HttpMethod;
import org.springframework.http.MediaType;
import org.springframework.http.MediaType;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.LinkedMultiValueMap;
@ -125,6 +127,11 @@ public class PatientDeviceService extends BaseJpaService<DevicePatientDevice, Pa
    private PatientSafeAreaDao safeAreaDao;
    private PatientSafeAreaDao safeAreaDao;
    @Autowired
    @Autowired
    private SecurityMonitoringOrderDao securityMonitoringOrderDao;
    private SecurityMonitoringOrderDao securityMonitoringOrderDao;
    @Autowired
    private MessageUtil messageUtil;
    @Autowired
    private PatientSafeAreaConfirmDao patientSafeAreaConfirmDao;
    @PostConstruct
    @PostConstruct
    public void init() {
    public void init() {
@ -989,7 +996,7 @@ public class PatientDeviceService extends BaseJpaService<DevicePatientDevice, Pa
                devInfo.put("errorCount",dataCount);//异常量
                devInfo.put("errorCount",dataCount);//异常量
            }
            }
            //v1.4获取其绑定设备的居民列表 //todo 各平台全部对接后外层无用字段删除(患者相关,如patientName,orgCode等)
            //v1.4获取其绑定设备的居民列表 //
            sql =" select  p.id patient,p.photo,p.name,case p.sex when 1 then '男' when 2 then '女' else sex end as sex,TIMESTAMPDIFF(year,p.birthday,now()) as age, \n" +
            sql =" select  p.id patient,p.photo,p.name,case p.sex when 1 then '男' when 2 then '女' else sex end as sex,TIMESTAMPDIFF(year,p.birthday,now()) as age, \n" +
                    "p.residential_area residentialArea,p.mobile,p.idcard,p.address from base_patient p INNER JOIN wlyy_patient_device pd on p.id = pd.user and pd.del=0  " +
                    "p.residential_area residentialArea,p.mobile,p.idcard,p.address from base_patient p INNER JOIN wlyy_patient_device pd on p.id = pd.user and pd.del=0  " +
                    "where 1=1 and pd.device_sn='"+deviceSn+"' ";
                    "where 1=1 and pd.device_sn='"+deviceSn+"' ";
@ -1050,7 +1057,7 @@ public class PatientDeviceService extends BaseJpaService<DevicePatientDevice, Pa
                    if (StringUtils.isBlank(day)) {
                    if (StringUtils.isBlank(day)) {
                        day = DateUtil.getStringDateShort();
                        day = DateUtil.getStringDateShort();
                    }
                    }
                    devInfoObj = securityMonitoringOrderService.patientSignTopicInfo(devInfoObj, patient, "preventLost",deviceSn);
                    devInfoObj = securityMonitoringOrderService.patientSignTopicInfo(devInfoObj, patient, "preventLost",deviceSn,true);
                    //轨迹动态
                    //轨迹动态
                    JSONArray locations = getX1Locations(deviceSn, day.replace("-", ""));
                    JSONArray locations = getX1Locations(deviceSn, day.replace("-", ""));
                    devInfoObj.put("routes", locations);
                    devInfoObj.put("routes", locations);
@ -1774,7 +1781,7 @@ public class PatientDeviceService extends BaseJpaService<DevicePatientDevice, Pa
    }
    }
    /**
    /**
     *
     *      修改电子围栏信息
     *    | enable       |  否  | Int          |  0,1 是否启用                        |
     *    | enable       |  否  | Int          |  0,1 是否启用                        |
     *    | name         |  否  | String       |   安全区名称                           |
     *    | name         |  否  | String       |   安全区名称                           |
     *    | freq         |  否  | Boolean      |  0,触发一天;1,每日触发        |
     *    | freq         |  否  | Boolean      |  0,触发一天;1,每日触发        |
@ -1816,6 +1823,7 @@ public class PatientDeviceService extends BaseJpaService<DevicePatientDevice, Pa
                safeAreaDao.deleteByPatient(patient);
                safeAreaDao.deleteByPatient(patient);
            }
            }
            else{//新增或修改
            else{//新增或修改
                safeAreaDO.setDel("1");
                safeAreaDO.setSafeAreaGz(safe_area);
                safeAreaDO.setSafeAreaGz(safe_area);
                safeAreaDO.setUpdateTime(new Date());
                safeAreaDO.setUpdateTime(new Date());
                safeAreaDO.setSuccessFlag(-1);
                safeAreaDO.setSuccessFlag(-1);
@ -1870,6 +1878,75 @@ public class PatientDeviceService extends BaseJpaService<DevicePatientDevice, Pa
        return "success";
        return "success";
    }
    }
    /**
     * 助老员新增电子围栏记录
     */
    public com.alibaba.fastjson.JSONObject doctorNewSafeArea(String doctor,String patient,String safe_area) throws Exception{
        com.alibaba.fastjson.JSONObject result = new com.alibaba.fastjson.JSONObject();
        List<PatientSafeAreaConfirm> SafeAreaConfirms = patientSafeAreaConfirmDao.findByDoctorCodeAndPatient(doctor,patient);
        if (SafeAreaConfirms.size()>0){
            result.put(ResponseContant.resultFlag,ResponseContant.fail);
            result.put(ResponseContant.resultMsg,"你已为改居民新增过电子围栏!");
            return result;
        }
        BaseDoctorDO doctorDO = doctorDao.findById(doctor);
        PatientSafeAreaDO safeAreaDO = new PatientSafeAreaDO();
        boolean firstAdd=false;
        List<Map<String,Object>> relatives = new ArrayList<>();
        if (StringUtils.isNotBlank(patient)){
            List<PatientSafeAreaDO> safeAreaDOS = safeAreaDao.findByPatient2(patient);
            if (safeAreaDOS.size()>0){
                safeAreaDO = safeAreaDOS.get(0);
            }else {//首次新增
                safeAreaDO.setPatient(patient);
                safeAreaDO.setCreateTime(new Date());
                safeAreaDO.setUpdateTime(new Date());
                safeAreaDO.setSuccessFlag(-1);
                safeAreaDO.setDel("1");
                // 发送确认消息给家属 有家属直接确认
                String sql = " select  t2.id,t2.name from  base_patient_family_member t1,  base_patient t2 where  " +
                        "t2.id in (select family_member from base_patient_family_member where patient = '"+patient+"' )  " +
                        " and t1.patient = '"+patient+"'  and t1.family_member = t2.id  " +
                        " and t2.archive_type=3 GROUP BY t2.id " ;
                relatives = jdbcTemplate.queryForList(sql);
                safeAreaDO.setManageStatus(relatives.size()>0?0:1);
                firstAdd=true;
            }
            safeAreaDO.setSafeAreaGz(safe_area);
            safeAreaDO.setUpdateTime(new Date());
            safeAreaDO.setSuccessFlag(-1);
            safeAreaDO = safeAreaDao.save(safeAreaDO);
            PatientSafeAreaConfirm patientSafeAreaConfirm = new PatientSafeAreaConfirm();
            patientSafeAreaConfirm.setPatient(patient);
            patientSafeAreaConfirm.setDoctorCode(doctor);
            patientSafeAreaConfirm.setDel("1");
            patientSafeAreaConfirm.setCreateTime(new Date());
            patientSafeAreaConfirm.setSafeId(safeAreaDO.getId()+"");
            if(firstAdd&&(null == safeAreaDO.getManageStatus()||0 == safeAreaDO.getManageStatus())){//首次添加给家属发送待确认消息
                patientSafeAreaConfirm.setManageStatus(0);
                for (Map<String,Object> tmp:relatives){
                    messageUtil.saveSystemMessage("",patient,"监护确认","44",doctorDO.getId(),doctorDO.getName(),tmp.get("id").toString(),
                            tmp.get("name").toString(),null,"0","0" );
                }
            }else {//无家属 直接确认
                patientSafeAreaConfirm.setManageStatus(1);
               Integer successFlag =  updatePatientSafeArea(patient,safe_area);
               safeAreaDO.setSuccessFlag(successFlag);
                safeAreaDao.save(safeAreaDO);
            }
            patientSafeAreaConfirmDao.save(patientSafeAreaConfirm);
        }
        result.put(ResponseContant.resultFlag,ResponseContant.success);
        result.put(ResponseContant.resultMsg,"添加成功");
        return result;
    }
    /**
    /**
     *获取设备轨迹
     *获取设备轨迹
     * @param deviceSn
     * @param deviceSn
@ -1977,4 +2054,50 @@ public class PatientDeviceService extends BaseJpaService<DevicePatientDevice, Pa
    /******************************************* 爱牵挂设备end *****************************************************/
    /******************************************* 爱牵挂设备end *****************************************************/
    public Integer updatePatientSafeArea(String patient,String safe_area){
        List<DevicePatientDevice> devices = patientDeviceDao.findAllByUserAndCategoryCode(patient,"4");
        if (devices.size()>0){
            DevicePatientDevice patientDevice = devices.get(0);
            String deviceSnTmp = patientDevice.getDeviceSn();
            String url ="";
            if ("4".equals(devices.get(0).getCategoryCode())){//手表
                Device device = deviceDao.findOne(devices.get(0).getDeviceId());
                if (device!=null){
                    if ("X1".equals(device.getModel())){
                        url = MessageFormat.format(AqgConfig.X1fence_area, deviceSnTmp,1);
                    }
                }
            }else {
                url = MessageFormat.format(AqgConfig.S3fence_area, deviceSnTmp,1);
            }
            MultiValueMap<String, String> param = new LinkedMultiValueMap<>();
            if (StringUtils.isNotBlank(safe_area)){
                    String[] position = safe_area.split(";");
                    safe_area = "";
                    for (String tmp:position){
                        String[] point = tmp.split(",");
                        safe_area+= gpsUtil.bd09_To_Gcj02_str(Double.parseDouble(point[1]),Double.parseDouble(point[0]))+";";
                    }
            }
            param.add("name", "安全区域1");
            param.add("freq", "1");
            param.add("enable","1");
            param.add("time_begin", "0");
            param.add("time_end", "86400");
            param.add("safe_area", safe_area);
            HttpEntity<com.alibaba.fastjson.JSONObject> response = httpClientUtil.aqgCookieHttp(url, param, HttpMethod.POST, getCookie());
            com.alibaba.fastjson.JSONObject responseObj = response.getBody();
            if (responseObj.getBoolean("success")){
                return 1;
            }
            else {
                return -1;
            }
        }
        return -1;
    }
}
}

+ 4 - 3
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/device/PatientHealthIndexService.java

@ -1690,7 +1690,7 @@ public class PatientHealthIndexService extends BaseJpaService<DevicePatientHealt
    public List<Map<String,Object>> getErrorHealthIndexPatients(String doctor){
    public List<Map<String,Object>> getErrorHealthIndexPatients(String doctor){
        String sql = " select count(id),patient,name,photo,mobile,record_date from (\n" +
        String sql = " select count(id),patient,name,photo,mobile,record_date from (\n" +
                "select idx.id,p.id patient,p.name,p.photo,DATE_FORMAT(idx.record_date,'%Y-%m-%d %H:%i:%S')record_date ,p.mobile from wlyy_patient_health_index idx,base_patient p " +
                "select idx.id,p.id patient,p.name,p.photo,DATE_FORMAT(idx.record_date,'%Y-%m-%d %H:%i:%S')record_date ,p.mobile from wlyy_patient_health_index idx,base_patient p " +
                "where  idx.user = p.id and  status=1 and (manage_result=0 or manage_result is null)  and EXISTS ( " +
                "where  idx.user = p.id and idx.type in (1,2) and  status=1 and (manage_result=0 or manage_result is null)  and EXISTS ( " +
                " SELECT 1 from base_service_package_sign_record sr,base_service_package_record r ,base_team_member m where " +
                " SELECT 1 from base_service_package_sign_record sr,base_service_package_record r ,base_team_member m where " +
                "idx.user = CONVERT(sr.patient USING utf8) and  sr.id = r.sign_id and sr.status=1 and   m.team_code = r.team_code  " +
                "idx.user = CONVERT(sr.patient USING utf8) and  sr.id = r.sign_id and sr.status=1 and   m.team_code = r.team_code  " +
                " and sr.`status`=1  and m.doctor_code = '"+doctor+"' and m.del = '1') order by idx.record_date " +
                " and sr.`status`=1  and m.doctor_code = '"+doctor+"' and m.del = '1') order by idx.record_date " +
@ -1700,8 +1700,9 @@ public class PatientHealthIndexService extends BaseJpaService<DevicePatientHealt
    }
    }
    public List<Map<String,Object>> getErrorHealthIndexByPatients(String patient){
    public List<Map<String,Object>> getErrorHealthIndexByPatients(String patient){
        String sql = " select *,cast(DATE_FORMAT(max(idx.record_date),'%Y-%m-%d %H:%i:%S') as char)record_date  from  wlyy_patient_health_index idx where user='"+patient+"' and  " +
                "status=1 and (manage_result=0 or manage_result is null) ";
        String sql = " select *,DATE_FORMAT((idx.record_date),'%Y-%m-%d %H:%i:%S')record_date  from  wlyy_patient_health_index idx " +
                " where user='"+patient+"' and idx.type in (1,2) " +
                "and status=1 and (manage_result=0 or manage_result is null) ORDER BY idx.record_date desc";
        List<Map<String,Object>> result = jdbcTemplate.queryForList(sql);
        List<Map<String,Object>> result = jdbcTemplate.queryForList(sql);
        return result;
        return result;
    }
    }

+ 1 - 2
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/family/PatientFamilyMemberService.java

@ -247,7 +247,6 @@ public class PatientFamilyMemberService extends BaseJpaService<BasePatientFamily
        if (register){
        if (register){
            patientDO.setArchiveType(3);
            patientDO.setArchiveType(3);
            patientDO.setArchiveStatus(3);
            patientDO.setArchiveStatus(3);
            patientDO = patientDao.save(patientDO);
        }
        }
        if (null == patientDO){
        if (null == patientDO){
@ -312,8 +311,8 @@ public class PatientFamilyMemberService extends BaseJpaService<BasePatientFamily
            if (patientDO.getOpenidTime() == null) {
            if (patientDO.getOpenidTime() == null) {
                patientDO.setOpenidTime(new Date());
                patientDO.setOpenidTime(new Date());
            }
            }
            patientDao.save(patientDO);
        }
        }
        patientDao.save(patientDO);
        result.put(ResponseContant.resultFlag,ResponseContant.success);
        result.put(ResponseContant.resultFlag,ResponseContant.success);
        result.put(ResponseContant.resultMsg,"添加成功");
        result.put(ResponseContant.resultMsg,"添加成功");
        return result;
        return result;

+ 1 - 1
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/label/PatientLableService.java

@ -76,7 +76,7 @@ public class PatientLableService extends BaseJpaService<WlyyPatientLabelDO, Wlyy
        }
        }
        if (StringUtils.isNotBlank(topicItem)){
        if (StringUtils.isNotBlank(topicItem)){
            filters += " and EXISTS (select 1 from wlyy_patient_device pd INNER JOIN dm_device dd on pd.device_id = dd.id " +
            filters += " and EXISTS (select 1 from wlyy_patient_device pd INNER JOIN dm_device dd on pd.device_id = dd.id " +
                    "where  pd.user = sr.patient and  FIND_IN_SET(dd.service_topic,'"+topicItem+"')) ";
                    "where  pd.user = sr.patient and  FIND_IN_SET('"+topicItem+"',dd.service_topic)) ";
        }
        }
        String orderBy = " ORDER BY sr.create_time DESC " +
        String orderBy = " ORDER BY sr.create_time DESC " +

+ 1 - 1
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/lifeCare/LifeCareOrderService.java

@ -579,7 +579,7 @@ public class LifeCareOrderService extends BaseJpaService<LifeCareOrderDO, LifeCa
                        JSONObject json = new JSONObject();
                        JSONObject json = new JSONObject();
                        String openId = basePatientWechatDos.get(0).getOpenid();
                        String openId = basePatientWechatDos.get(0).getOpenid();
                        messageUtil.putTemplateWxMessage(wxId,"template_process_feedback","shzldzf",openId,null,null,"请在30分钟内完成支付",3,json,
                        messageUtil.putTemplateWxMessage(wxId,"template_process_feedback","shzldzf",openId,null,null,"请在30分钟内完成支付",3,json,
                                DateUtil.dateToChineseDate(new Date()),"助老员已为您代预约生活照料","待支付");
                                DateUtil.dateToChineseDate(new Date()),"社工已为您代预约生活照料","待支付");
                    }
                    }
                }
                }
            }
            }

+ 36 - 4
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/message/BaseServiceNewsService.java

@ -114,11 +114,23 @@ public class BaseServiceNewsService {
     * @return
     * @return
     */
     */
    public List<Map<String,Object>> findPatinetLocations(){
    public List<Map<String,Object>> findPatinetLocations(){
        String filter =" ";
        String sqltmp = "SELECT GROUP_CONCAT(dict_code) orgCodes from wlyy_hospital_sys_dict WHERE dict_name = 'jkzl_child' or dict_name = 'jkzl_older' ";
        List<Map<String,Object>> listtmp =  jdbcTemplate.queryForList(sqltmp);
        if(listtmp.size()>0){
            String orgCodes = String.valueOf(listtmp.get(0).get("orgCodes"));
            if (StringUtils.isNotBlank(orgCodes)){
                orgCodes = orgCodes.replaceAll(",","','");
                filter = " and p.id not in ('"+orgCodes+"') ";
            }
        }
        String sql = "SELECT p.id,p.`name`,p.address,p.photo,p.mobile,p.lat_lon latLon,sex,idcard,archive_type type,p.pad_imei,p.openid from base_doctor_patient_tmp t,base_patient p " +
        String sql = "SELECT p.id,p.`name`,p.address,p.photo,p.mobile,p.lat_lon latLon,sex,idcard,archive_type type,p.pad_imei,p.openid from base_doctor_patient_tmp t,base_patient p " +
                "WHERE t.patient = p.id and t.del=1 and t.`status`=1 and p.del =1 " +
                "WHERE t.patient = p.id and t.del=1 and t.`status`=1 and p.del =1  " +filter+
                "UNION  " +
                "UNION  " +
                "SELECT p.id,p.`name`,p.address,p.photo,p.mobile,p.lat_lon latLon,sex,idcard,archive_type type,p.pad_imei,p.openid from base_service_package_sign_record t,base_patient p " +
                "SELECT p.id,p.`name`,p.address,p.photo,p.mobile,p.lat_lon latLon,sex,idcard,archive_type type,p.pad_imei,p.openid from base_service_package_sign_record t,base_patient p " +
                "WHERE t.patient = p.id and t.`status`=1 and p.del =1";
                "WHERE t.patient = p.id and t.`status`=1 and p.del =1"+filter;
        List<Map<String,Object>> list = jdbcTemplate.queryForList(sql);
        List<Map<String,Object>> list = jdbcTemplate.queryForList(sql);
        for (Map<String,Object> map:list){
        for (Map<String,Object> map:list){
            String patient = map.get("id").toString();
            String patient = map.get("id").toString();
@ -168,7 +180,18 @@ public class BaseServiceNewsService {
    }
    }
    public List<Map<String , Object>> getLatLon(){
    public List<Map<String , Object>> getLatLon(){
        String sql = "SELECT * FROM base_doctor WHERE del = 1 AND doctor_level = 2";
        String filter =" ";
        String sqltmp = "SELECT GROUP_CONCAT(dict_code) orgCodes from wlyy_hospital_sys_dict WHERE dict_name = 'jkzl_helper' or dict_name = 'jkzl_teacher' ";
        List<Map<String,Object>> listtmp =  jdbcTemplate.queryForList(sqltmp);
        if(listtmp.size()>0){
            String orgCodes = String.valueOf(listtmp.get(0).get("orgCodes"));
            if (StringUtils.isNotBlank(orgCodes)){
                orgCodes = orgCodes.replaceAll(",","','");
                filter = " and id not in ('"+orgCodes+"') ";
            }
        }
        String sql = "SELECT * FROM base_doctor WHERE del = 1 AND doctor_level = 2 "+filter;
        List<Map<String , Object>> list = jdbcTemplate.queryForList(sql);
        List<Map<String , Object>> list = jdbcTemplate.queryForList(sql);
        return list;
        return list;
    }
    }
@ -188,8 +211,16 @@ public class BaseServiceNewsService {
        }
        }
        Sort sort = new Sort(Direction.DESC, "createTime");
        Sort sort = new Sort(Direction.DESC, "createTime");
        PageRequest pageRequest = new PageRequest(page, size, sort);
        PageRequest pageRequest = new PageRequest(page, size, sort);
        List<String> jkzlPatients = jdbcTemplate.queryForList(" SELECT dict_code from wlyy_hospital_sys_dict WHERE dict_name = 'jkzl_child' or dict_name = 'jkzl_older'  ",String.class);
        List<BaseServiceNews> result = new ArrayList<>();
        List<BaseServiceNews> list = baseServiceNewsDao.findNews(pageRequest);
        List<BaseServiceNews> list = baseServiceNewsDao.findNews(pageRequest);
        for (BaseServiceNews tmp:list){
        for (BaseServiceNews tmp:list){
            if (jkzlPatients.contains(tmp.getCode())){
                continue;
            }
            BasePatientDO patientDO = patientDao.findById(tmp.getCode());
            BasePatientDO patientDO = patientDao.findById(tmp.getCode());
            if (null!=patientDO){
            if (null!=patientDO){
                tmp.setArchiveType(patientDO.getArchiveType());
                tmp.setArchiveType(patientDO.getArchiveType());
@ -212,8 +243,9 @@ public class BaseServiceNewsService {
                    }
                    }
                }
                }
            }
            }
            result.add(tmp);
        }
        }
        return list;
        return result;
    }
    }
    /**
    /**

+ 1 - 1
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/message/DoctorMessageService.java

@ -146,7 +146,7 @@ public class DoctorMessageService {
            Map<String,Object> tmpObj = new HashMap<>();
            Map<String,Object> tmpObj = new HashMap<>();
            String sql = " select count(idx.id) count,DATE_FORMAT( max(idx.record_date),'%Y-%m-%d %H:%i:%S') record_date from wlyy_patient_health_index idx where status=1 and (manage_result=0 or manage_result is null) " +
            String sql = " select count(idx.id) count,DATE_FORMAT( max(idx.record_date),'%Y-%m-%d %H:%i:%S') record_date from wlyy_patient_health_index idx where status=1 and (manage_result=0 or manage_result is null) " +
                    "and  EXISTS ( SELECT 1 from base_service_package_sign_record sr,base_service_package_record r ,base_team_member m " +
                    "and  EXISTS ( SELECT 1 from base_service_package_sign_record sr,base_service_package_record r ,base_team_member m " +
                    " where idx.user = CONVERT(sr.patient USING utf8) and  sr.id = r.sign_id and sr.status=1 and m.team_code = r.team_code " +
                    " where idx.user = CONVERT(sr.patient USING utf8) and idx.type in (1,2) and  sr.id = r.sign_id and sr.status=1 and m.team_code = r.team_code " +
                    "  and sr.`status`=1  and m.doctor_code = '"+doctor+"' and m.del = '1')  order by idx.record_date desc   ";
                    "  and sr.`status`=1  and m.doctor_code = '"+doctor+"' and m.del = '1')  order by idx.record_date desc   ";
            tmpObj = jdbcTemplate.queryForMap(sql);
            tmpObj = jdbcTemplate.queryForMap(sql);
            result.put("errorHealthIndex",tmpObj);
            result.put("errorHealthIndex",tmpObj);

+ 68 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/message/PatientMessageService.java

@ -1,23 +1,40 @@
package com.yihu.jw.care.service.message;
package com.yihu.jw.care.service.message;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.care.config.AqgConfig;
import com.yihu.jw.care.dao.device.PatientDeviceDao;
import com.yihu.jw.care.dao.device.PatientSafeAreaConfirmDao;
import com.yihu.jw.care.dao.device.PatientSafeAreaDao;
import com.yihu.jw.care.dao.message.OrgNoticeDao;
import com.yihu.jw.care.dao.message.OrgNoticeDao;
import com.yihu.jw.care.dao.message.UserNoticeDao;
import com.yihu.jw.care.dao.message.UserNoticeDao;
import com.yihu.jw.care.dao.security.BaseEmergencyWarnLogDao;
import com.yihu.jw.care.dao.security.BaseEmergencyWarnLogDao;
import com.yihu.jw.care.service.device.PatientDeviceService;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
import com.yihu.jw.entity.base.notice.UserNoticeDO;
import com.yihu.jw.entity.base.notice.UserNoticeDO;
import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.entity.care.device.Device;
import com.yihu.jw.entity.care.device.DevicePatientDevice;
import com.yihu.jw.entity.care.device.PatientSafeAreaConfirm;
import com.yihu.jw.entity.care.device.PatientSafeAreaDO;
import com.yihu.jw.entity.care.message.OrgNoticeDO;
import com.yihu.jw.entity.care.message.OrgNoticeDO;
import com.yihu.jw.entity.care.securitymonitoring.BaseEmergencyWarnLogDO;
import com.yihu.jw.entity.care.securitymonitoring.BaseEmergencyWarnLogDO;
import com.yihu.jw.entity.hospital.message.SystemMessageDO;
import com.yihu.jw.entity.hospital.message.SystemMessageDO;
import com.yihu.jw.hospital.message.dao.SystemMessageDao;
import com.yihu.jw.hospital.message.dao.SystemMessageDao;
import com.yihu.jw.patient.dao.BasePatientDao;
import com.yihu.jw.patient.dao.BasePatientDao;
import com.yihu.jw.restmodel.ResponseContant;
import com.yihu.jw.restmodel.web.PageEnvelop;
import com.yihu.jw.restmodel.web.PageEnvelop;
import com.yihu.jw.util.date.DateUtil;
import com.yihu.jw.util.date.DateUtil;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpMethod;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import java.text.MessageFormat;
import java.util.Date;
import java.util.Date;
import java.util.List;
import java.util.List;
import java.util.Map;
import java.util.Map;
@ -39,6 +56,12 @@ public class PatientMessageService {
    private BasePatientDao patientDao;
    private BasePatientDao patientDao;
    @Autowired
    @Autowired
    private BaseEmergencyWarnLogDao logDao;
    private BaseEmergencyWarnLogDao logDao;
    @Autowired
    private PatientSafeAreaDao patientSafeAreaDao;
    @Autowired
    private PatientSafeAreaConfirmDao patientSafeAreaConfirmDao;
    @Autowired
    private PatientDeviceService patientDeviceService;
    public PageEnvelop getNoticeList(String patient,String beginTime, String endTime, int page, int size){
    public PageEnvelop getNoticeList(String patient,String beginTime, String endTime, int page, int size){
        page = page>0?page-1:0;
        page = page>0?page-1:0;
@ -155,4 +178,49 @@ public class PatientMessageService {
            systemMessageDao.save(systemMessageDO);
            systemMessageDao.save(systemMessageDO);
        }
        }
    }
    }
    /**
     *
     * @param msgId
     * @param safe_area
     */
    @Transactional(rollbackFor =Exception.class )
    public JSONObject ConfirmFences(String msgId,String safe_area){
        JSONObject result = new JSONObject();
        SystemMessageDO systemMessageDO = systemMessageDao.findOne(msgId);
        if ("1".equals(systemMessageDO.getData())){
            result.put(ResponseContant.resultFlag,ResponseContant.fail);
            result.put(ResponseContant.resultMsg,"已有家属确认管理,无需再次确认!");
            return result;
        }
        List<PatientSafeAreaDO> patientSafeAreaDOs = patientSafeAreaDao.findByPatient2(systemMessageDO.getRelationCode());
        PatientSafeAreaDO patientSafeAreaDO = null;
        if (patientSafeAreaDOs.size()>0){
            patientSafeAreaDO = patientSafeAreaDOs.get(0);
        }else {
            result.put(ResponseContant.resultFlag,ResponseContant.fail);
            result.put(ResponseContant.resultMsg,"居民未绑定防走失设备!");
            return result;
        }
        if (StringUtils.isNotBlank(safe_area)&&null != patientSafeAreaDO){
            patientSafeAreaDO.setSafeAreaGz(safe_area);
        }
        //更新围栏
        Integer successFlag = patientDeviceService.updatePatientSafeArea(systemMessageDO.getRelationCode(),patientSafeAreaDO.getSafeAreaGz());
        patientSafeAreaDO.setManageStatus(1);
        patientSafeAreaDO.setSuccessFlag(successFlag);
        patientSafeAreaDao.save(patientSafeAreaDO);
        //修改数据
        patientSafeAreaConfirmDao.manageByPatient(patientSafeAreaDO.getPatient());
        systemMessageDao.readByTypeAndRelationCode("44",patientSafeAreaDO.getPatient(),"1");
        result.put(ResponseContant.resultFlag,ResponseContant.success);
        result.put(ResponseContant.resultMsg,"已确认");
        return result;
    }
}
}

+ 1 - 1
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/patient/OnlineContactService.java

@ -147,7 +147,7 @@ public class OnlineContactService extends BaseJpaService<BasePatientDO, BasePati
            tmpObj.put("userType","1");
            tmpObj.put("userType","1");
            tmpObj.put("doctorId",tmp.get("doctor"));
            tmpObj.put("doctorId",tmp.get("doctor"));
            tmpObj.put("doctorLevel",tmp.get("doctorLevel"));
            tmpObj.put("doctorLevel",tmp.get("doctorLevel"));
            tmpObj.put("relationName",null==tmp.get("doctorLevel")?"":"1".equals(tmp.get("doctorLevel").toString())?"社区医生":"助老员");
            tmpObj.put("relationName",null==tmp.get("doctorLevel")?"":"1".equals(tmp.get("doctorLevel").toString())?"社区医生":"社工");
            doctorResult.add(tmpObj);
            doctorResult.add(tmpObj);
        }
        }

+ 55 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/safeArea/SafeAreaService.java

@ -0,0 +1,55 @@
package com.yihu.jw.care.service.safeArea;
import com.alibaba.fastjson.JSONObject;
import com.netflix.discovery.converters.Auto;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
 * Created by Bing on 2021/11/16.
 */
@Service
public class SafeAreaService {
    @Autowired
    private JdbcTemplate jdbcTemplate;
    public JSONObject doctorNewSafeAreaTab(String doctor,Integer manageStatus){
        JSONObject result = new JSONObject();
        result.put("status_all",0);
        result.put("status_0",0);
        result.put("status_1",0);
        String sql = " select manage_status,count(id) 'num' from wlyy_patient_safe_area_confirm where doctor_code='"+doctor+"' ";
        if (null != manageStatus){
            sql += " and manage_status ";
        }
        sql += " GROUP BY manage_status ";
        List<Map<String,Object>> list = jdbcTemplate.queryForList(sql);
        Integer total=0;
        for (Map<String,Object> tmp :list){
            Integer num = Integer.parseInt(tmp.get("num").toString());
            result.put("status_"+tmp.get("manage_status").toString(),num);
            total += num;
        }
        result.put("status_all",total);
        return result;
    }
    public List<Map<String,Object>> doctorNewSafeAreaList(String doctor,Integer manageStatus){
        String sql = " select p.id,p.name,p.sex,p.photo,TIMESTAMPDIFF(year,p.birthday,now()) as age,ac.manage_status manageStatus " +
                " from wlyy_patient_safe_area_confirm ac INNER JOIN base_patient p on ac.patient = p.id where ac.doctor_code='"+doctor+"' ";
        if (null != manageStatus){
            sql += " and ac.manage_status ";
        }
        sql += "GROUP BY p.id ";
        return jdbcTemplate.queryForList(sql);
    }
}

+ 247 - 27
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/security/SecurityMonitoringOrderService.java

@ -41,7 +41,6 @@ import com.yihu.jw.patient.dao.BasePatientDao;
import com.yihu.jw.restmodel.ResponseContant;
import com.yihu.jw.restmodel.ResponseContant;
import com.yihu.jw.restmodel.emergency.EmergencyOrderVO;
import com.yihu.jw.restmodel.emergency.EmergencyOrderVO;
import com.yihu.jw.restmodel.web.PageEnvelop;
import com.yihu.jw.restmodel.web.PageEnvelop;
import com.yihu.jw.rm.base.BaseRequestMapping;
import com.yihu.jw.util.common.GpsUtil;
import com.yihu.jw.util.common.GpsUtil;
import com.yihu.jw.util.common.IdCardUtil;
import com.yihu.jw.util.common.IdCardUtil;
import com.yihu.jw.util.common.LatitudeUtils;
import com.yihu.jw.util.common.LatitudeUtils;
@ -244,7 +243,7 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
        orderDO.setServiceStatus("2");
        orderDO.setServiceStatus("2");
        this.save(orderDO);
        this.save(orderDO);
        //创建im会话  安防警报咨询的sessionid  为居民code+(wlyy_consult_team表consult)+20
        //创建im会话  安防警报咨询的sessionid  为居民code+(wlyy_consult_team表consult)+20
        JSONObject IMObj = consultTeamService.addSecurityMoConsult(orderDO.getId(),orderDO.getPatient(),null,null);
        JSONObject IMObj = consultTeamService.addSecurityMoConsult(orderDO.getId(),orderDO.getPatient(),null,null,orderDO.getServeDesc());
        String sessionId=orderDO.getPatient()+"_"+ IMObj.getJSONObject("resultMsg").getString("consult") + "_22";
        String sessionId=orderDO.getPatient()+"_"+ IMObj.getJSONObject("resultMsg").getString("consult") + "_22";
        orderDO.setSessionId(sessionId);
        orderDO.setSessionId(sessionId);
        if (StringUtils.isNotBlank(orderDO.getServeDesc())){
        if (StringUtils.isNotBlank(orderDO.getServeDesc())){
@ -456,7 +455,7 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
                }else {
                }else {
                    monitorInfo.put("sleepPlan",false);
                    monitorInfo.put("sleepPlan",false);
                }
                }
                monitorInfo = patientSignTopicInfo(monitorInfo,orderDO.getPatient(),"preventFall",null);
                monitorInfo = patientSignTopicInfo(monitorInfo,orderDO.getPatient(),"preventFall",null,true);
                emergencyOrderVO.setInformation(monitorInfo);
                emergencyOrderVO.setInformation(monitorInfo);
            }catch (Exception e){
            }catch (Exception e){
                e.printStackTrace();
                e.printStackTrace();
@ -465,7 +464,7 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
        if (6==orderDO.getOrderSource()){//气感工单
        if (6==orderDO.getOrderSource()){//气感工单
            try {
            try {
                JSONObject monitorInfo = JSONObject.parseObject(orderDO.getWarnInfo());
                JSONObject monitorInfo = JSONObject.parseObject(orderDO.getWarnInfo());
                monitorInfo = patientSignTopicInfo(monitorInfo,orderDO.getPatient(),"preventFall",null);
                monitorInfo = patientSignTopicInfo(monitorInfo,orderDO.getPatient(),"preventFall",null,true);
                emergencyOrderVO.setInformation(monitorInfo);
                emergencyOrderVO.setInformation(monitorInfo);
            }catch (Exception e){
            }catch (Exception e){
                e.printStackTrace();
                e.printStackTrace();
@ -474,7 +473,7 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
        if (7==orderDO.getOrderSource()){//烟感工单
        if (7==orderDO.getOrderSource()){//烟感工单
            try {
            try {
                JSONObject monitorInfo = JSONObject.parseObject(orderDO.getWarnInfo());
                JSONObject monitorInfo = JSONObject.parseObject(orderDO.getWarnInfo());
                monitorInfo = patientSignTopicInfo(monitorInfo,orderDO.getPatient(),"preventFall",null);
                monitorInfo = patientSignTopicInfo(monitorInfo,orderDO.getPatient(),"preventFall",null,true);
                emergencyOrderVO.setInformation(monitorInfo);
                emergencyOrderVO.setInformation(monitorInfo);
            }catch (Exception e){
            }catch (Exception e){
                e.printStackTrace();
                e.printStackTrace();
@ -525,7 +524,7 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
            for(BaseDoctorDO doc:doctorDOS){
            for(BaseDoctorDO doc:doctorDOS){
                Map<String,Object> noticeObj = new HashMap<>();
                Map<String,Object> noticeObj = new HashMap<>();
                noticeObj.put("type","1");
                noticeObj.put("type","1");
                noticeObj.put("typeName","助老员");
                noticeObj.put("typeName","社工");
                noticeObj.put("id",doc.getId());
                noticeObj.put("id",doc.getId());
                noticeObj.put("name",doc.getName());
                noticeObj.put("name",doc.getName());
                noticeObj.put("photo",doc.getPhoto());
                noticeObj.put("photo",doc.getPhoto());
@ -663,7 +662,7 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
    }
    }
    public PageEnvelop getSecurityOrderList(String doctor, String serverDoctor, String patientName, String patient, String status,
    public PageEnvelop getSecurityOrderList(String doctor, String serverDoctor, String patientName, String patient, String status,
                                            String svrDesc,String topicItem, Integer page, Integer pageSize){
                                            String svrDesc,String topicItem, Integer page, Integer pageSize,Integer dailyMonitor){
        JSONArray result = new JSONArray();
        JSONArray result = new JSONArray();
        //服务权限
        //服务权限
        if(doctorServicePermissionsService.isPermission(doctor,10)==0){
        if(doctorServicePermissionsService.isPermission(doctor,10)==0){
@ -676,12 +675,53 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
        String sql = " select p.id patientCode,p.name,p.sex,p.photo,p.idcard,ord.id orderId,ord.number,ord.serve_desc,ord.create_time,ord.`status`,ord.doctor," +
        String sql = " select p.id patientCode,p.name,p.sex,p.photo,p.idcard,ord.id orderId,ord.number,ord.serve_desc,ord.create_time,ord.`status`,ord.doctor," +
                "ord.doctor_name,ord.update_user,ord.update_user_name,ord.patient_phone,ord.conclusion_status from base_security_monitoring_order ord INNER JOIN base_patient p on p.id = ord.patient " +
                "ord.doctor_name,ord.update_user,ord.update_user_name,ord.patient_phone,ord.conclusion_status from base_security_monitoring_order ord INNER JOIN base_patient p on p.id = ord.patient " +
                "where 1=1 ";
                "where 1=1 ";
        if (StringUtils.isNotBlank(doctor)){
            fliter+=" and  EXISTS ( SELECT 1 from base_service_package_sign_record sr,base_service_package_record r, base_service_package_item i ," +
                    "base_team_member m " +
                    "where ord.patient = CONVERT(sr.patient USING utf8) and  sr.id = r.sign_id and sr.status=1 and " +
                    " r.service_package_id = i.service_package_id and  m.team_code = r.team_code  and i.del = 1 and sr.`status`=1  and i.code='preventLost' and m.doctor_code = '"+doctor+"' and m.del = '1') ";
        if (1==dailyMonitor){//医生日常监护居民安防工单列表查询
            if (StringUtils.isBlank(topicItem)||StringUtils.isBlank(doctor)){
                return new PageEnvelop();
            }
            String categoryCode ="";
            switch (topicItem){
                case "preventLost":
                    categoryCode="'4'";
                    break;
                case "preventFall":
                    categoryCode="'12'";
                    break;
                case "preventFire":
                    categoryCode="'15'";
                    break;
                case "preventGasLeakage":
                    categoryCode="'14'";
                    break;
                case "preventOutOfBed":
                    categoryCode="'13'";
                    break;
            }
            if (StringUtils.isNotBlank(doctor)){//日常监护医生必传
                fliter += " and EXISTS( SELECT DISTINCT p.id,p.name,p.residential_area residentialArea,p.photo,p.idcard,p.mobile, " +
                        " p.openid,p.sex,p.pad_imei padImei " +
                        " from base_patient p , base_service_package_sign_record sr,base_service_package_record r,base_team_member m  " +
                        " WHERE p.id = sr.patient and sr.status=1 and m.team_code = r.team_code and sr.id=r.sign_id  " +
                        " and m.doctor_code = '"+doctor+"' and m.del = '1' ) ";
                fliter +=" and EXISTS (select 1 from wlyy_patient_device pd INNER JOIN dm_device dd on pd.device_id = dd.id  " +
                        " where  pd.user = p.id and pd.del=0 and pd.category_code in ("+categoryCode+") and FIND_IN_SET('"+topicItem+"',dd.service_topic)) ";
                if ("preventLost".equals(topicItem)){//有绑定围栏的居民
                    fliter += " and EXISTS (select 1 from wlyy_patient_safe_area sf where sf.patient = p.id and sf.del=1 and sf.manage_status=1) ";
                }
            }
        }else {
            if (StringUtils.isNotBlank(doctor)){
                fliter+=" and  EXISTS ( SELECT 1 from base_service_package_sign_record sr,base_service_package_record r, base_service_package_item i ," +
                        "base_team_member m " +
                        "where ord.patient = CONVERT(sr.patient USING utf8) and  sr.id = r.sign_id and sr.status=1 and " +
                        " r.service_package_id = i.service_package_id and  m.team_code = r.team_code  and i.del = 1 and sr.`status`=1  and m.doctor_code = '"+doctor+"' and m.del = '1') ";
            }
        }
        }
        if (StringUtils.isNotBlank(serverDoctor)){
        if (StringUtils.isNotBlank(serverDoctor)){
            fliter +=" and ord.doctor = '"+serverDoctor+"' ";
            fliter +=" and ord.doctor = '"+serverDoctor+"' ";
        }
        }
@ -756,7 +796,7 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
        return PageEnvelop.getSuccessListWithPage("success",result,page,pageSize,count);
        return PageEnvelop.getSuccessListWithPage("success",result,page,pageSize,count);
    }
    }
    public JSONObject getSecurityTab(String patient,String doctor,String status,String svrDesc,String topicItem){
    public JSONObject getSecurityTab(String patient,String doctor,String status,String svrDesc,String topicItem,Integer dailyMonitor){
        JSONObject result = new JSONObject();
        JSONObject result = new JSONObject();
        result.put("status_-2",0);//误报警
        result.put("status_-2",0);//误报警
@ -777,11 +817,49 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
        sql = "select ord.status,ord.serve_desc,count(ord.id) count from base_security_monitoring_order ord INNER JOIN base_patient p on p.id = ord.patient " +
        sql = "select ord.status,ord.serve_desc,count(ord.id) count from base_security_monitoring_order ord INNER JOIN base_patient p on p.id = ord.patient " +
                "where 1=1 ";
                "where 1=1 ";
        String fliter = "  ";
        String fliter = "  ";
        if (StringUtils.isNotBlank(doctor)){
            fliter+=" and  EXISTS ( SELECT 1 from base_service_package_sign_record sr,base_service_package_record r, base_service_package_item i ," +
                    "base_team_member m " +
                    "where ord.patient = CONVERT(sr.patient USING utf8) and  sr.id = r.sign_id and sr.status=1 and " +
                    " r.service_package_id = i.service_package_id and  m.team_code = r.team_code  and i.del = 1 and sr.`status`=1  and i.code='preventLost' and m.doctor_code = '"+doctor+"' and m.del = '1') ";
        if (1==dailyMonitor){//医生日常监护居民安防工单列表查询
            if (StringUtils.isBlank(topicItem)||StringUtils.isBlank(doctor)){
                return result;
            }
            String categoryCode ="";
            switch (topicItem){
                case "preventLost":
                    categoryCode="'4'";
                    break;
                case "preventFall":
                    categoryCode="'12'";
                    break;
                case "preventFire":
                    categoryCode="'15'";
                    break;
                case "preventGasLeakage":
                    categoryCode="'14'";
                    break;
                case "preventOutOfBed":
                    categoryCode="'13'";
                    break;
            }
            if (StringUtils.isNotBlank(doctor)) {//日常监护医生必传
                fliter += " and EXISTS( SELECT DISTINCT p.id,p.name,p.residential_area residentialArea,p.photo,p.idcard,p.mobile, " +
                        " p.openid,p.sex,p.pad_imei padImei " +
                        " from base_patient p , base_service_package_sign_record sr,base_service_package_record r,base_team_member m  " +
                        " WHERE p.id = sr.patient and sr.status=1 and m.team_code = r.team_code and sr.id=r.sign_id  " +
                        " and m.doctor_code = '" + doctor + "' and m.del = '1' ) ";
                fliter += " and EXISTS (select 1 from wlyy_patient_device pd INNER JOIN dm_device dd on pd.device_id = dd.id  " +
                        " where  pd.user = p.id and pd.del=0 and pd.category_code in (" + categoryCode + ") and FIND_IN_SET('" + topicItem + "',dd.service_topic)) ";
                if ("preventLost".equals(topicItem)) {//有绑定围栏的居民
                    fliter += " and EXISTS (select 1 from wlyy_patient_safe_area sf where sf.patient = p.id and sf.del=1 and sf.manage_status=1) ";
                }
            }
        }else {
            if (StringUtils.isNotBlank(doctor)){
                fliter+=" and  EXISTS ( SELECT 1 from base_service_package_sign_record sr,base_service_package_record r, base_service_package_item i ," +
                        "base_team_member m " +
                        "where ord.patient = CONVERT(sr.patient USING utf8) and  sr.id = r.sign_id and sr.status=1 and " +
                        " r.service_package_id = i.service_package_id and  m.team_code = r.team_code  and i.del = 1 and sr.`status`=1  and m.doctor_code = '"+doctor+"' and m.del = '1') ";
            }
        }
        }
        if (StringUtils.isNotBlank(patient)){
        if (StringUtils.isNotBlank(patient)){
            fliter+=" and ord.patient='"+patient+"' ";
            fliter+=" and ord.patient='"+patient+"' ";
@ -1389,7 +1467,7 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
        }else {
        }else {
            for (String team:teams){
            for (String team:teams){
                sql = "select DISTINCT doc.id doctor,doc.name as doctorName,CONCAT(doc.`name`,\n" +
                sql = "select DISTINCT doc.id doctor,doc.name as doctorName,CONCAT(doc.`name`,\n" +
                        "CASE WHEN doc.doctor_level=1 THEN '(社区医生)' ELSE '(助老员)' END) as name,doc.photo,doc.mobile from base_team_member mem " +
                        "CASE WHEN doc.doctor_level=1 THEN '(社区医生)' ELSE '(社工)' END) as name,doc.photo,doc.mobile from base_team_member mem " +
                        "INNER JOIN base_doctor doc on mem.doctor_code = doc.id and mem.del=1 and mem.team_code='"+team+"'";
                        "INNER JOIN base_doctor doc on mem.doctor_code = doc.id and mem.del=1 and mem.team_code='"+team+"'";
                List<Map<String,Object>>tmp = jdbcTemplate.queryForList(sql);
                List<Map<String,Object>>tmp = jdbcTemplate.queryForList(sql);
                result.addAll(tmp);
                result.addAll(tmp);
@ -1398,7 +1476,7 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
        return result;
        return result;
    }
    }
    public JSONObject patientMonitoringInfo(String patient,String topicItem){
    public JSONObject patientMonitoringInfo(String patient,String topicItem,boolean video){
        JSONObject result = new JSONObject();
        JSONObject result = new JSONObject();
        result.put("location",null);
        result.put("location",null);
        result.put("fences",null);
        result.put("fences",null);
@ -1406,6 +1484,7 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
        result.put("fire",null);
        result.put("fire",null);
        result.put("fall",null);
        result.put("fall",null);
        result.put("sleep",null);
        result.put("sleep",null);
        result.put("sleepOrderInfo",null);//最近工单
        result.put("deviceSn",null);
        result.put("deviceSn",null);
        result.put("emeAssistance",false);
        result.put("emeAssistance",false);
        result.put("monitorInfo",null);
        result.put("monitorInfo",null);
@ -1443,6 +1522,12 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
                    count = Integer.parseInt(tmp.get("total").toString());
                    count = Integer.parseInt(tmp.get("total").toString());
                    if (count>0){
                    if (count>0){
                        result.put("sleep",true);
                        result.put("sleep",true);
                        sql = " select serve_desc from base_security_monitoring_order where topic_item='preventOutOfBed' " +
                                "and patient='"+patient+"' and `status`=1 order by create_time desc limit 1 ";
                        List<String> serveDesces = jdbcTemplate.queryForList(sql,String.class);
                        if (serveDesces.size()>0){
                            result.put("sleepOrderInfo",serveDesces.get(0));
                        }
                    }else {
                    }else {
                        result.put("sleep",false);
                        result.put("sleep",false);
                    }
                    }
@ -1454,7 +1539,7 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
        if (counnt>0){
        if (counnt>0){
            result.put("emeAssistance",true);
            result.put("emeAssistance",true);
        }
        }
        result = patientSignTopicInfo(result,patient,topicItem,null);
        result = patientSignTopicInfo(result,patient,topicItem,null,true);
        return result;
        return result;
    }
    }
@ -1472,6 +1557,7 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
        result.put("fire",null);
        result.put("fire",null);
        result.put("fall",null);
        result.put("fall",null);
        result.put("sleep",null);
        result.put("sleep",null);
        result.put("sleepOrderInfo",null);//最近工单
        result.put("deviceSn",null);
        result.put("deviceSn",null);
        result.put("emeAssistance",false);
        result.put("emeAssistance",false);
        result.put("monitorInfo",null);
        result.put("monitorInfo",null);
@ -1509,6 +1595,12 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
                    count = Integer.parseInt(tmp.get("total").toString());
                    count = Integer.parseInt(tmp.get("total").toString());
                    if (count>0){
                    if (count>0){
                        result.put("sleep",true);
                        result.put("sleep",true);
                        sql = " select serve_desc from base_security_monitoring_order where topic_item='preventOutOfBed' " +
                                "and patient='"+patient+"' and `status`=1 order by create_time desc limit 1 ";
                        List<String> serveDesces = jdbcTemplate.queryForList(sql,String.class);
                        if (serveDesces.size()>0){
                            result.put("sleepOrderInfo",serveDesces.get(0));
                        }
                    }else {
                    }else {
                        result.put("sleep",false);
                        result.put("sleep",false);
                    }
                    }
@ -1522,9 +1614,9 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
        }
        }
        List<DevicePatientDevice> devices4 = patientDeviceDao.findByUserAndCategoryCode(patient,"4");//手表
        List<DevicePatientDevice> devices4 = patientDeviceDao.findByUserAndCategoryCode(patient,"4");//手表
        if (devices4.size()>0){
        if (devices4.size()>0){
            result =  patientSignTopicInfo(result,patient,"preventLost",devices4.get(0).getDeviceSn());
            result =  patientSignTopicInfo(result,patient,"preventLost",devices4.get(0).getDeviceSn(),true);
        }
        }
        patientSignTopicInfo(result,patient,"preventFall",null);
        patientSignTopicInfo(result,patient,"preventFall",null,true);
        return result;
        return result;
    }
    }
@ -1561,6 +1653,11 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
                        JSONObject locationTmp = response.getJSONObject("last_location");
                        JSONObject locationTmp = response.getJSONObject("last_location");
                        Double lon = locationTmp.getJSONArray("coordinates").getDouble(0);
                        Double lon = locationTmp.getJSONArray("coordinates").getDouble(0);
                        Double lat = locationTmp.getJSONArray("coordinates").getDouble(1);
                        Double lat = locationTmp.getJSONArray("coordinates").getDouble(1);
                        if (!response.getBoolean("online")){//设备离线 取居民表定位
                            result.put("X1online",false);
                        }else {
                            result.put("X1online",true);
                        }
                        JSONObject tmp = gpsUtil.gcj02_To_Bd09(lat,lon);
                        JSONObject tmp = gpsUtil.gcj02_To_Bd09(lat,lon);
                        tmp.put("city",response.getString("last_city"));
                        tmp.put("city",response.getString("last_city"));
                        tmp.put("province",response.getString("last_province"));
                        tmp.put("province",response.getString("last_province"));
@ -1851,7 +1948,7 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
    }
    }
    public JSONObject patientSignTopicInfo(JSONObject result,String patient,String topicItem,String deviceSn){
    public JSONObject patientSignTopicInfo(JSONObject result,String patient,String topicItem,String deviceSn,boolean video){
        if (null==result){
        if (null==result){
            result = new JSONObject();
            result = new JSONObject();
        }
        }
@ -1865,14 +1962,15 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
            preventOutOfBed(result, patient,true,null);
            preventOutOfBed(result, patient,true,null);
        }
        }
        if ("preventFire".equals(topicItem)||StringUtils.isBlank(topicItem)){
        if ("preventFire".equals(topicItem)||StringUtils.isBlank(topicItem)){
            preventFire(result, patient,null,true);
            preventFire(result, patient,null,video);
        }
        }
        if ("preventGasLeakage".equals(topicItem)||StringUtils.isBlank(topicItem)){
        if ("preventGasLeakage".equals(topicItem)||StringUtils.isBlank(topicItem)){
            preventGasLeakage(result, patient,true);
            preventGasLeakage(result, patient,video);
        }
        }
        return result;
        return result;
    }
    }
    public JSONObject updateDoctorLocation(String doctor,String orderId,String doctorAddress,String doctorLat,String doctorLon){
    public JSONObject updateDoctorLocation(String doctor,String orderId,String doctorAddress,String doctorLat,String doctorLon){
        JSONObject result = new JSONObject();
        JSONObject result = new JSONObject();
        BaseDoctorDO doctorDO = baseDoctorDao.findById(doctor);
        BaseDoctorDO doctorDO = baseDoctorDao.findById(doctor);
@ -1944,7 +2042,7 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
                logDO.setOrderId(orderId);
                logDO.setOrderId(orderId);
                logDO.setUserType(2);
                logDO.setUserType(2);
                logDO.setCreateTime(new Date());
                logDO.setCreateTime(new Date());
                logDO.setContent("助老员"+doctorDO.getName()+"前往定位");
                logDO.setContent("社工"+doctorDO.getName()+"前往定位");
                logDao.save(logDO);
                logDao.save(logDO);
            }
            }
        }
        }
@ -2044,4 +2142,126 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
        }
        }
    }
    }
    public JSONObject findMonitorPatientsByDoctor(String doctor,String topicItem,String day,Integer page,Integer pageSize,Integer detail){
        JSONObject result = new JSONObject();
        String sql = " SELECT DISTINCT p.id,p.name,p.residential_area residentialArea,p.photo,p.idcard,p.mobile, " +
                " p.openid,p.sex,p.pad_imei padImei " +
                " from base_patient p , base_service_package_sign_record sr,base_service_package_record r,base_team_member m  " +
                " WHERE p.id = sr.patient and sr.status=1 and m.team_code = r.team_code and sr.id=r.sign_id  " +
                " and m.doctor_code = '"+doctor+"' and m.del = '1' ";
        String fliter = "";
        String categoryCode ="";
        String topicItemTmp = topicItem;
        switch (topicItem){
            case "actionTrack":
                categoryCode="'4'";
                topicItemTmp="preventLost";
                break;
            case "preventLost":
                categoryCode="'4'";
                break;
            case "preventFall":
                categoryCode="'12'";
                break;
            case "preventFire":
                categoryCode="'15'";
                break;
            case "preventGasLeakage":
                categoryCode="'14'";
                break;
            case "preventOutOfBed":
                categoryCode="'13'";
                break;
        }
        fliter =" and EXISTS (select 1 from wlyy_patient_device pd INNER JOIN dm_device dd on pd.device_id = dd.id  " +
                    " where  pd.user = sr.patient and pd.del=0 and pd.category_code in ("+categoryCode+") and FIND_IN_SET('"+topicItemTmp+"',dd.service_topic)) ";
        if ("preventLost".equals(topicItem)){//有绑定围栏的居民
            fliter += " and EXISTS (select 1 from wlyy_patient_safe_area sf where sf.patient = p.id and sf.del=1 and sf.manage_status=1) ";
        }
        List<Map<String,Object>> list =  jdbcTemplate.queryForList(sql+fliter);
        result.put("total",list.size());
        if (1 == detail){//获取详情
            JSONArray monitorInfos = new JSONArray();
            page = page>0?page-1:0;
            Integer totalPage = 0;
            if(list.size()%pageSize==0){
                totalPage =list.size()/pageSize;
            }else{
                totalPage = list.size()/pageSize+1;
            }
            Integer currentIndexFrom = page*pageSize;
            Integer currentIndexEnd = page*pageSize+pageSize;
            result.put("totalPage",totalPage);
            result.put("currentPage",page+1);
            for (int i=currentIndexFrom;i<list.size()&&i<currentIndexEnd;i++){
                Map<String,Object> patientTmp = list.get(i);
                com.alibaba.fastjson.JSONObject object = new com.alibaba.fastjson.JSONObject();
                String deviceSn ="";
                List<String> deviceSns = jdbcTemplate.queryForList("select pd.device_sn from wlyy_patient_device pd INNER JOIN dm_device dd " +
                        " on pd.device_id = dd.id where  pd.user = '"+patientTmp.get("id").toString()+"' and pd.del=0  and pd.category_code in ("+categoryCode+") and FIND_IN_SET('"+topicItemTmp+"',dd.service_topic)",String.class);
                if (deviceSns.size()>0){
                    deviceSn = deviceSns.get(0);
                }
                if (deviceSns.size()>0){
                    deviceSn = deviceSns.get(0);
                }
                object.put("deviceCode",deviceSn);
                switch (topicItem){
                    case "actionTrack":
                        JSONArray locations = JSON.parseArray(JSON.toJSONString(patientDeviceService.getX1Locations(deviceSn, day), SerializerFeature.WriteMapNullValue));
                        object.put("routes", locations);
                        //获取手表定位
                        JSONObject response= patientDeviceService.getAqgDeviceInfo2(deviceSn);
                        if (response!=null) {
                            //定位信息
                            if (response.containsKey("last_location") && response.get("last_location") != null) {
                                JSONObject locationTmp = response.getJSONObject("last_location");
                                Double lon = locationTmp.getJSONArray("coordinates").getDouble(0);
                                Double lat = locationTmp.getJSONArray("coordinates").getDouble(1);
                                if (!response.getBoolean("online")) {//设备离线 取居民表定位
                                    object.put("X1online", false);
                                } else {
                                    object.put("X1online", true);
                                }
                                JSONObject tmp = gpsUtil.gcj02_To_Bd09(lat, lon);
                                tmp.put("city", response.getString("last_city"));
                                tmp.put("province", response.getString("last_province"));
                                tmp.put("address", response.getString("last_address"));
                                object.put("location", tmp);
                            }
                        }
                        break;
                    default:
                        object = patientMonitoringInfo(patientTmp.get("id").toString(),topicItem,false);
                        break;
                }
                object.put("patientInfo",patientTmp);
                monitorInfos.add(object);
            }
            result.put("topicInfo",monitorInfos);
        }else {
            JSONArray monitorInfos = new JSONArray();
            for (int i=0;i<list.size();i++){
                Map<String,Object> patientTmp = list.get(i);
                String deviceSn ="";
                List<String> deviceSns = jdbcTemplate.queryForList("select pd.device_sn from wlyy_patient_device pd INNER JOIN dm_device dd " +
                        " on pd.device_id = dd.id where  pd.user = '"+patientTmp.get("id").toString()+"' and pd.del=0  and pd.category_code in ("+categoryCode+") and FIND_IN_SET('"+topicItem+"',dd.service_topic)",String.class);
                if (deviceSns.size()>0){
                    deviceSn = deviceSns.get(0);
                }
                JSONObject object  = patientMonitoringInfo(patientTmp.get("id").toString(),"null",false);
                object.put("deviceSn",deviceSn);
                object.put("patientInfo",patientTmp);
                monitorInfos.add(object);
            }
            result.put("topicInfo",monitorInfos);
        }
        return result;
    }
}
}

+ 1 - 1
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/sign/ServicePackageService.java

@ -662,7 +662,7 @@ public class ServicePackageService extends BaseJpaService<ServicePackageDO, Serv
    public List<Map<String,Object>> getServerDoctorAll(String patient,String onlineFlag,String doctorLevel){
    public List<Map<String,Object>> getServerDoctorAll(String patient,String onlineFlag,String doctorLevel){
        String sql="SELECT DISTINCT doc.id doctor,doc.name as doctorName,CONCAT(doc.`name`,CASE WHEN doc.doctor_level=1 " +
        String sql="SELECT DISTINCT doc.id doctor,doc.name as doctorName,CONCAT(doc.`name`,CASE WHEN doc.doctor_level=1 " +
                " THEN '(社区医生)' ELSE '(助老员)' END) as name,doc.photo,doc.mobile,doc.job_title_name as jobName,doc.job_title_code as job, " +
                " THEN '(社区医生)' ELSE '(社工)' END) as name,doc.photo,doc.mobile,doc.job_title_name as jobName,doc.job_title_code as job, " +
                " 0 as onLineFlag,org.code,org.name as orgName ,doc.doctor_level doctorLevel " +
                " 0 as onLineFlag,org.code,org.name as orgName ,doc.doctor_level doctorLevel " +
                "from base_service_package_sign_record sr,base_service_package_record r,base_team_member m,base_doctor doc, " +
                "from base_service_package_sign_record sr,base_service_package_record r,base_team_member m,base_doctor doc, " +
                "base_service_package pack,base_org org " +
                "base_service_package pack,base_org org " +

+ 34 - 5
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/statistics/DetectionPlatformService.java

@ -70,9 +70,19 @@ public class DetectionPlatformService  {
     */
     */
    public PageEnvelop getHealthMonitoringListNew(Integer page, Integer pageSize, Integer type){
    public PageEnvelop getHealthMonitoringListNew(Integer page, Integer pageSize, Integer type){
        page = page>0?page-1:0;
        page = page>0?page-1:0;
        String filter =" ";
        String sqltmp = "SELECT GROUP_CONCAT(dict_code) orgCodes from wlyy_hospital_sys_dict WHERE dict_name = 'jkzl_child' or dict_name = 'jkzl_older' ";
        List<Map<String,Object>> listtmp =  jdbcTemplate.queryForList(sqltmp);
        if(listtmp.size()>0){
            String orgCodes = String.valueOf(listtmp.get(0).get("orgCodes"));
            orgCodes = orgCodes.replaceAll(",","','");
            filter = "  not in ('"+orgCodes+"') ";
        }
        if (type == 1) {
        if (type == 1) {
            String sql = " SELECT id,user,`name`,'健康监测' as serve_desc,czrq,value1,value2,value3,value4,value5,value6,value7,type \n" +
            String sql = " SELECT id,user,`name`,'健康监测' as serve_desc,czrq,value1,value2,value3,value4,value5,value6,value7,type \n" +
                    "FROM wlyy_patient_health_index WHERE del = 1 AND type < 3 ORDER BY czrq desc ";
                    "FROM wlyy_patient_health_index WHERE del = 1 AND type < 3 and user "+filter+" ORDER BY czrq desc ";
            String countSql = "select count(id) from ("+sql+")A ";
            String countSql = "select count(id) from ("+sql+")A ";
            long count = jdbcTemplate.queryForObject(countSql,long.class);
            long count = jdbcTemplate.queryForObject(countSql,long.class);
            sql +=" limit "+page*pageSize+","+pageSize;
            sql +=" limit "+page*pageSize+","+pageSize;
@ -80,7 +90,7 @@ public class DetectionPlatformService  {
            return PageEnvelop.getSuccessListWithPage("查询成功",list,page,pageSize,count);
            return PageEnvelop.getSuccessListWithPage("查询成功",list,page,pageSize,count);
        }else if (type == 2){
        }else if (type == 2){
            String sql = " select  '22' as 'OrderType',ord.id,ord.patient,p.name,ord.serve_desc,DATE_FORMAT(ord.create_time,'%Y-%m-%d %H:%i:%S') create_time,ord.`status`,ord.doctor,ord.doctor_name \n" +
            String sql = " select  '22' as 'OrderType',ord.id,ord.patient,p.name,ord.serve_desc,DATE_FORMAT(ord.create_time,'%Y-%m-%d %H:%i:%S') create_time,ord.`status`,ord.doctor,ord.doctor_name \n" +
                    "from base_security_monitoring_order ord INNER JOIN base_patient p on ord.patient = p.id order by create_time desc ";
                    "from base_security_monitoring_order ord INNER JOIN base_patient p on ord.patient = p.id and p.id "+filter+"  order by create_time desc ";
            String countSql = "select count(id) from ("+sql+")A ";
            String countSql = "select count(id) from ("+sql+")A ";
            long count = jdbcTemplate.queryForObject(countSql,long.class);
            long count = jdbcTemplate.queryForObject(countSql,long.class);
            sql +=" limit "+page*pageSize+","+pageSize;
            sql +=" limit "+page*pageSize+","+pageSize;
@ -90,7 +100,7 @@ public class DetectionPlatformService  {
            String sql = " SELECT pd.id,pd.device_sn deviceSn,pd.`user`,p.`name`,d.contact_status_time contactStatusTime,CASE pd.category_code WHEN '1' THEN '血糖仪离线' WHEN '2' THEN '血压计离线' WHEN '13' THEN '睡眠带离线'\n" +
            String sql = " SELECT pd.id,pd.device_sn deviceSn,pd.`user`,p.`name`,d.contact_status_time contactStatusTime,CASE pd.category_code WHEN '1' THEN '血糖仪离线' WHEN '2' THEN '血压计离线' WHEN '13' THEN '睡眠带离线'\n" +
                    "WHEN '17' THEN '随身WiFi离线' WHEN '7' THEN '居家安全报警器离线' WHEN '12' THEN '监控器离线' WHEN '14' THEN '气感报警器离线' WHEN '15' THEN '烟感报警器离线' WHEN '16' THEN '智能拐杖离线' WHEN '4' THEN '智能手表离线' \n" +
                    "WHEN '17' THEN '随身WiFi离线' WHEN '7' THEN '居家安全报警器离线' WHEN '12' THEN '监控器离线' WHEN '14' THEN '气感报警器离线' WHEN '15' THEN '烟感报警器离线' WHEN '16' THEN '智能拐杖离线' WHEN '4' THEN '智能手表离线' \n" +
                    "ELSE '未知' END categoryCode,pd.category_code categoryNum,pd.device_name devName FROM wlyy_devices d,wlyy_patient_device pd,base_patient p\n" +
                    "ELSE '未知' END categoryCode,pd.category_code categoryNum,pd.device_name devName FROM wlyy_devices d,wlyy_patient_device pd,base_patient p\n" +
                    "WHERE d.contact_status = 0 AND pd.del = 0 AND pd.device_sn = d.device_code AND pd.`user` = p.id ORDER BY d.contact_status_time DESC ";
                    "WHERE d.contact_status = 0 AND pd.del = 0 AND pd.device_sn = d.device_code AND pd.`user` = p.id and p.id "+filter+" ORDER BY d.contact_status_time DESC ";
            String countSql = "select count(id) from ("+sql+")A ";
            String countSql = "select count(id) from ("+sql+")A ";
            long count = jdbcTemplate.queryForObject(countSql,long.class);
            long count = jdbcTemplate.queryForObject(countSql,long.class);
            sql +=" limit "+page*pageSize+","+pageSize;
            sql +=" limit "+page*pageSize+","+pageSize;
@ -208,6 +218,9 @@ public class DetectionPlatformService  {
        JSONArray jsonArray = new JSONArray();
        JSONArray jsonArray = new JSONArray();
        JSONArray arrayAll = new JSONArray();
        JSONArray arrayAll = new JSONArray();
        List<DevicePatientDevice> patientDevices = patientDeviceDao.findAllGroupUser();
        List<DevicePatientDevice> patientDevices = patientDeviceDao.findAllGroupUser();
        List<String> jkzlPatients = jdbcTemplate.queryForList(" SELECT dict_code from wlyy_hospital_sys_dict WHERE dict_name = 'jkzl_child' or dict_name = 'jkzl_older'  ",String.class);
        if (StringUtils.isNotBlank(categoryCode)) {  //categoryCode != null   根据设备类型查询
        if (StringUtils.isNotBlank(categoryCode)) {  //categoryCode != null   根据设备类型查询
            patientDevices = patientDeviceDao.findAllByCategoryCode(categoryCode);
            patientDevices = patientDeviceDao.findAllByCategoryCode(categoryCode);
        }
        }
@ -234,6 +247,10 @@ public class DetectionPlatformService  {
//        List<Map<String , Object>> userList = jdbcTemplate.queryForList(userSql);
//        List<Map<String , Object>> userList = jdbcTemplate.queryForList(userSql);
        if (patientDevices.size() > 0) {
        if (patientDevices.size() > 0) {
            for (int i=0;i<patientDevices.size();i++) {
            for (int i=0;i<patientDevices.size();i++) {
                if (jkzlPatients.contains(patientDevices.get(i).getUser())){
                    continue;
                }
                JSONArray array = new JSONArray();
                JSONArray array = new JSONArray();
                JSONObject userObj = new JSONObject();
                JSONObject userObj = new JSONObject();
                userObj.put("patient",patientDevices.get(i).getUser());
                userObj.put("patient",patientDevices.get(i).getUser());
@ -289,11 +306,23 @@ public class DetectionPlatformService  {
    }
    }
    public List<Map<String,Object>> getOrderListWarning(){
    public List<Map<String,Object>> getOrderListWarning(){
        String filter =" ";
        String sqltmp = "SELECT GROUP_CONCAT(dict_code) orgCodes from wlyy_hospital_sys_dict WHERE dict_name = 'jkzl_child' or dict_name = 'jkzl_older' ";
        List<Map<String,Object>> listtmp =  jdbcTemplate.queryForList(sqltmp);
        if(listtmp.size()>0){
            String orgCodes = String.valueOf(listtmp.get(0).get("orgCodes"));
            if (StringUtils.isNotBlank(orgCodes)){
                orgCodes = orgCodes.replaceAll(",","','");
                filter = " and p.id not in ('"+orgCodes+"') ";
            }
        }
       String sql = " select o.id as order_id,o.patient,o.patient_name patientName,CONCAT(o.serve_lat,',',o.serve_lon) latLon,'20' as orderType,'紧急呼叫' as serverDesc,o.org_code orgCode,o.device_sn,p.residential_area residentialArea from base_emergency_assistance_order o " +
       String sql = " select o.id as order_id,o.patient,o.patient_name patientName,CONCAT(o.serve_lat,',',o.serve_lon) latLon,'20' as orderType,'紧急呼叫' as serverDesc,o.org_code orgCode,o.device_sn,p.residential_area residentialArea from base_emergency_assistance_order o " +
               " INNER JOIN base_patient p on o.patient = p.id where  `status`=1 " +
               " INNER JOIN base_patient p on o.patient = p.id where  `status`=1 " +filter+
                " UNION All  " +
                " UNION All  " +
                " select o.id as order_id,o.patient,o.patient_name patientName,CONCAT(o.serve_lat,',',o.serve_lon) latLon,'22' as orderType,o.serve_desc serverDesc,o.hospital orgCode,o.device_sn,p.residential_area residentialArea from base_security_monitoring_order o " +
                " select o.id as order_id,o.patient,o.patient_name patientName,CONCAT(o.serve_lat,',',o.serve_lon) latLon,'22' as orderType,o.serve_desc serverDesc,o.hospital orgCode,o.device_sn,p.residential_area residentialArea from base_security_monitoring_order o " +
               " INNER JOIN base_patient p on o.patient = p.id where  `status`=1 ";
               " INNER JOIN base_patient p on o.patient = p.id where  `status`=1 " +filter;
        List<Map<String,Object>> orderPoints2 = jdbcTemplate.queryForList(sql);
        List<Map<String,Object>> orderPoints2 = jdbcTemplate.queryForList(sql);
        for (Map<String,Object> tmp:orderPoints2){
        for (Map<String,Object> tmp:orderPoints2){
            if (null!=tmp.get("device_sn")){
            if (null!=tmp.get("device_sn")){

+ 25 - 8
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/statistics/StatisticsService.java

@ -159,7 +159,7 @@ public class StatisticsService {
        }
        }
        JSONObject res = new JSONObject();
        JSONObject res = new JSONObject();
        String medicalInstitutionSql = "SELECT COUNT(1) FROM base_org WHERE (type = 1 OR type = 2) AND del = 1 ";
        String medicalInstitutionSql = "SELECT COUNT(1) FROM base_org WHERE (type = 1 OR type = 2) AND del = 1 "+orgFilter;
        String elderlyCarServiceSql = "SELECT COUNT(1) FROM base_org WHERE type = 3 AND del = 1"+orgFilter;
        String elderlyCarServiceSql = "SELECT COUNT(1) FROM base_org WHERE type = 3 AND del = 1"+orgFilter;
        String childcareInstitutionsssSql = "SELECT COUNT(1) FROM base_org WHERE type = 4 AND del = 1"+orgFilter;
        String childcareInstitutionsssSql = "SELECT COUNT(1) FROM base_org WHERE type = 4 AND del = 1"+orgFilter;
@ -263,8 +263,21 @@ public class StatisticsService {
        List result = new ArrayList<>();
        List result = new ArrayList<>();
        Date date = DateUtil.getPreDays(new Date(),-7);
        Date date = DateUtil.getPreDays(new Date(),-7);
        String dateStr = DateUtil.dateToStrLong(date);
        String dateStr = DateUtil.dateToStrLong(date);
        String sql = "select * from base_login_log where create_time>='"+dateStr+"' order by create_time desc limit "+ (page-1)*size+","+size;
        String sqlCount = "select count(id) from base_login_log where create_time>='"+dateStr+"' ";
        String filter =" ";
        String sqltmp = "SELECT GROUP_CONCAT(dict_code) orgCodes from wlyy_hospital_sys_dict WHERE dict_name = 'jkzl_child' or dict_name = 'jkzl_older' " +
                "  or dict_name = 'jkzl_user' or dict_name = 'jkzl_helper'  or dict_name = 'jkzl_teacher' ";
        List<Map<String,Object>> listtmp =  jdbcTemplate.queryForList(sqltmp);
        if(listtmp.size()>0){
            String orgCodes = String.valueOf(listtmp.get(0).get("orgCodes"));
            if (StringUtils.isNotBlank(orgCodes)){
                orgCodes = orgCodes.replaceAll(",","','");
                filter = " and user_id not in ('"+orgCodes+"')";
            }
        }
        String sql = "select * from base_login_log where create_time>='"+dateStr+"' "+filter+" order by create_time desc limit "+ (page-1)*size+","+size;
        String sqlCount = "select count(id) from base_login_log where create_time>='"+dateStr+"' "+filter;
        Long count = jdbcTemplate.queryForObject(sqlCount,Long.class);
        Long count = jdbcTemplate.queryForObject(sqlCount,Long.class);
        List<BaseLoginLogDO> loginLogDOs = jdbcTemplate.query(sql,new BeanPropertyRowMapper(BaseLoginLogDO.class));
        List<BaseLoginLogDO> loginLogDOs = jdbcTemplate.query(sql,new BeanPropertyRowMapper(BaseLoginLogDO.class));
        for (BaseLoginLogDO log:loginLogDOs) {
        for (BaseLoginLogDO log:loginLogDOs) {
@ -864,17 +877,21 @@ public class StatisticsService {
        List<Map<String,Object>> listtmp =  jdbcTemplate.queryForList(sqltmp);
        List<Map<String,Object>> listtmp =  jdbcTemplate.queryForList(sqltmp);
        if(listtmp.size()>0){
        if(listtmp.size()>0){
            String orgCodes = String.valueOf(listtmp.get(0).get("orgCodes"));
            String orgCodes = String.valueOf(listtmp.get(0).get("orgCodes"));
            orgCodes = orgCodes.replaceAll(",","','");
            filter = " not in ('"+orgCodes+"')";
            if (StringUtils.isNotBlank(orgCodes)){
                orgCodes = orgCodes.replaceAll(",","','");
                filter = " and lab.patient not in ('"+orgCodes+"')";
            }
        }
        }
        JSONArray jsonArray = new JSONArray();
        JSONArray jsonArray = new JSONArray();
        String sql = " select dict.dict_code,dict_value,count(DISTINCT lab.patient) total from wlyy_hospital_sys_dict dict \n" +
                "LEFT JOIN wlyy_patient_label lab  on  dict.dict_code = lab.label_code AND  lab.label_type='1' and lab.patient "+filter+" " +
        String sql = " select dict.dict_code,dict_value,count(DISTINCT A.patient) total from wlyy_hospital_sys_dict dict \n" +
                " LEFT JOIN (select distinct lab.patient,lab.label_code from  wlyy_patient_label lab  INNER JOIN base_patient p on p.id = lab.patient AND  lab.label_type='1' " +
                  filter+"   \n" +
                ")A on dict.dict_code = A.label_code " +
                "where  dict.dict_name='service_type'  and  dict.dict_code is not null and dict_code<>5  \n" +
                "where  dict.dict_name='service_type'  and  dict.dict_code is not null and dict_code<>5  \n" +
                " GROUP BY dict.dict_code; ";
                " GROUP BY dict.dict_code; ";
        List<Map<String,Object>> list = jdbcTemplate.queryForList(sql);
        List<Map<String,Object>> list = jdbcTemplate.queryForList(sql);
        String older = "  select count(DISTINCT patient) from wlyy_patient_label where label_type='1' and patient "+filter;
        String older = " select count(distinct lab.patient) from  wlyy_patient_label lab  INNER JOIN base_patient p on p.id = lab.patient AND  lab.label_type='1' "+filter;
        Integer count = jdbcTemplate.queryForObject(older,Integer.class);
        Integer count = jdbcTemplate.queryForObject(older,Integer.class);
        for(Map<String,Object> map:list){
        for(Map<String,Object> map:list){

+ 49 - 8
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/third/PatientInfoPlatFormService.java

@ -283,7 +283,7 @@ public class PatientInfoPlatFormService {
     * @return
     * @return
     */
     */
    public JSONObject getPatientMonitoringInfo(String patient){
    public JSONObject getPatientMonitoringInfo(String patient){
        return securityMonitoringOrderService.patientMonitoringInfo(patient,null);
        return securityMonitoringOrderService.patientMonitoringInfo(patient,null,true);
    }
    }
    /**
    /**
@ -303,22 +303,34 @@ public class PatientInfoPlatFormService {
     */
     */
    public PageEnvelop getEmergencyWarnOrderList(String patient,Integer orderType,Integer page,Integer pageSize){
    public PageEnvelop getEmergencyWarnOrderList(String patient,Integer orderType,Integer page,Integer pageSize){
        page = page>0?page-1:0;
        page = page>0?page-1:0;
        String filter =" ";
        String sqltmp = "SELECT GROUP_CONCAT(dict_code) orgCodes from wlyy_hospital_sys_dict WHERE dict_name = 'jkzl_child' or dict_name = 'jkzl_older' ";
        List<Map<String,Object>> listtmp =  jdbcTemplate.queryForList(sqltmp);
        if(listtmp.size()>0){
            String orgCodes = String.valueOf(listtmp.get(0).get("orgCodes"));
            if (StringUtils.isNotBlank(orgCodes)){
                orgCodes = orgCodes.replaceAll(",","','");
                filter = " and lab.patient not in ('"+orgCodes+"')";
            }
        }
        String sql = " ";
        String sql = " ";
        if (null==orderType){
        if (null==orderType){
            sql = " select '20' as OrderType,ord.id,ord.patient,p.name,'紧急呼叫' as serve_desc," +
            sql = " select '20' as OrderType,ord.id,ord.patient,p.name,'紧急呼叫' as serve_desc," +
                    " DATE_FORMAT(ord.create_time,'%Y-%m-%d %H:%i:%S') create_time from base_emergency_assistance_order ord " +
                    " DATE_FORMAT(ord.create_time,'%Y-%m-%d %H:%i:%S') create_time from base_emergency_assistance_order ord " +
                    " INNER JOIN base_patient p on ord.patient = p.id {{patient}} \n" +
                    " INNER JOIN base_patient p on ord.patient = p.id {{patient}} "+filter+" \n" +
                    "UNION \n" +
                    "UNION \n" +
                    "select  '22' as 'OrderType',ord.id,ord.patient,p.name,ord.serve_desc,DATE_FORMAT(ord.create_time,'%Y-%m-%d %H:%i:%S') create_time " +
                    "select  '22' as 'OrderType',ord.id,ord.patient,p.name,ord.serve_desc,DATE_FORMAT(ord.create_time,'%Y-%m-%d %H:%i:%S') create_time " +
                    " from base_security_monitoring_order ord INNER JOIN base_patient p on ord.patient = p.id {{patient}} \n" +
                    " from base_security_monitoring_order ord INNER JOIN base_patient p on ord.patient = p.id {{patient}} "+filter+" \n" +
                    "order by create_time desc  ";
                    "order by create_time desc  ";
        }else if (20==orderType){
        }else if (20==orderType){
            sql = " select '20' as OrderType,ord.id,ord.patient,p.name,'紧急呼叫' as serve_desc," +
            sql = " select '20' as OrderType,ord.id,ord.patient,p.name,'紧急呼叫' as serve_desc," +
                    " DATE_FORMAT(ord.create_time,'%Y-%m-%d %H:%i:%S') create_time from base_emergency_assistance_order ord " +
                    " DATE_FORMAT(ord.create_time,'%Y-%m-%d %H:%i:%S') create_time from base_emergency_assistance_order ord " +
                    " INNER JOIN base_patient p on ord.patient = p.id {{patient}} order by create_time desc ";
                    " INNER JOIN base_patient p on ord.patient = p.id {{patient}} "+filter+"  order by create_time desc ";
        }else if (22==orderType){
        }else if (22==orderType){
            sql=  "select  '22' as 'OrderType',ord.id,ord.patient,p.name,ord.serve_desc,DATE_FORMAT(ord.create_time,'%Y-%m-%d %H:%i:%S') create_time " +
            sql=  "select  '22' as 'OrderType',ord.id,ord.patient,p.name,ord.serve_desc,DATE_FORMAT(ord.create_time,'%Y-%m-%d %H:%i:%S') create_time " +
                    " from base_security_monitoring_order ord INNER JOIN base_patient p on ord.patient = p.id {{patient}} \n" +
                    " from base_security_monitoring_order ord INNER JOIN base_patient p on ord.patient = p.id {{patient}} "+filter+" \n" +
                    "order by create_time desc  ";
                    "order by create_time desc  ";
        }
        }
        if (StringUtils.isNotBlank(patient)){
        if (StringUtils.isNotBlank(patient)){
@ -327,6 +339,7 @@ public class PatientInfoPlatFormService {
        else {
        else {
            sql = sql.replace("{{patient}}"," ");
            sql = sql.replace("{{patient}}"," ");
        }
        }
        String countSql = "select count(id) from ("+sql+")A ";
        String countSql = "select count(id) from ("+sql+")A ";
        long count = jdbcTemplate.queryForObject(countSql,long.class);
        long count = jdbcTemplate.queryForObject(countSql,long.class);
        sql +=" limit "+page*pageSize+","+pageSize;
        sql +=" limit "+page*pageSize+","+pageSize;
@ -336,13 +349,22 @@ public class PatientInfoPlatFormService {
    public PageEnvelop getEmergencyWarnOrderListNew(Integer page,Integer pageSize,String patient){
    public PageEnvelop getEmergencyWarnOrderListNew(Integer page,Integer pageSize,String patient){
        page = page>0?page-1:0;
        page = page>0?page-1:0;
        String filter =" ";
        String sqltmp = "SELECT GROUP_CONCAT(dict_code) orgCodes from wlyy_hospital_sys_dict WHERE dict_name = 'jkzl_child' or dict_name = 'jkzl_older' ";
        List<Map<String,Object>> listtmp =  jdbcTemplate.queryForList(sqltmp);
        if(listtmp.size()>0){
            String orgCodes = String.valueOf(listtmp.get(0).get("orgCodes"));
            orgCodes = orgCodes.replaceAll(",","','");
            filter = " and ord.patient not in ('"+orgCodes+"') ";
        }
        String sql = " select  '22' as 'OrderType',p.archive_type archiveType,p.residential_area residentialArea,ord.id,ord.patient,p.name,ord.serve_desc,DATE_FORMAT(ord.create_time,'%Y-%m-%d %H:%i:%S') create_time," +
        String sql = " select  '22' as 'OrderType',p.archive_type archiveType,p.residential_area residentialArea,ord.id,ord.patient,p.name,ord.serve_desc,DATE_FORMAT(ord.create_time,'%Y-%m-%d %H:%i:%S') create_time," +
                "ord.`status`,case p.sex when 1 then '男' when 2 then '女' else p.sex end as sex,TIMESTAMPDIFF(YEAR,p.birthday,now()) as age \n" +
                "ord.`status`,case p.sex when 1 then '男' when 2 then '女' else p.sex end as sex,TIMESTAMPDIFF(YEAR,p.birthday,now()) as age \n" +
                "from base_security_monitoring_order ord INNER JOIN base_patient p on ord.patient = p.id " ;
                "from base_security_monitoring_order ord INNER JOIN base_patient p on ord.patient = p.id " ;
        if (StringUtils.isNotBlank(patient)){
        if (StringUtils.isNotBlank(patient)){
            sql +=" and ord.patient='"+patient+"' ";
            sql +=" and ord.patient='"+patient+"' ";
        }
        }
        sql+= " order by create_time desc ";
        sql+= filter +" order by create_time desc ";
        String countSql = "select count(id) from ("+sql+")A ";
        String countSql = "select count(id) from ("+sql+")A ";
        long count = jdbcTemplate.queryForObject(countSql,long.class);
        long count = jdbcTemplate.queryForObject(countSql,long.class);
        sql +=" limit "+page*pageSize+","+pageSize;
        sql +=" limit "+page*pageSize+","+pageSize;
@ -489,6 +511,15 @@ public class PatientInfoPlatFormService {
    public PageEnvelop getEmergencyWarningListNew(Integer page,Integer pageSize,String patient){
    public PageEnvelop getEmergencyWarningListNew(Integer page,Integer pageSize,String patient){
        page = page>0?page-1:0;
        page = page>0?page-1:0;
        String filter=" ";
        String sqltmp = "SELECT GROUP_CONCAT(dict_code) orgCodes from wlyy_hospital_sys_dict WHERE dict_name = 'jkzl_child' or dict_name = 'jkzl_older' ";
        List<Map<String,Object>> listtmp =  jdbcTemplate.queryForList(sqltmp);
        if(listtmp.size()>0){
            String orgCodes = String.valueOf(listtmp.get(0).get("orgCodes"));
            orgCodes = orgCodes.replaceAll(",","','");
            filter = " and ord.patient not in ('"+orgCodes+"') ";
        }
        String sql = " select '20' as OrderType,p.archive_type archiveType,p.residential_area residentialArea,ord.id,ord.patient, " +
        String sql = " select '20' as OrderType,p.archive_type archiveType,p.residential_area residentialArea,ord.id,ord.patient, " +
                "p.name,'紧急呼叫' as serve_desc,DATE_FORMAT(ord.create_time,'%Y-%m-%d %H:%i:%S') create_time,ord.`status`," +
                "p.name,'紧急呼叫' as serve_desc,DATE_FORMAT(ord.create_time,'%Y-%m-%d %H:%i:%S') create_time,ord.`status`," +
                " case p.sex when 1 then '男' when 2 then '女' else p.sex end as sex,TIMESTAMPDIFF(YEAR,p.birthday,now()) as age \n" +
                " case p.sex when 1 then '男' when 2 then '女' else p.sex end as sex,TIMESTAMPDIFF(YEAR,p.birthday,now()) as age \n" +
@ -496,7 +527,7 @@ public class PatientInfoPlatFormService {
        if (StringUtils.isNotBlank(patient)){
        if (StringUtils.isNotBlank(patient)){
            sql +=" and ord.patient='"+patient+"' ";
            sql +=" and ord.patient='"+patient+"' ";
        }
        }
        sql+=  " order by create_time desc ";
        sql +=  filter + "  order by create_time desc ";
        String countSql = "select count(id) from ("+sql+")A ";
        String countSql = "select count(id) from ("+sql+")A ";
        long count = jdbcTemplate.queryForObject(countSql,long.class);
        long count = jdbcTemplate.queryForObject(countSql,long.class);
        sql +=" limit "+page*pageSize+","+pageSize;
        sql +=" limit "+page*pageSize+","+pageSize;
@ -506,10 +537,20 @@ public class PatientInfoPlatFormService {
    public PageEnvelop getHealthMonitoringListNew(Integer page,Integer pageSize){
    public PageEnvelop getHealthMonitoringListNew(Integer page,Integer pageSize){
        page = page>0?page-1:0;
        page = page>0?page-1:0;
        String filter=" ";
        String sqltmp = "SELECT GROUP_CONCAT(dict_code) orgCodes from wlyy_hospital_sys_dict WHERE dict_name = 'jkzl_child' or dict_name = 'jkzl_older' ";
        List<Map<String,Object>> listtmp =  jdbcTemplate.queryForList(sqltmp);
        if(listtmp.size()>0){
            String orgCodes = String.valueOf(listtmp.get(0).get("orgCodes"));
            orgCodes = orgCodes.replaceAll(",","','");
            filter = " and idx.user not in ('"+orgCodes+"') ";
        }
        String sql = " SELECT idx.id,idx.user,idx.`name`,p.archive_type archiveType,p.residential_area residentialArea,'健康监测' as serve_desc, " +
        String sql = " SELECT idx.id,idx.user,idx.`name`,p.archive_type archiveType,p.residential_area residentialArea,'健康监测' as serve_desc, " +
                "idx.czrq,value1,value2,value3,value4,value5,value6,value7,type FROM wlyy_patient_health_index idx " +
                "idx.czrq,value1,value2,value3,value4,value5,value6,value7,type FROM wlyy_patient_health_index idx " +
                " INNER JOIN base_patient p on idx.user = p.id and p.del=1\n" +
                " INNER JOIN base_patient p on idx.user = p.id and p.del=1\n" +
                " WHERE idx.del = 1 AND idx.type < 3 ORDER BY idx.czrq ";
                " WHERE idx.del = 1 AND idx.type < 3 "+filter+" ORDER BY idx.czrq ";
        String countSql = "select count(id) from ("+sql+")A ";
        String countSql = "select count(id) from ("+sql+")A ";
        long count = jdbcTemplate.queryForObject(countSql,long.class);
        long count = jdbcTemplate.queryForObject(countSql,long.class);
        sql +=" limit "+page*pageSize+","+pageSize;
        sql +=" limit "+page*pageSize+","+pageSize;

+ 1 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/visit/BaseVisitService.java

@ -97,6 +97,7 @@ public class BaseVisitService {
        if("1".equals(visitDO.getStatus())){
        if("1".equals(visitDO.getStatus())){
            return "走访已完成不能删除";
            return "走访已完成不能删除";
        }
        }
        baseVisitDao.delete(id);
        return null;
        return null;
    }
    }

+ 119 - 4
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/util/GetuiUtil.java

@ -7,9 +7,17 @@ import com.getui.push.v2.sdk.api.PushApi;
import com.getui.push.v2.sdk.common.ApiResult;
import com.getui.push.v2.sdk.common.ApiResult;
import com.getui.push.v2.sdk.dto.req.Audience;
import com.getui.push.v2.sdk.dto.req.Audience;
import com.getui.push.v2.sdk.dto.req.Settings;
import com.getui.push.v2.sdk.dto.req.Settings;
import com.getui.push.v2.sdk.dto.req.Strategy;
import com.getui.push.v2.sdk.dto.req.message.PushChannel;
import com.getui.push.v2.sdk.dto.req.message.PushDTO;
import com.getui.push.v2.sdk.dto.req.message.PushDTO;
import com.getui.push.v2.sdk.dto.req.message.PushMessage;
import com.getui.push.v2.sdk.dto.req.message.PushMessage;
import com.getui.push.v2.sdk.dto.req.message.android.AndroidDTO;
import com.getui.push.v2.sdk.dto.req.message.android.GTNotification;
import com.getui.push.v2.sdk.dto.req.message.android.GTNotification;
import com.getui.push.v2.sdk.dto.req.message.android.ThirdNotification;
import com.getui.push.v2.sdk.dto.req.message.android.Ups;
import com.getui.push.v2.sdk.dto.req.message.ios.Alert;
import com.getui.push.v2.sdk.dto.req.message.ios.Aps;
import com.getui.push.v2.sdk.dto.req.message.ios.IosDTO;
import org.slf4j.Logger;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.slf4j.LoggerFactory;
@ -26,10 +34,11 @@ public class GetuiUtil {
    private static final Logger logger = LoggerFactory.getLogger(GetuiUtil.class);
    private static final Logger logger = LoggerFactory.getLogger(GetuiUtil.class);
    public static String AppID = "GjGtBQUgSbASF0F9svJ6b7";
    public static String AppKey = "LcDj4vwtE29Q88KyPjJEj9";
    public static String AppSecret = "0VAMmhF1F76oGjheYWATM3";
    public static String MasterSecret = "hB6swhmr0mAeaJgyoLMkC5";
    public static String AppID = "I6JAs97T818HD0hGzG1EH4";
    public static String AppKey = "JC2LAW9IK27pansBB4jN87";
    public static String AppSecret = "Sn9PLz1hA6NNgyb7WHx45";
    public static String MasterSecret = "Rd86CP8bOy7RHyTf4ZE3R4";
    private static PushApi getPushApi(){
    private static PushApi getPushApi(){
        GtApiConfiguration apiConfiguration = new GtApiConfiguration();
        GtApiConfiguration apiConfiguration = new GtApiConfiguration();
@ -46,6 +55,112 @@ public class GetuiUtil {
        return pushApi;
        return pushApi;
    }
    }
    public static void main(String[] args) {
//        JSONObject jsonObject = new JSONObject();
//        jsonObject.put("title","title");
//        jsonObject.put("body","body");
//        jsonObject.put("url","https://www.baidu.com/");
//        jsonObject.put("clickType","url");
//        String cid = "d0e395d2e04b1da6f45a4f700883297d";
//        ApiResult<Map<String, Map<String, String>>> apiResult = GetuiUtil.pushToSingleByCid(cid,jsonObject);
//        if (apiResult.isSuccess()) {
//            System.out.println("个推推送成功:"+apiResult.getData());
//        } else {
//            System.out.println("个推推送失败:code:" + apiResult.getCode() + ", msg: " + apiResult.getMsg());
//        }
        String cid = "d0e395d2e04b1da6f45a4f700883297d";
        JSONObject json = new JSONObject();
        json.put("title","安卓11:38标题");
        json.put("body","安卓离线展示的内容");
        json.put("url","https://www.baidu.com/");
        json.put("clickType","url");
        json.put("platform","patient");
        json.put("payload","payload");
        push2(cid,1,json);
    }
    /**
     * Rest-V2厂商推送
     * type 1 安卓 2 ios
     */
    public static void push2(String cid,int type,JSONObject json){
        PushApi pushApi = getPushApi();
        //根据cid进行单推
        PushDTO<Audience> pushDTO = new PushDTO<Audience>();
        // 设置推送参数
        pushDTO.setRequestId(System.currentTimeMillis() + "");//requestid需要每次变化唯一
        //配置推送条件
        // 1: 表示该消息在用户在线时推送个推通道,用户离线时推送厂商通道;
        // 2: 表示该消息只通过厂商通道策略下发,不考虑用户是否在线;
        // 3: 表示该消息只通过个推通道下发,不考虑用户是否在线;
        // 4: 表示该消息优先从厂商通道下发,若消息内容在厂商通道代发失败后会从个推通道下发。
        Strategy strategy=new Strategy();
        strategy.setDef(1);
        Settings settings=new Settings();
        settings.setStrategy(strategy);
        pushDTO.setSettings(settings);
        settings.setTtl(3600000);//消息有效期,走厂商消息需要设置该值
        PushChannel pushChannel = new PushChannel();
        if(type == 1){
            //安卓离线厂商通道推送消息体
            AndroidDTO androidDTO = new AndroidDTO();
            Ups ups = new Ups();
            ThirdNotification notification1 = new ThirdNotification();;
            ups.setNotification(notification1);
            notification1.setTitle("安卓11:38标题");
            notification1.setBody("安卓离线展示的内容");
            notification1.setClickType("intent");
            String intent = "intent:#Intent;launchFlags=0x04000000;action=android.intent.action.oppopush;" +
                    "component=com.xmeye.ehospital."+json.getString("platform")+"/io.dcloud.PandoraEntry;S.UP-OL-SU=true;" +
                    "S.title="+json.getString("title")+";" +
                    "S.content="+json.getString("body")+";" +
                    "S.payload="+json.getString("payload")+";end";
            notification1.setIntent(intent);
            //各厂商自有功能单项设置
            //ups.addOption("HW", "/message/android/notification/badge/class", "io.dcloud.PandoraEntry ");
            //ups.addOption("HW", "/message/android/notification/badge/add_num", 1);
            //ups.addOption("HW", "/message/android/notification/importance", "HIGH");
            //ups.addOption("VV","classification",1);
            androidDTO.setUps(ups);
            pushChannel.setAndroid(androidDTO);
        } else{
            //推送苹果离线通知标题内容
            Alert alert=new Alert();
            alert.setTitle(json.getString("title"));
            alert.setBody(json.getString("body"));
            Aps aps = new Aps();
            //1表示静默推送(无通知栏消息),静默推送时不需要填写其他参数。
            //苹果建议1小时最多推送3条静默消息
            aps.setContentAvailable(0);
            aps.setSound("default");
            aps.setAlert(alert);
            IosDTO iosDTO = new IosDTO();
            iosDTO.setAps(aps);
            iosDTO.setType("notify");
            pushChannel.setIos(iosDTO);
        }
        pushDTO.setPushChannel(pushChannel);
        // PushMessage在线走个推通道才会起作用的消息体
        PushMessage pushMessage = new PushMessage();
        pushDTO.setPushMessage(pushMessage);
        pushMessage.setTransmission(" {title:\""+json.getString("title")+"\",content:\""+json.getString("body")+"\",payload:\""+json.getString("payload")+"\"}");
        // 设置接收人信息
        Audience audience = new Audience();
        pushDTO.setAudience(audience);
        audience.addCid(cid);
        // 进行cid单推
        ApiResult<Map<String, Map<String, String>>> apiResult = pushApi.pushToSingleByCid(pushDTO);
        if (apiResult.isSuccess()) {
            // success
            System.out.println("发送成功:"+apiResult.getData());
        } else {
            // failed
            System.out.println("code:" + apiResult.getCode() + ", msg: " + apiResult.getMsg());
        }
    }
    /**
    /**
     * 单推
     * 单推
     */
     */

+ 4 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/util/MessageUtil.java

@ -238,6 +238,9 @@ public class MessageUtil {
            case 35:
            case 35:
                wxTemplateConfigDO.setUrl(url + wxTemplateConfigDO.getUrl()+json.getString("orderId")+"&isMask=1");
                wxTemplateConfigDO.setUrl(url + wxTemplateConfigDO.getUrl()+json.getString("orderId")+"&isMask=1");
                break;
                break;
            case 36://安防、救助工单详情地址
                wxTemplateConfigDO.setUrl(wxTemplateConfigDO.getUrl()+"?openid=" + openid+"&id="+json.getString("id")+"&OrderType="+json.getString("OrderType"));
                break;
        }
        }
        return wxTemplateConfigDO;
        return wxTemplateConfigDO;
    }
    }
@ -258,6 +261,7 @@ public class MessageUtil {
        messageDO.setReceiver(receiver);
        messageDO.setReceiver(receiver);
        messageDO.setReceiverName(receiverName);
        messageDO.setReceiverName(receiverName);
        messageDO.setData(msg);
        messageDO.setData(msg);
        messageDO.setDel("1");
        messageDO.setOver(over);
        messageDO.setOver(over);
        messageDO.setCreateTime(new Date());
        messageDO.setCreateTime(new Date());
        systemMessageDao.save(messageDO);
        systemMessageDao.save(messageDO);

+ 2 - 0
svr/svr-cloud-device/src/main/java/com/yihu/jw/care/dao/device/PatientSafeAreaDao.java

@ -3,6 +3,7 @@ package com.yihu.jw.care.dao.device;
import com.yihu.jw.entity.care.device.PatientSafeAreaDO;
import com.yihu.jw.entity.care.device.PatientSafeAreaDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
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.PagingAndSortingRepository;
import java.util.List;
import java.util.List;
@ -13,6 +14,7 @@ import java.util.List;
public interface PatientSafeAreaDao extends PagingAndSortingRepository<PatientSafeAreaDO,Long>,
public interface PatientSafeAreaDao extends PagingAndSortingRepository<PatientSafeAreaDO,Long>,
        JpaSpecificationExecutor<PatientSafeAreaDO> {
        JpaSpecificationExecutor<PatientSafeAreaDO> {
    @Query(value = " select p from PatientSafeAreaDO p where p.patient=?1 and p.del='1' and p.manageStatus=1 ")
    List<PatientSafeAreaDO> findByPatient(String patient);
    List<PatientSafeAreaDO> findByPatient(String patient);
    @Modifying
    @Modifying

+ 21 - 6
svr/svr-cloud-device/src/main/java/com/yihu/jw/care/service/DeviceService.java

@ -97,6 +97,8 @@ public class DeviceService {
    private DeviceDetailDao deviceDetailDao;
    private DeviceDetailDao deviceDetailDao;
    @Autowired
    @Autowired
    private DeviceDataPushLogUtil dataPushLogUtil;
    private DeviceDataPushLogUtil dataPushLogUtil;
    @Autowired
    private PatientSafeAreaDao safeAreaDao;
    /**
    /**
     * 获取爱牵挂管理员cookie
     * 获取爱牵挂管理员cookie
@ -308,6 +310,11 @@ public class DeviceService {
                                    "  and pack.del=1";
                                    "  and pack.del=1";
                            List<Map<String,Object>> sqlResult = jdbcTemplate.queryForList(sql);
                            List<Map<String,Object>> sqlResult = jdbcTemplate.queryForList(sql);
                            if (sqlResult.size()>0){
                            if (sqlResult.size()>0){
                                //疑似离开安全区域 v1.5电子围栏为确认管理时触发
                                List<PatientSafeAreaDO> safeAreaDOS = safeAreaDao.findByPatient(patientDO.getId());
                                if (safeAreaDOS.size()==0){
                                    return;
                                }
                                url = cloudCareUrl+"/cloudCare/noLogin/security/createOrder";
                                url = cloudCareUrl+"/cloudCare/noLogin/security/createOrder";
                                JSONObject jsonObject = new JSONObject();
                                JSONObject jsonObject = new JSONObject();
                                jsonObject.put("patient",patientDO.getId());
                                jsonObject.put("patient",patientDO.getId());
@ -359,7 +366,14 @@ public class DeviceService {
    public void byLocation(String imei,String time_begin,boolean is_reply,boolean is_track,String city,String address,double lon,double lat,String type) {
    public void byLocation(String imei,String time_begin,boolean is_reply,boolean is_track,String city,String address,double lon,double lat,String type) {
        try {
        try {
            if(StringUtils.isNotBlank(imei)){
            if(StringUtils.isNotBlank(imei)){
                List<DevicePatientDevice> devicePatientDeviceDos = patientDeviceDao.findByDeviceSn(imei);
                if (devicePatientDeviceDos.size()>0){
                    DevicePatientDevice deviceDO = devicePatientDeviceDos.get(0);
                    BasePatientDO patientDO = patientDao.findById(deviceDO.getUser());
                    JSONObject position = gpsUtil.gcj02_To_Bd09(lat,lon);
                    patientDO.setLatLon(position.getDouble("lat")+","+position.getDouble("lon"));
                    patientDao.save(patientDO);
                }
            }
            }
        } catch (Exception e) {
        } catch (Exception e) {
@ -427,7 +441,7 @@ public class DeviceService {
                    for (int i=0;i<errorIndex.size();i++){
                    for (int i=0;i<errorIndex.size();i++){
                        com.alibaba.fastjson.JSONObject tmp = errorIndex.getJSONObject(i);
                        com.alibaba.fastjson.JSONObject tmp = errorIndex.getJSONObject(i);
                        if (0!=tmp.getInteger("error")){
                        if (0!=tmp.getInteger("error")){
                            patientHealthIndex.setStatus(1);
//                            patientHealthIndex.setStatus(1);
                        }
                        }
                        if (1 == tmp.getInteger("error")){
                        if (1 == tmp.getInteger("error")){
                            content_notice += tmp.getString("indexName")+"、";
                            content_notice += tmp.getString("indexName")+"、";
@ -441,8 +455,9 @@ public class DeviceService {
                    }
                    }
                    dataPushLogUtil.updContactStatus(imei,1,false);
                    dataPushLogUtil.updContactStatus(imei,1,false);
                    healthIndexDao.save(patientHealthIndex);
                    healthIndexDao.save(patientHealthIndex);
                    systemMessageDao.save(messageDO);
                    imUtil.sendPatientSystemMessage(messageDO.getReceiver(),JSON.toJSONString(message,SerializerFeature.WriteMapNullValue));
                    //心率不做异常消息推送
//                    systemMessageDao.save(messageDO);
//                    imUtil.sendPatientSystemMessage(messageDO.getReceiver(),JSON.toJSONString(message,SerializerFeature.WriteMapNullValue));
                }
                }
            }
            }
@ -953,7 +968,7 @@ public class DeviceService {
                    patientHealthIndex.setStatus(0);
                    patientHealthIndex.setStatus(0);
                    Integer heartrate1 = Integer.parseInt(heartrate);
                    Integer heartrate1 = Integer.parseInt(heartrate);
                    if (heartrate1>theshold_heartrate_h||theshold_heartrate_h<theshold_heartrate_l){
                    if (heartrate1>theshold_heartrate_h||theshold_heartrate_h<theshold_heartrate_l){
                        patientHealthIndex.setStatus(1);
//                        patientHealthIndex.setStatus(1);
                    }
                    }
                    else {
                    else {
                        patientHealthIndex.setStatus(0);
                        patientHealthIndex.setStatus(0);
@ -979,7 +994,7 @@ public class DeviceService {
                    patientHealthIndex.setCzrq(new Date());
                    patientHealthIndex.setCzrq(new Date());
                    Integer breath1 = Integer.parseInt(breath);
                    Integer breath1 = Integer.parseInt(breath);
                    if (breath1>theshold_breath_h||breath1<theshold_breath_l){
                    if (breath1>theshold_breath_h||breath1<theshold_breath_l){
                        patientHealthIndex.setStatus(1);
//                        patientHealthIndex.setStatus(1);
                    }else {
                    }else {
                        patientHealthIndex.setStatus(0);
                        patientHealthIndex.setStatus(0);
                    }
                    }

+ 2 - 0
svr/svr-cloud-device/src/main/java/com/yihu/jw/care/util/DeviceDataPushLogUtil.java

@ -11,6 +11,7 @@ import com.yihu.jw.hospital.message.dao.SystemMessageDao;
import com.yihu.jw.patient.dao.BasePatientDao;
import com.yihu.jw.patient.dao.BasePatientDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.ArrayList;
import java.util.Date;
import java.util.Date;
@ -67,6 +68,7 @@ public class DeviceDataPushLogUtil {
     * @param status
     * @param status
     * @param flag 状态 true 异常 false 正常 null其他
     * @param flag 状态 true 异常 false 正常 null其他
     */
     */
    @Transactional
    public void updContactStatus(String sn,Integer status,Boolean flag){
    public void updContactStatus(String sn,Integer status,Boolean flag){
        DeviceDetail deviceDetail = deviceDetailDao.findBySn(sn);
        DeviceDetail deviceDetail = deviceDetailDao.findBySn(sn);
        if(deviceDetail!=null){
        if(deviceDetail!=null){

+ 4 - 0
svr/svr-cloud-device/src/main/java/com/yihu/jw/care/util/DeviceLostMessageUtil.java

@ -37,6 +37,10 @@ public class DeviceLostMessageUtil {
    public void deviceLostMessage(List<String> devices){
    public void deviceLostMessage(List<String> devices){
        List<SystemMessageDO> messageDOS = new ArrayList<>();
        List<SystemMessageDO> messageDOS = new ArrayList<>();
        for (String id:devices){
        for (String id:devices){
            List<SystemMessageDO> sendMessageBefore = systemMessageDao.queryByRelationCodeAndTypeIn(id,new String[]{"43"});
            if (sendMessageBefore.size()>0){//删除之前的离线消息
                systemMessageDao.delete(sendMessageBefore);
            }
            List<DevicePatientDevice> pds =  patientDeviceDao.findByDeviceSn(id);
            List<DevicePatientDevice> pds =  patientDeviceDao.findByDeviceSn(id);
            if (pds.size()>0){
            if (pds.size()>0){
                DevicePatientDevice deviceDO = pds.get(0);
                DevicePatientDevice deviceDO = pds.get(0);

+ 10 - 1
svr/svr-cloud-device/src/main/java/com/yihu/jw/care/util/SecurityOrderUtil.java

@ -5,9 +5,11 @@ import com.fasterxml.jackson.databind.node.ObjectNode;
import com.yihu.fastdfs.FastDFSUtil;
import com.yihu.fastdfs.FastDFSUtil;
import com.yihu.jw.care.dao.device.DeviceSosLogDao;
import com.yihu.jw.care.dao.device.DeviceSosLogDao;
import com.yihu.jw.care.dao.device.PatientDeviceDao;
import com.yihu.jw.care.dao.device.PatientDeviceDao;
import com.yihu.jw.care.dao.device.PatientSafeAreaDao;
import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.entity.care.device.DevicePatientDevice;
import com.yihu.jw.entity.care.device.DevicePatientDevice;
import com.yihu.jw.entity.care.device.DeviceSosLogDO;
import com.yihu.jw.entity.care.device.DeviceSosLogDO;
import com.yihu.jw.entity.care.device.PatientSafeAreaDO;
import com.yihu.jw.exception.business.file_upload.*;
import com.yihu.jw.exception.business.file_upload.*;
import com.yihu.jw.patient.dao.BasePatientDao;
import com.yihu.jw.patient.dao.BasePatientDao;
import com.yihu.jw.restmodel.iot.common.UploadVO;
import com.yihu.jw.restmodel.iot.common.UploadVO;
@ -52,6 +54,8 @@ public class SecurityOrderUtil {
    private String fastdfs_file_url;
    private String fastdfs_file_url;
    @Autowired
    @Autowired
    private DeviceSosLogDao sosLogDao;
    private DeviceSosLogDao sosLogDao;
    @Autowired
    private PatientSafeAreaDao safeAreaDao;
    /***创建安防工单***/
    /***创建安防工单***/
    public JSONObject createSecurityOrder(String deviceSN, String sceneUrl, JSONObject result,JSONObject addressInfo, Integer orderSource, String dictCode, String topicItem, String warnInfo){
    public JSONObject createSecurityOrder(String deviceSN, String sceneUrl, JSONObject result,JSONObject addressInfo, Integer orderSource, String dictCode, String topicItem, String warnInfo){
@ -97,7 +101,12 @@ public class SecurityOrderUtil {
                }else{
                }else{
                    return new JSONObject();
                    return new JSONObject();
                }
                }
                if ("1".equals(dictCode)){//疑似离开安全区域 v1.5电子围栏为确认管理时触发
                    List<PatientSafeAreaDO> safeAreaDOS = safeAreaDao.findByPatient(patientDO.getId());
                    if (safeAreaDOS.size()==0){
                        return new JSONObject();
                    }
                }
                JSONObject jsonObject = new JSONObject();
                JSONObject jsonObject = new JSONObject();
                jsonObject.put("patient",patientDO.getId());
                jsonObject.put("patient",patientDO.getId());
                jsonObject.put("patientName",patientDO.getName());
                jsonObject.put("patientName",patientDO.getName());

+ 0 - 5
svr/svr-cloud-job/pom.xml

@ -38,11 +38,6 @@
        </dependency>
        </dependency>
        <!-- 支持Tomcat启动 -->
        <!-- 支持Tomcat启动 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
        <dependency>
            <groupId>org.json</groupId>
            <groupId>org.json</groupId>
            <artifactId>json</artifactId>
            <artifactId>json</artifactId>

+ 4 - 0
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/util/DeviceLostMessageUtil.java

@ -38,6 +38,10 @@ public class DeviceLostMessageUtil {
    public void deviceLostMessage(List<String> devices){
    public void deviceLostMessage(List<String> devices){
        List<SystemMessageDO> messageDOS = new ArrayList<>();
        List<SystemMessageDO> messageDOS = new ArrayList<>();
        for (String id:devices){
        for (String id:devices){
            List<SystemMessageDO> sendMessageBefore = systemMessageDao.queryByRelationCodeAndTypeIn(id,new String[]{"43"});
            if (sendMessageBefore.size()>0){//删除之前的离线消息
                systemMessageDao.delete(sendMessageBefore);
            }
            List<DevicePatientDevice> pds =  patientDeviceDao.findByDeviceSn(id);
            List<DevicePatientDevice> pds =  patientDeviceDao.findByDeviceSn(id);
            if (pds.size()>0){
            if (pds.size()>0){
                DevicePatientDevice deviceDO = pds.get(0);
                DevicePatientDevice deviceDO = pds.get(0);

+ 0 - 5
svr/svr-cloud-medicine/pom.xml

@ -41,11 +41,6 @@
            <artifactId>tomcat-embed-jasper</artifactId>
            <artifactId>tomcat-embed-jasper</artifactId>
        </dependency>
        </dependency>
        <!-- 支持Tomcat启动 -->
        <!-- 支持Tomcat启动 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
            <artifactId>spring-boot-starter-data-redis</artifactId>

+ 0 - 4
svr/svr-door-service/pom.xml

@ -42,10 +42,6 @@
        </dependency>
        </dependency>
        <!-- 支持Tomcat启动 -->
        <!-- 支持Tomcat启动 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>
            <artifactId>spring-cloud-starter-eureka</artifactId>

+ 0 - 4
svr/svr-healthy-house/pom.xml

@ -58,10 +58,6 @@
			<groupId>org.springframework.boot</groupId>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-logging</artifactId>
			<artifactId>spring-boot-starter-logging</artifactId>
		</dependency>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-actuator</artifactId>
		</dependency>
		<dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-eureka</artifactId>
			<artifactId>spring-cloud-starter-eureka</artifactId>

+ 0 - 4
svr/svr-internet-hospital-entrance/pom.xml

@ -42,10 +42,6 @@
        </dependency>
        </dependency>
        <!-- 支持Tomcat启动 -->
        <!-- 支持Tomcat启动 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <!--<dependency>-->
        <!--<dependency>-->
            <!--<groupId>org.springframework.cloud</groupId>-->
            <!--<groupId>org.springframework.cloud</groupId>-->
            <!--<artifactId>spring-cloud-starter-eureka</artifactId>-->
            <!--<artifactId>spring-cloud-starter-eureka</artifactId>-->

+ 0 - 5
svr/svr-internet-hospital-job/pom.xml

@ -41,11 +41,6 @@
            <artifactId>tomcat-embed-jasper</artifactId>
            <artifactId>tomcat-embed-jasper</artifactId>
        </dependency>
        </dependency>
        <!-- 支持Tomcat启动 -->
        <!-- 支持Tomcat启动 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
       <!-- <dependency>
       <!-- <dependency>
            <groupId>org.springframework.cloud</groupId>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>
            <artifactId>spring-cloud-starter-eureka</artifactId>

+ 0 - 5
svr/svr-internet-hospital/pom.xml

@ -41,11 +41,6 @@
            <artifactId>tomcat-embed-jasper</artifactId>
            <artifactId>tomcat-embed-jasper</artifactId>
        </dependency>
        </dependency>
        <!-- 支持Tomcat启动 -->
        <!-- 支持Tomcat启动 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
            <artifactId>spring-boot-starter-data-redis</artifactId>

+ 0 - 5
svr/svr-iot-job/pom.xml

@ -37,11 +37,6 @@
            <artifactId>tomcat-embed-jasper</artifactId>
            <artifactId>tomcat-embed-jasper</artifactId>
        </dependency>
        </dependency>
        <!-- 支持Tomcat启动 -->
        <!-- 支持Tomcat启动 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
       <!-- <dependency>
       <!-- <dependency>
            <groupId>org.springframework.cloud</groupId>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>
            <artifactId>spring-cloud-starter-eureka</artifactId>

+ 0 - 5
svr/svr-patient/pom.xml

@ -41,11 +41,6 @@
            <artifactId>tomcat-embed-jasper</artifactId>
            <artifactId>tomcat-embed-jasper</artifactId>
        </dependency>
        </dependency>
        <!-- 支持Tomcat启动 -->
        <!-- 支持Tomcat启动 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
            <artifactId>spring-boot-starter-data-redis</artifactId>

+ 0 - 4
svr/svr-rehabilitation/pom.xml

@ -38,10 +38,6 @@
			<artifactId>javax.servlet-api</artifactId>
			<artifactId>javax.servlet-api</artifactId>
			<scope>provided</scope>
			<scope>provided</scope>
		</dependency>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-actuator</artifactId>
		</dependency>
		<dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-eureka</artifactId>
			<artifactId>spring-cloud-starter-eureka</artifactId>

+ 0 - 13
svr/svr-statistics-es/src/main/java/com/yihu/wlyy/statistics/config/WebSecurityConfig.java

@ -22,19 +22,6 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
    protected void configure(HttpSecurity http) throws Exception {
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
        http.authorizeRequests()
                .antMatchers("/metrics/**").permitAll()
                .antMatchers("/health/**").permitAll()
                .antMatchers("/env/**").permitAll()
                .antMatchers("/dump/**").permitAll()
                .antMatchers("/trace/**").permitAll()
                .antMatchers("/mappings/**").permitAll()
                .antMatchers("/actuator/**").permitAll()
                .antMatchers("/beans/**").permitAll()
                .antMatchers("/configprops/**").permitAll()
                .antMatchers("/docs/**").permitAll()
                .antMatchers("/info/**").permitAll()
                .antMatchers("/configuration/**").permitAll()
                .antMatchers("/jolokia/**").permitAll()
                .antMatchers("/job/**").permitAll()
                .antMatchers("/job/**").permitAll()
                .anyRequest().authenticated()
                .anyRequest().authenticated()
                .and()
                .and()

+ 0 - 12
svr/svr-statistics/pom.xml

@ -311,18 +311,6 @@
            <groupId>org.springframework.boot</groupId>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot</artifactId>
            <artifactId>spring-boot</artifactId>
        </dependency>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-actuator-docs</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-actuator</artifactId>
        </dependency>
        <dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
            <artifactId>spring-boot-starter-aop</artifactId>

+ 0 - 13
svr/svr-statistics/src/main/java/com/yihu/jw/statistics/config/WebSecurityConfig.java

@ -22,19 +22,6 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
    protected void configure(HttpSecurity http) throws Exception {
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
        http.authorizeRequests()
                .antMatchers("/metrics/**").permitAll()
                .antMatchers("/health/**").permitAll()
                .antMatchers("/env/**").permitAll()
                .antMatchers("/dump/**").permitAll()
                .antMatchers("/trace/**").permitAll()
                .antMatchers("/mappings/**").permitAll()
                .antMatchers("/actuator/**").permitAll()
                .antMatchers("/beans/**").permitAll()
                .antMatchers("/configprops/**").permitAll()
                .antMatchers("/docs/**").permitAll()
                .antMatchers("/info/**").permitAll()
                .antMatchers("/configuration/**").permitAll()
                .antMatchers("/jolokia/**").permitAll()
                .anyRequest().authenticated()
                .anyRequest().authenticated()
                .and()
                .and()
                .csrf().disable()
                .csrf().disable()

+ 0 - 4
svr/svr-wlyy-archives/pom.xml

@ -71,10 +71,6 @@
            <groupId>org.springframework.boot</groupId>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-logging</artifactId>
            <artifactId>spring-boot-starter-logging</artifactId>
        </dependency>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>
            <artifactId>spring-cloud-starter-eureka</artifactId>

+ 0 - 5
svr/svr-wlyy-health-bank/pom.xml

@ -45,11 +45,6 @@
            <artifactId>tomcat-embed-jasper</artifactId>
            <artifactId>tomcat-embed-jasper</artifactId>
        </dependency>
        </dependency>
        <!-- 支持Tomcat启动 -->
        <!-- 支持Tomcat启动 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>
            <artifactId>spring-cloud-starter-eureka</artifactId>

+ 15 - 0
svr/svr-wlyy-health-bank/src/main/java/com/yihu/jw/config/jpa/WlyyHealthBankJpa.java

@ -1,8 +1,10 @@
package com.yihu.jw.config.jpa;
package com.yihu.jw.config.jpa;
import com.yihu.jw.filter.XssFiter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.context.annotation.Primary;
@ -55,4 +57,17 @@ public class WlyyHealthBankJpa {
            @Qualifier("wlyyHealthBankEntityManagerFactory") EntityManagerFactory builder) {
            @Qualifier("wlyyHealthBankEntityManagerFactory") EntityManagerFactory builder) {
        return new JpaTransactionManager(builder);
        return new JpaTransactionManager(builder);
    }
    }
    /**
     * xxs过滤
     */
    @Bean
    public FilterRegistrationBean testFilterRegistration2() {
        FilterRegistrationBean registration = new FilterRegistrationBean();
        registration.setFilter(new XssFiter());
        registration.addUrlPatterns("/*");
        registration.setName("XssFiter");
        registration.setOrder(2);
        return registration;
    }
}
}

+ 55 - 0
svr/svr-wlyy-health-bank/src/main/java/com/yihu/jw/filter/XssAndHttpServletRequestWrapper.java

@ -0,0 +1,55 @@
package com.yihu.jw.filter;
import com.yihu.jw.util.XssUtil;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
/**
 * Created by yeshijie on 2020/8/27.
 */
public class XssAndHttpServletRequestWrapper extends HttpServletRequestWrapper {
    HttpServletRequest request;
    public XssAndHttpServletRequestWrapper(HttpServletRequest request) {
        super(request);
        this.request = request;
    }
    @Override
    public String getParameter(String name) {
        String value = super.getParameter(name);
        // System.out.println("name:" + name + "," + value);
        if (value != null) {
            // 转换Html
            value = XssUtil.cleanXss(value);
        }
        return value;
    }
    @Override
    public String getHeader(String name) {
        return XssUtil.cleanXss(super.getHeader(name));
    }
    @Override
    public String getQueryString() {
        return XssUtil.cleanXss(super.getQueryString());
    }
    @Override
    public String[] getParameterValues(String parameter) {
        String[] values = super.getParameterValues(parameter);
        if (values == null) {
            return null;
        }
        int count = values.length;
        String[] encodedValues = new String[count];
        for (int i = 0; i < count; i++) {
            encodedValues[i] = XssUtil.cleanXss(values[i]);
        }
        return encodedValues;
    }
}

+ 25 - 0
svr/svr-wlyy-health-bank/src/main/java/com/yihu/jw/filter/XssFiter.java

@ -0,0 +1,25 @@
package com.yihu.jw.filter;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
/**
 * Created by yeshijie on 2020/8/27.
 */
public class XssFiter implements Filter {
    public void init(FilterConfig filterConfig) throws ServletException {
    }
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {
        HttpServletRequest req = (HttpServletRequest) request;
        XssAndHttpServletRequestWrapper xssRequestWrapper = new XssAndHttpServletRequestWrapper(req);
        chain.doFilter(xssRequestWrapper, response);
    }
    public void destroy() {
    }
}

+ 91 - 0
svr/svr-wlyy-health-bank/src/main/java/com/yihu/jw/util/XssUtil.java

@ -0,0 +1,91 @@
package com.yihu.jw.util;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
 * Created by yeshijie on 2020/8/27.
 */
public class XssUtil {
    private static final String REGEX_SCRIPT = "<script[^>]*?>[\\s\\S]*?<\\/script>"; // 定义script的正则表达式
    private static final String REGEX_STYLE = "<style[^>]*?>[\\s\\S]*?<\\/style>"; // 定义style的正则表达式
    private static final String REGEX_HTML = "<[^>]+>"; // 定义HTML标签的正则表达式
    // private static final String REGEX_SPACE = "\\s*|\t|\r|\n";// 定义空格回车换行符
    /**
     * 过滤掉script标签
     *
     * @param htmlStr
     * @return
     */
    public static String delScriptTag(String htmlStr) {
        if (htmlStr == null)
            return null;
        Pattern p_script = Pattern.compile(REGEX_SCRIPT, Pattern.CASE_INSENSITIVE);
        Matcher m_script = p_script.matcher(htmlStr);
        htmlStr = m_script.replaceAll(""); // 过滤script标签
        return htmlStr;
    }
    /**
     * 过滤掉style标签
     *
     * @param htmlStr
     * @return
     */
    public static String delStyleTag(String htmlStr) {
        if (htmlStr == null)
            return null;
        Pattern p_style = Pattern.compile(REGEX_STYLE, Pattern.CASE_INSENSITIVE);
        Matcher m_style = p_style.matcher(htmlStr);
        htmlStr = m_style.replaceAll(""); // 过滤style标签*/
        return htmlStr;
    }
    /**
     * @param htmlStr
     * @return 删除Html标签
     */
    public static String delHTMLTag(String htmlStr) {
        if (htmlStr == null)
            return null;
        Pattern p_html = Pattern.compile(REGEX_HTML, Pattern.CASE_INSENSITIVE);
        Matcher m_html = p_html.matcher(htmlStr);
        htmlStr = m_html.replaceAll(""); // 过滤html标签
        return htmlStr; // 返回文本字符串
    }
    /**
     * 将html标签中的<>进行转义,如只有"<"或者">"则不进行转义
     */
    public static String escapeHtml(String htmlStr) {
        if (htmlStr == null)
            return null;
        Pattern p_script = Pattern.compile(REGEX_HTML, Pattern.CASE_INSENSITIVE);
        Matcher m_script = p_script.matcher(htmlStr);
        while (m_script.find()) {
            String str = m_script.group();
            String str_target = str.replaceAll("<", "&lt;").replaceAll(">", "&gt;");
            htmlStr = htmlStr.replaceAll(str, str_target);
        }
        return htmlStr;
    }
    /**
     * 转义html标签
     *
     * @param input
     * @return
     */
    public static String cleanXss(String input) {
        if (input == null)
            return null;
        return escapeHtml(delStyleTag(delScriptTag(input)));
    }
    public static void main(String[] args) {
        System.out.println(cleanXss("<'script>"));
    }
}

+ 0 - 4
svr/svr-wlyy-specialist/pom.xml

@ -42,10 +42,6 @@
        </dependency>
        </dependency>
        <!-- 支持Tomcat启动 -->
        <!-- 支持Tomcat启动 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>
            <artifactId>spring-cloud-starter-eureka</artifactId>

+ 15 - 0
svr/svr-wlyy-specialist/src/main/java/com/yihu/jw/config/jpa/WlyySpecialistJpa.java

@ -1,8 +1,10 @@
package com.yihu.jw.config.jpa;
package com.yihu.jw.config.jpa;
import com.yihu.jw.filter.XssFiter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.context.annotation.Primary;
@ -55,4 +57,17 @@ public class WlyySpecialistJpa {
            @Qualifier("wlyySpecialistEntityManagerFactory") EntityManagerFactory builder) {
            @Qualifier("wlyySpecialistEntityManagerFactory") EntityManagerFactory builder) {
        return new JpaTransactionManager(builder);
        return new JpaTransactionManager(builder);
    }
    }
    /**
     * xxs过滤
     */
    @Bean
    public FilterRegistrationBean testFilterRegistration2() {
        FilterRegistrationBean registration = new FilterRegistrationBean();
        registration.setFilter(new XssFiter());
        registration.addUrlPatterns("/*");
        registration.setName("XssFiter");
        registration.setOrder(2);
        return registration;
    }
}
}

+ 55 - 0
svr/svr-wlyy-specialist/src/main/java/com/yihu/jw/filter/XssAndHttpServletRequestWrapper.java

@ -0,0 +1,55 @@
package com.yihu.jw.filter;
import com.yihu.jw.util.XssUtil;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
/**
 * Created by yeshijie on 2020/8/27.
 */
public class XssAndHttpServletRequestWrapper extends HttpServletRequestWrapper {
    HttpServletRequest request;
    public XssAndHttpServletRequestWrapper(HttpServletRequest request) {
        super(request);
        this.request = request;
    }
    @Override
    public String getParameter(String name) {
        String value = super.getParameter(name);
        // System.out.println("name:" + name + "," + value);
        if (value != null) {
            // 转换Html
            value = XssUtil.cleanXss(value);
        }
        return value;
    }
    @Override
    public String getHeader(String name) {
        return XssUtil.cleanXss(super.getHeader(name));
    }
    @Override
    public String getQueryString() {
        return XssUtil.cleanXss(super.getQueryString());
    }
    @Override
    public String[] getParameterValues(String parameter) {
        String[] values = super.getParameterValues(parameter);
        if (values == null) {
            return null;
        }
        int count = values.length;
        String[] encodedValues = new String[count];
        for (int i = 0; i < count; i++) {
            encodedValues[i] = XssUtil.cleanXss(values[i]);
        }
        return encodedValues;
    }
}

+ 25 - 0
svr/svr-wlyy-specialist/src/main/java/com/yihu/jw/filter/XssFiter.java

@ -0,0 +1,25 @@
package com.yihu.jw.filter;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
/**
 * Created by yeshijie on 2020/8/27.
 */
public class XssFiter implements Filter {
    public void init(FilterConfig filterConfig) throws ServletException {
    }
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {
        HttpServletRequest req = (HttpServletRequest) request;
        XssAndHttpServletRequestWrapper xssRequestWrapper = new XssAndHttpServletRequestWrapper(req);
        chain.doFilter(xssRequestWrapper, response);
    }
    public void destroy() {
    }
}

+ 91 - 0
svr/svr-wlyy-specialist/src/main/java/com/yihu/jw/util/XssUtil.java

@ -0,0 +1,91 @@
package com.yihu.jw.util;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
 * Created by yeshijie on 2020/8/27.
 */
public class XssUtil {
    private static final String REGEX_SCRIPT = "<script[^>]*?>[\\s\\S]*?<\\/script>"; // 定义script的正则表达式
    private static final String REGEX_STYLE = "<style[^>]*?>[\\s\\S]*?<\\/style>"; // 定义style的正则表达式
    private static final String REGEX_HTML = "<[^>]+>"; // 定义HTML标签的正则表达式
    // private static final String REGEX_SPACE = "\\s*|\t|\r|\n";// 定义空格回车换行符
    /**
     * 过滤掉script标签
     *
     * @param htmlStr
     * @return
     */
    public static String delScriptTag(String htmlStr) {
        if (htmlStr == null)
            return null;
        Pattern p_script = Pattern.compile(REGEX_SCRIPT, Pattern.CASE_INSENSITIVE);
        Matcher m_script = p_script.matcher(htmlStr);
        htmlStr = m_script.replaceAll(""); // 过滤script标签
        return htmlStr;
    }
    /**
     * 过滤掉style标签
     *
     * @param htmlStr
     * @return
     */
    public static String delStyleTag(String htmlStr) {
        if (htmlStr == null)
            return null;
        Pattern p_style = Pattern.compile(REGEX_STYLE, Pattern.CASE_INSENSITIVE);
        Matcher m_style = p_style.matcher(htmlStr);
        htmlStr = m_style.replaceAll(""); // 过滤style标签*/
        return htmlStr;
    }
    /**
     * @param htmlStr
     * @return 删除Html标签
     */
    public static String delHTMLTag(String htmlStr) {
        if (htmlStr == null)
            return null;
        Pattern p_html = Pattern.compile(REGEX_HTML, Pattern.CASE_INSENSITIVE);
        Matcher m_html = p_html.matcher(htmlStr);
        htmlStr = m_html.replaceAll(""); // 过滤html标签
        return htmlStr; // 返回文本字符串
    }
    /**
     * 将html标签中的<>进行转义,如只有"<"或者">"则不进行转义
     */
    public static String escapeHtml(String htmlStr) {
        if (htmlStr == null)
            return null;
        Pattern p_script = Pattern.compile(REGEX_HTML, Pattern.CASE_INSENSITIVE);
        Matcher m_script = p_script.matcher(htmlStr);
        while (m_script.find()) {
            String str = m_script.group();
            String str_target = str.replaceAll("<", "&lt;").replaceAll(">", "&gt;");
            htmlStr = htmlStr.replaceAll(str, str_target);
        }
        return htmlStr;
    }
    /**
     * 转义html标签
     *
     * @param input
     * @return
     */
    public static String cleanXss(String input) {
        if (input == null)
            return null;
        return escapeHtml(delStyleTag(delScriptTag(input)));
    }
    public static void main(String[] args) {
        System.out.println(cleanXss("<'script>"));
    }
}

+ 0 - 4
svr/svr-wlyy/pom.xml

@ -59,10 +59,6 @@
            <groupId>org.springframework.boot</groupId>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-logging</artifactId>
            <artifactId>spring-boot-starter-logging</artifactId>
        </dependency>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>
            <artifactId>spring-cloud-starter-eureka</artifactId>