瀏覽代碼

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

wangzhinan 3 年之前
父節點
當前提交
5b089c6e48
共有 72 個文件被更改,包括 4624 次插入630 次删除
  1. 9 0
      business/base-service/src/main/java/com/yihu/jw/thirdUpload/BaseNsOlineMedDao.java
  2. 10 0
      business/base-service/src/main/java/com/yihu/jw/thirdUpload/BaseNsOnlineAskDao.java
  3. 9 0
      business/base-service/src/main/java/com/yihu/jw/thirdUpload/BaseNsPrescriptionDao.java
  4. 9 0
      business/base-service/src/main/java/com/yihu/jw/thirdUpload/BaseNsPrescriptionDrugDao.java
  5. 39 0
      business/base-service/src/main/java/com/yihu/jw/thirdUpload/service/BaseNsOlineMedService.java
  6. 49 0
      business/base-service/src/main/java/com/yihu/jw/thirdUpload/service/BaseNsOnlineAskService.java
  7. 46 0
      business/base-service/src/main/java/com/yihu/jw/thirdUpload/service/BaseNsPrescriptionAService.java
  8. 41 0
      business/base-service/src/main/java/com/yihu/jw/thirdUpload/service/BaseNsPrescriptionDrugService.java
  9. 29 0
      common/common-entity/sql记录
  10. 10 0
      common/common-entity/src/main/java/com/yihu/jw/entity/base/patient/BasePatientDO.java
  11. 1 1
      common/common-entity/src/main/java/com/yihu/jw/entity/care/assistance/EmergencyAssistanceDO.java
  12. 10 1
      common/common-entity/src/main/java/com/yihu/jw/entity/care/contacts/PatientSosContactsDO.java
  13. 1 1
      common/common-entity/src/main/java/com/yihu/jw/entity/care/device/DevicePatientDevice.java
  14. 66 0
      common/common-entity/src/main/java/com/yihu/jw/entity/care/device/PatientSafeAreaDO.java
  15. 1 1
      common/common-entity/src/main/java/com/yihu/jw/entity/care/securitymonitoring/SecurityMonitoringOrderDO.java
  16. 92 0
      common/common-entity/src/main/java/com/yihu/jw/entity/door/BaseAdminServiceDynamic.java
  17. 337 0
      common/common-entity/src/main/java/com/yihu/jw/entity/thirdUpload/BaseNsOnlineAskDO.java
  18. 377 0
      common/common-entity/src/main/java/com/yihu/jw/entity/thirdUpload/BaseNsOnlineMedDO.java
  19. 435 0
      common/common-entity/src/main/java/com/yihu/jw/entity/thirdUpload/BaseNsPrescriptionDO.java
  20. 265 0
      common/common-entity/src/main/java/com/yihu/jw/entity/thirdUpload/BaseNsPrescriptionDrugDO.java
  21. 65 0
      common/common-request-mapping/src/main/java/com/yihu/jw/rm/regulatory/BaseRegulatoryRequestMapping.java
  22. 23 1
      common/common-util/src/main/java/com/yihu/jw/util/common/GpsUtil.java
  23. 43 0
      common/common-util/src/main/java/com/yihu/jw/util/common/LatitudeUtils.java
  24. 6 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/dao/contacts/PatientSosContactsDao.java
  25. 20 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/dao/device/BaseYxDeviceIndexDao.java
  26. 2 1
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/dao/device/DevicePatientHealthIndexDao.java
  27. 21 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/dao/device/PatientSafeAreaDao.java
  28. 15 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/dao/lifeCare/BaseAdminServiceDynamicDao.java
  29. 147 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/admin/AdminDoorCoachOrderController.java
  30. 1 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/device/DoctorDeviceController.java
  31. 38 1
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/device/PadDeviceController.java
  32. 14 12
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/device/PatientDeviceController.java
  33. 1 1
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/security/SecurityMonitoringOrderEndpoint.java
  34. 61 4
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/statistics/DetectionPlatformEndpoint.java
  35. 11 9
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/third/device/PDeviceController.java
  36. 32 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/admin/AdminDoorCoachOrderService.java
  37. 45 16
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/assistance/EmergencyAssistanceService.java
  38. 85 1
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/contacts/ContactsService.java
  39. 390 126
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/device/PatientDeviceService.java
  40. 1 1
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/device/PatientHealthIndexService.java
  41. 71 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/device/YunXunDeviceService.java
  42. 50 1
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/doorCoach/DoctorDoorCoachOrderService.java
  43. 20 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/doorCoach/PatientDoorCoachOrderService.java
  44. 57 7
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/lifeCare/LifeCareOrderService.java
  45. 9 1
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/message/BaseServiceNewsService.java
  46. 59 22
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/patient/CarePatientService.java
  47. 194 57
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/security/SecurityMonitoringOrderService.java
  48. 8 25
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/sign/ServicePackageService.java
  49. 46 9
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/statistics/DetectionPlatformService.java
  50. 119 60
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/statistics/StatisticsService.java
  51. 4 0
      svr/svr-cloud-device/src/main/java/com/yihu/jw/care/config/YsConfig.java
  52. 1 0
      svr/svr-cloud-device/src/main/java/com/yihu/jw/care/dao/device/BasePatientOutBedDao.java
  53. 21 0
      svr/svr-cloud-device/src/main/java/com/yihu/jw/care/dao/device/PatientSafeAreaDao.java
  54. 30 20
      svr/svr-cloud-device/src/main/java/com/yihu/jw/care/endpoint/DeviceController.java
  55. 15 0
      svr/svr-cloud-device/src/main/java/com/yihu/jw/care/endpoint/YsDeviceController.java
  56. 60 64
      svr/svr-cloud-device/src/main/java/com/yihu/jw/care/service/DeviceService.java
  57. 176 28
      svr/svr-cloud-device/src/main/java/com/yihu/jw/care/service/DeviceUploadService.java
  58. 4 3
      svr/svr-cloud-device/src/main/java/com/yihu/jw/care/service/HvDeviceService.java
  59. 135 108
      svr/svr-cloud-device/src/main/java/com/yihu/jw/care/service/YsDeviceService.java
  60. 84 0
      svr/svr-cloud-device/src/main/java/com/yihu/jw/care/util/CountDistance.java
  61. 204 0
      svr/svr-cloud-device/src/main/java/com/yihu/jw/care/util/SecurityOrderUtil.java
  62. 2 2
      svr/svr-cloud-device/src/main/resources/application.yml
  63. 10 0
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/event/ApplicationEvent.java
  64. 31 0
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/job/BirthdayReminderJob.java
  65. 62 21
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/job/device/PatientSosContactsJob.java
  66. 71 0
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/job/device/YunXunDeviceService.java
  67. 1 0
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/job/message/DoctorSendUnreadJob.java
  68. 57 0
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/service/BirthdayReminderService.java
  69. 29 2
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/web/JobController.java
  70. 3 0
      svr/svr-cloud-job/src/main/resources/system.properties
  71. 133 22
      svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/thirdUpload/ThirdUploadEndpoint.java
  72. 1 1
      svr/svr-iot/src/main/java/com/yihu/iot/service/monitorPlatform/MonitorPlatformService.java

+ 9 - 0
business/base-service/src/main/java/com/yihu/jw/thirdUpload/BaseNsOlineMedDao.java

@ -0,0 +1,9 @@
package com.yihu.jw.thirdUpload;
import com.yihu.jw.entity.thirdUpload.BaseNsOnlineMedDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
public interface BaseNsOlineMedDao extends PagingAndSortingRepository<BaseNsOnlineMedDO,String>, JpaSpecificationExecutor<BaseNsOnlineMedDO> {
}

+ 10 - 0
business/base-service/src/main/java/com/yihu/jw/thirdUpload/BaseNsOnlineAskDao.java

@ -0,0 +1,10 @@
package com.yihu.jw.thirdUpload;
import com.yihu.jw.entity.thirdUpload.BaseNsOnlineAskDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
public interface BaseNsOnlineAskDao extends PagingAndSortingRepository<BaseNsOnlineAskDO, String>, JpaSpecificationExecutor<BaseNsOnlineAskDO> {
    //待写查询
}

+ 9 - 0
business/base-service/src/main/java/com/yihu/jw/thirdUpload/BaseNsPrescriptionDao.java

@ -0,0 +1,9 @@
package com.yihu.jw.thirdUpload;
import com.yihu.jw.entity.thirdUpload.BaseNsOnlineAskDO;
import com.yihu.jw.entity.thirdUpload.BaseNsPrescriptionDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
public interface BaseNsPrescriptionDao extends PagingAndSortingRepository<BaseNsPrescriptionDO, String>, JpaSpecificationExecutor<BaseNsPrescriptionDO> {
}

+ 9 - 0
business/base-service/src/main/java/com/yihu/jw/thirdUpload/BaseNsPrescriptionDrugDao.java

@ -0,0 +1,9 @@
package com.yihu.jw.thirdUpload;
import com.yihu.jw.entity.thirdUpload.BaseNsOnlineAskDO;
import com.yihu.jw.entity.thirdUpload.BaseNsPrescriptionDrugDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
public interface BaseNsPrescriptionDrugDao extends PagingAndSortingRepository<BaseNsPrescriptionDrugDO, String>, JpaSpecificationExecutor<BaseNsPrescriptionDrugDO> {
}

+ 39 - 0
business/base-service/src/main/java/com/yihu/jw/thirdUpload/service/BaseNsOlineMedService.java

@ -0,0 +1,39 @@
package com.yihu.jw.thirdUpload.service;
import com.yihu.jw.entity.thirdUpload.BaseNsOnlineMedDO;
import com.yihu.jw.thirdUpload.BaseNsOlineMedDao;
import com.yihu.mysql.query.BaseJpaService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import static com.yihu.jw.util.common.BeanUtils.getNullPropertyNames;
@Service
public class BaseNsOlineMedService extends BaseJpaService<BaseNsOnlineMedDO, BaseNsOlineMedDao> {
    @Autowired
    private BaseNsOlineMedDao baseNsOlineMedDao;
    public void saveNsOnlinemed(List<BaseNsOnlineMedDO> baseNsOnlineMedDOList)throws Exception{
        for (BaseNsOnlineMedDO baseNsOlineMedDO : baseNsOnlineMedDOList){
            if(StringUtils.isNoneBlank(baseNsOlineMedDO.getId())){
                BaseNsOnlineMedDO old = baseNsOlineMedDao.findOne(baseNsOlineMedDO.getId());
                BeanUtils.copyProperties(baseNsOlineMedDO,old,getNullPropertyNames(baseNsOlineMedDO));
                baseNsOlineMedDao.save(old);
            }else{
                baseNsOlineMedDao.save(baseNsOlineMedDO);
            }
        }
    }
    public void deleteById(String id) {
        BaseNsOnlineMedDO baseNsOnlineMedDO = baseNsOlineMedDao.findOne(id);
        if(baseNsOnlineMedDO != null){
            baseNsOlineMedDao.delete(id);
        }
    }
}

+ 49 - 0
business/base-service/src/main/java/com/yihu/jw/thirdUpload/service/BaseNsOnlineAskService.java

@ -0,0 +1,49 @@
package com.yihu.jw.thirdUpload.service;
import com.yihu.jw.entity.thirdUpload.BaseNsOnlineAskDO;
import com.yihu.jw.thirdUpload.BaseNsOnlineAskDao;
import com.yihu.mysql.query.BaseJpaService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
import static com.yihu.jw.util.common.BeanUtils.getNullPropertyNames;
@Service
public class BaseNsOnlineAskService extends BaseJpaService<BaseNsOnlineAskDO, BaseNsOnlineAskDao> {
    @Autowired
    private BaseNsOnlineAskDao baseNsOnlineAskDao;
    public void saveNsOlineAsk(List<BaseNsOnlineAskDO> baseNsOnlineAskDOS) throws Exception{
        for (BaseNsOnlineAskDO baseNsOnlineAskDO : baseNsOnlineAskDOS){
            if (StringUtils.isNotBlank(baseNsOnlineAskDO.getId())){
                BaseNsOnlineAskDO old = baseNsOnlineAskDao.findOne(baseNsOnlineAskDO.getId());
                BeanUtils.copyProperties(baseNsOnlineAskDO, old, getNullPropertyNames(baseNsOnlineAskDO));
                //待完善
                baseNsOnlineAskDao.save(old);
            }else{
//                baseNsOnlineAskDO.setCreateTime(new Date());
//                baseNsOnlineAskDO.setUpload("1");
                baseNsOnlineAskDao.save(baseNsOnlineAskDO);
            }
        }
    }
    public void deleteById(String id){
        BaseNsOnlineAskDO baseNsOnlineAskDO =  baseNsOnlineAskDao.findOne(id);
        if (baseNsOnlineAskDO != null){
            baseNsOnlineAskDao.delete(id);
            //baseNsOnlineAskDO.setIs_del("0");
            //baseNsOnlineAskDO.save(baseNsOnlineAskDO);
        }
    }
}

+ 46 - 0
business/base-service/src/main/java/com/yihu/jw/thirdUpload/service/BaseNsPrescriptionAService.java

@ -0,0 +1,46 @@
package com.yihu.jw.thirdUpload.service;
import com.yihu.jw.entity.thirdUpload.BaseNsPrescriptionDO;
import com.yihu.jw.entity.thirdUpload.BaseNsPrescriptionDrugDO;
import com.yihu.jw.thirdUpload.BaseNsPrescriptionDao;
import com.yihu.jw.thirdUpload.BaseNsPrescriptionDrugDao;
import com.yihu.mysql.query.BaseJpaService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import static com.yihu.jw.util.common.BeanUtils.getNullPropertyNames;
@Service
public class BaseNsPrescriptionAService extends BaseJpaService<BaseNsPrescriptionDO, BaseNsPrescriptionDao> {
    @Autowired
    private BaseNsPrescriptionDao baseNsPrescriptionDao;
    public void savePrescription(List<BaseNsPrescriptionDO> baseNsPrescriptionDOS) throws Exception{
        for (BaseNsPrescriptionDO baseNsPrescriptionDO : baseNsPrescriptionDOS){
            if (StringUtils.isNoneBlank(baseNsPrescriptionDO.getId())){
                BaseNsPrescriptionDO old = baseNsPrescriptionDao.findOne(baseNsPrescriptionDO.getId());
                BeanUtils.copyProperties(baseNsPrescriptionDO, old, getNullPropertyNames(baseNsPrescriptionDO));
                baseNsPrescriptionDao.save(old);
            }else {
                baseNsPrescriptionDao.save(baseNsPrescriptionDO);
            }
        }
    }
    public void deleteById(String id) {
        BaseNsPrescriptionDO baseNsPrescriptionDO = baseNsPrescriptionDao.findOne(id);
        if (baseNsPrescriptionDO != null){
            baseNsPrescriptionDao.delete(id);
        }
    }
}

+ 41 - 0
business/base-service/src/main/java/com/yihu/jw/thirdUpload/service/BaseNsPrescriptionDrugService.java

@ -0,0 +1,41 @@
package com.yihu.jw.thirdUpload.service;
import com.yihu.jw.entity.thirdUpload.BaseNsPrescriptionDrugDO;
import com.yihu.jw.thirdUpload.BaseNsPrescriptionDrugDao;
import com.yihu.mysql.query.BaseJpaService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import static com.yihu.jw.util.common.BeanUtils.getNullPropertyNames;
@Service
public class BaseNsPrescriptionDrugService extends BaseJpaService<BaseNsPrescriptionDrugDO, BaseNsPrescriptionDrugDao> {
    @Autowired
    private BaseNsPrescriptionDrugDao baseNsPrescriptionDrugDao;
    public void savePrescriptionDrug(List<BaseNsPrescriptionDrugDO> baseNsPrescriptionDrugDOS) throws Exception{
        for (BaseNsPrescriptionDrugDO baseNsPrescriptionDrugDO : baseNsPrescriptionDrugDOS){
            if (StringUtils.isNoneBlank(baseNsPrescriptionDrugDO.getId())){
                BaseNsPrescriptionDrugDO old = baseNsPrescriptionDrugDao.findOne(baseNsPrescriptionDrugDO.getId());
                BeanUtils.copyProperties(baseNsPrescriptionDrugDO, old, getNullPropertyNames(baseNsPrescriptionDrugDO));
                baseNsPrescriptionDrugDao.save(old);
            }else {
                baseNsPrescriptionDrugDao.save(baseNsPrescriptionDrugDO);
            }
        }
    }
    public void deleteById(String id) {
        BaseNsPrescriptionDrugDO baseNsPrescriptionDrugDO = baseNsPrescriptionDrugDao.findOne(id);
        if (baseNsPrescriptionDrugDO != null){
            baseNsPrescriptionDrugDao.delete(id);
        }
    }
}

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

@ -1387,4 +1387,33 @@ CREATE TABLE `base_yxdevice_index` (
  `create_time` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='云芯拐杖设备上传记录';
-- 20210828
ALTER table base_patient_sos_contacts add column update_info VARCHAR(1000) default null comment '同步信息 1成功,-1失败'
-- 20210828
alter table base_patient add `sign_status` tinyint(1) DEFAULT NULL COMMENT '签约状态 1已签约 0未签约';
-- 20210831 已执行
CREATE TABLE `base_admin_service_dynamic` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键id',
  `patient` varchar(255) DEFAULT NULL COMMENT '居民code',
  `name` varchar(50) DEFAULT NULL COMMENT '居民姓名',
  `type` int(1) DEFAULT NULL COMMENT '1上门辅导   2生活照料',
  `number` varchar(20) DEFAULT NULL COMMENT '工单编号',
  `value` varchar(255) DEFAULT NULL COMMENT '操作',
  `doctor` varchar(255) DEFAULT NULL COMMENT '接单医生code',
  `doctor_name` varchar(255) DEFAULT NULL COMMENT '接单医生',
  `create_time` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='调度分析,管理员调度实时动态';
--20210831
CREATE TABLE `wlyy_patient_safe_area` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `patient` varchar(50) DEFAULT NULL COMMENT '居民id',
  `safe_area_gz` varchar(255) DEFAULT NULL COMMENT '围栏地址5个坐标组成封闭区域 a>b>c>d>a',
  `create_time` timestamp NULL DEFAULT NULL COMMENT '创建日期',
  `update_time` timestamp NULL DEFAULT NULL COMMENT '更新日期',
  `success_flag` tinyint(4) DEFAULT NULL COMMENT '是否同步至设备 -1失败 1成功',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COMMENT='患者设备安全区域';

+ 10 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/base/patient/BasePatientDO.java

@ -282,6 +282,7 @@ public class BasePatientDO extends UuidIdentityEntityWithOperator {
    private String latLon;//定位经纬度
    private String padImei;//绑定平板标志
    private String residentialArea;//居住小区
    private Integer signStatus;// 签约状态【0未签约,1已签约】
    private Integer deviceFlag;//绑定设备标识 大于0为绑定了设备
@ -872,6 +873,15 @@ public class BasePatientDO extends UuidIdentityEntityWithOperator {
        this.residentialArea = residentialArea;
    }
    @Column(name = "sign_status")
    public Integer getSignStatus() {
        return signStatus;
    }
    public void setSignStatus(Integer signStatus) {
        this.signStatus = signStatus;
    }
    @Transient
    public Integer getDeviceFlag() {
        return deviceFlag;

+ 1 - 1
common/common-entity/src/main/java/com/yihu/jw/entity/care/assistance/EmergencyAssistanceDO.java

@ -67,7 +67,7 @@ public class EmergencyAssistanceDO extends UuidIdentityEntityWithOperator {
    private Date completeTime;//完成时间
    private String teamCode;
    private Integer type; //发起类型(1本人发起 2家人待预约 3医生代预约)
    private Integer orderSource;//工单发起来源状态 1APP 2手环 3居家报警
    private Integer orderSource;//工单发起来源状态 1APP 2手环 3居家报警,4拐杖发起
    private Integer emergencyCancel;// 紧急预警工单误报警原因 字典emergency_cancel
    private String deviceSn;//设备sn  设备触发是才有该字段值

+ 10 - 1
common/common-entity/src/main/java/com/yihu/jw/entity/care/contacts/PatientSosContactsDO.java

@ -21,9 +21,10 @@ public class PatientSosContactsDO extends IdEntity {
    private String sosPhone; //联系电话
    private Integer relation; //与联系人关系 同base_patient_family_member
    private Date updateTime; //修改日期
    private Integer successFlag;//联系人是否同步成功 -2删除失败 -1添加失败 0待同步 1添加成功 2删除成功
    private Integer successFlag;//联系人是否同步成功 -1失败 0待同步 1成功
    private Integer del;
    private Integer phoneSeqid;// 联系人序号 1 或2
    private String updateInfo;//同步信息 -1失败 1成功
    private String relationName;
@ -100,4 +101,12 @@ public class PatientSosContactsDO extends IdEntity {
    public void setPhoneSeqid(Integer phoneSeqid) {
        this.phoneSeqid = phoneSeqid;
    }
    public String getUpdateInfo() {
        return updateInfo;
    }
    public void setUpdateInfo(String updateInfo) {
        this.updateInfo = updateInfo;
    }
}

+ 1 - 1
common/common-entity/src/main/java/com/yihu/jw/entity/care/device/DevicePatientDevice.java

@ -21,7 +21,7 @@ public class DevicePatientDevice extends IdEntity {
    private String deviceName;
    // 用户code
    private String user;
    // 设备类型标识 1血糖仪,2.血压计,3药盒,4智能手表,7 = 居家报警器,12 监控器 13 睡眠带 14气感报警器 15烟感报警器
    // 设备类型标识 1血糖仪,2.血压计,3药盒,4智能手表,7 = 居家报警器,12 监控器 13 睡眠带 14气感报警器 15烟感报警器 16拐杖 17随身wifi
    private String categoryCode;
    // 用户类型标准 -1代表单用户
    private String userType;

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

@ -0,0 +1,66 @@
package com.yihu.jw.entity.care.device;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yihu.jw.entity.IdEntity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.util.Date;
/**
 * Created by Bing on 2021/8/31.
 */
@Entity
@Table(name="wlyy_patient_safe_area")
public class PatientSafeAreaDO extends IdEntity {
    private String patient;
    private String safeAreaGz;
    private Integer successFlag; //围栏同步至设备 -1失败 1成功
    private Date createTime;
    private Date updateTime;
    public String getPatient() {
        return patient;
    }
    public void setPatient(String patient) {
        this.patient = patient;
    }
    @Column(name="safe_area_gz")
    public String getSafeAreaGz() {
        return safeAreaGz;
    }
    public void setSafeAreaGz(String safeAreaGz) {
        this.safeAreaGz = safeAreaGz;
    }
    public Integer getSuccessFlag() {
        return successFlag;
    }
    public void setSuccessFlag(Integer successFlag) {
        this.successFlag = successFlag;
    }
    @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;
    }
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    public Date getUpdateTime() {
        return updateTime;
    }
    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }
}

+ 1 - 1
common/common-entity/src/main/java/com/yihu/jw/entity/care/securitymonitoring/SecurityMonitoringOrderDO.java

@ -318,7 +318,7 @@ public class SecurityMonitoringOrderDO extends UuidIdentityEntityWithOperator {
    private String serviceStatus;//服务类型 1-预约项目 2-即时项目
    private String orderInfo;//工单详情 0-未推送 1-未确认 2-已确认
    private String doctorConfirmFinishImg;
    private Integer orderSource;//工单发起来源状态 1APP 2手环 3居家报警 4监控器发起 5睡眠带 6气感报警器 7 烟感报警器
    private Integer orderSource;//工单发起来源状态 1APP 2手环 3居家报警 4监控器发起 5睡眠带 6气感报警器 7 烟感报警器 8拐杖发起
    private Integer emergencyCancel;// 紧急预警工单误报警原因 字典emergency_cancel
    private String topicItem;//安防工单所属专题 base_system_dict_entry表service_item
    private String sceneImg;//现场照片

+ 92 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/door/BaseAdminServiceDynamic.java

@ -0,0 +1,92 @@
package com.yihu.jw.entity.door;
/***
 * @ClassName: BaseAdminServiceDynamic
 * @Description:
 * @Auther: shi kejing
 * @Date: 2021/8/31 15:24
 */
import com.yihu.jw.entity.iot.gateway.IdEntity;
import javax.persistence.Entity;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
@Entity
@Table(name = "base_admin_service_dynamic")
@SequenceGenerator(name="id_generated", sequenceName="base_admin_service_dynamic")
public class BaseAdminServiceDynamic extends IdEntity {
    private String patient;
    private String name;
    private Integer type;  //1上门辅导   2生活照料
    private String number;
    private String value;
    private String createTime;
    private String doctor;
    private String doctorName;
    public String getPatient() {
        return patient;
    }
    public void setPatient(String patient) {
        this.patient = patient;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getType() {
        return type;
    }
    public void setType(Integer type) {
        this.type = type;
    }
    public String getNumber() {
        return number;
    }
    public void setNumber(String number) {
        this.number = number;
    }
    public String getValue() {
        return value;
    }
    public void setValue(String value) {
        this.value = value;
    }
    public String getCreateTime() {
        return createTime;
    }
    public void setCreateTime(String createTime) {
        this.createTime = createTime;
    }
    public String getDoctor() {
        return doctor;
    }
    public void setDoctor(String doctor) {
        this.doctor = doctor;
    }
    public String getDoctorName() {
        return doctorName;
    }
    public void setDoctorName(String doctorName) {
        this.doctorName = doctorName;
    }
}

+ 337 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/thirdUpload/BaseNsOnlineAskDO.java

@ -0,0 +1,337 @@
package com.yihu.jw.entity.thirdUpload;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.yihu.jw.entity.UuidIdentityEntity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.util.Date;
/**
 * Created by wsy on 2021/8/31.
 */
@Entity
@Table(name = "base_ns_online_ask")
public class BaseNsOnlineAskDO extends UuidIdentityEntity {
    /*网络咨询服务信息表*/
    private String idOnlineAsk;     //网络咨询记录唯一标识
    private String netServiceCode;  //互联网医疗服务类型
    private String medClassCode;    //咨询类别
    private String medPopCode;      //咨询属性
    private String orgName;         //医疗机构名称
    private String orgCode;         //医疗机构编码
    private String cdOrgSub;        //医疗机构单位隶属
    private String cdArea;          //医疗机构地区
    private String visitDocName;    //医师姓名
    private String visitDocIdNo;    //医师身份证号
    private String visitDocCode;    //医师唯一标识
    private String visitDeptCode;   //咨询医师所属专业代码
    private String visitDeptName;   //咨询医师所属专业名称
    private String ptNo;             //患者姓名
    private String ptAge;            //患者年龄
    private String costType;         //患者费别
    private String ptBirthdate;     //出生日期
    private String geCode;           //患者性别
    private String ptTel;             //患者联系电话
    private String cardType;        //患者证件类型
    private String idNo;            //患者证件号
    private String ptDistrict;      //患者所在地区
    private String applyTime;       //咨询申请时间
    private String visitTime;       //接诊时间
    private String visitFinishTime;     //结束时间
    private String complaintContent;    //患者咨询内容
    private String procFile;            //诊疗过程文件
    private String price;               //咨询服务价格
    private String fgReply;             //医师是否回复
    private String crtTime;             //数据上传时间
    private String createTime;          //生成时间
    private String upload;              //上传时间
    @Column(name = "id_online_ask")
    public String getIdOnlineAsk() {
        return idOnlineAsk;
    }
    public void setIdOnlineAsk(String idOnlineAsk) {
        this.idOnlineAsk = idOnlineAsk;
    }
    @Column(name = "net_service_code")
    public String getNetServiceCode() {
        return netServiceCode;
    }
    public void setNetServiceCode(String netServiceCode) {
        this.netServiceCode = netServiceCode;
    }
    @Column(name = "med_class_code")
    public String getMedClassCode() {
        return medClassCode;
    }
    public void setMedClassCode(String medClassCode) {
        this.medClassCode = medClassCode;
    }
    @Column(name = "med_pop_code")
    public String getMedPopCode() {
        return medPopCode;
    }
    public void setMedPopCode(String medPopCode) {
        this.medPopCode = medPopCode;
    }
    @Column(name = "org_name")
    public String getOrgName() {
        return orgName;
    }
    public void setOrgName(String orgName) {
        this.orgName = orgName;
    }
    @Column(name = "org_code")
    public String getOrgCode() {
        return orgCode;
    }
    public void setOrgCode(String orgCode) {
        this.orgCode = orgCode;
    }
    @Column(name = "cd_orgSub")
    public String getCdOrgSub() {
        return cdOrgSub;
    }
    public void setCdOrgSub(String cdOrgSub) {
        this.cdOrgSub = cdOrgSub;
    }
    @Column(name = "cd_area")
    public String getCdArea() {
        return cdArea;
    }
    public void setCdArea(String cdArea) {
        this.cdArea = cdArea;
    }
    @Column(name = "visit_doc_name")
    public String getVisitDocName() {
        return visitDocName;
    }
    public void setVisitDocName(String visitDocName) {
        this.visitDocName = visitDocName;
    }
    @Column(name = "visit_doc_id_no")
    public String getVisitDocIdNo() {
        return visitDocIdNo;
    }
    public void setVisitDocIdNo(String visitDocIdNo) {
        this.visitDocIdNo = visitDocIdNo;
    }
    @Column(name = "visit_doc_code")
    public String getVisitDocCode() {
        return visitDocCode;
    }
    public void setVisitDocCode(String visitDocCode) {
        this.visitDocCode = visitDocCode;
    }
    @Column(name = "visit_dept_code")
    public String getVisitDeptCode() {
        return visitDeptCode;
    }
    public void setVisitDeptCode(String visitDeptCode) {
        this.visitDeptCode = visitDeptCode;
    }
    @Column(name = "visit_dept_name")
    public String getVisitDeptName() {
        return visitDeptName;
    }
    public void setVisitDeptName(String visitDeptName) {
        this.visitDeptName = visitDeptName;
    }
    @Column(name = "pt_no")
    public String getPtNo() {
        return ptNo;
    }
    public void setPtNo(String ptNo) {
        this.ptNo = ptNo;
    }
    @Column(name = "pt_age")
    public String getPtAge() {
        return ptAge;
    }
    public void setPtAge(String ptAge) {
        this.ptAge = ptAge;
    }
    @Column(name = "cost_type")
    public String getCostType() {
        return costType;
    }
    public void setCostType(String costType) {
        this.costType = costType;
    }
    @Column(name = "pt_birthdate")
    public String getPtBirthdate() {
        return ptBirthdate;
    }
    public void setPtBirthdate(String ptBirthdate) {
        this.ptBirthdate = ptBirthdate;
    }
    @Column(name = "ge_code")
    public String getGeCode() {
        return geCode;
    }
    public void setGeCode(String geCode) {
        this.geCode = geCode;
    }
    @Column(name = "pt_tel")
    public String getPtTel() {
        return ptTel;
    }
    public void setPtTel(String ptTel) {
        this.ptTel = ptTel;
    }
    @Column(name = "card_type")
    public String getCardType() {
        return cardType;
    }
    public void setCardType(String cardType) {
        this.cardType = cardType;
    }
    @Column(name = "id_no")
    public String getIdNo() {
        return idNo;
    }
    public void setIdNo(String idNo) {
        this.idNo = idNo;
    }
    @Column(name = "pt_district")
    public String getPtDistrict() {
        return ptDistrict;
    }
    public void setPtDistrict(String ptDistrict) {
        this.ptDistrict = ptDistrict;
    }
    @Column(name = "apply_time")
    public String getApplyTime() {
        return applyTime;
    }
    public void setApplyTime(String applyTime) {
        this.applyTime = applyTime;
    }
    @Column(name = "visit_time")
    public String getVisitTime() {
        return visitTime;
    }
    public void setVisitTime(String visitTime) {
        this.visitTime = visitTime;
    }
    @Column(name = "visit_finish_time")
    public String getVisitFinishTime() {
        return visitFinishTime;
    }
    public void setVisitFinishTime(String visitFinishTime) {
        this.visitFinishTime = visitFinishTime;
    }
    @Column(name = "complaint_content")
    public String getComplaintContent() {
        return complaintContent;
    }
    public void setComplaintContent(String complaintContent) {
        this.complaintContent = complaintContent;
    }
    @Column(name = "proc_file")
    public String getProcFile() {
        return procFile;
    }
    public void setProcFile(String procFile) {
        this.procFile = procFile;
    }
    @Column(name = "price")
    public String getPrice() {
        return price;
    }
    public void setPrice(String price) {
        this.price = price;
    }
    @Column(name = "fg_reply")
    public String getFgReply() {
        return fgReply;
    }
    public void setFgReply(String fgReply) {
        this.fgReply = fgReply;
    }
    @Column(name = "crt_time")
    public String getCrtTime() {
        return crtTime;
    }
    public void setCrtTime(String crtTime) {
        this.crtTime = crtTime;
    }
    @Column(name = "create_time")
    public String getCreateTime() {
        return createTime;
    }
    public void setCreateTime(String createTime) {
        this.createTime = createTime;
    }
    @Column(name = "upload")
    public String getUpload() {
        return upload;
    }
    public void setUpload(String upload) {
        this.upload = upload;
    }
}

+ 377 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/thirdUpload/BaseNsOnlineMedDO.java

@ -0,0 +1,377 @@
package com.yihu.jw.entity.thirdUpload;
import com.yihu.jw.entity.UuidIdentityEntity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
 * Created by wsy on 2021/8/31.
 */
@Entity
@Table(name = "base_ns_online_med")
public class BaseNsOnlineMedDO extends UuidIdentityEntity {
    /*网络诊疗服务信息表*/
    private String idOnlineMed;     //网络诊疗记录唯一标识
    private String netServiceCode;  //互联网医疗服务类型
    private String medClassCode;    //诊疗类别
    private String orgName;         //医疗机构名称
    private String orgCode;         //医疗机构编码
    private String cdOrgSub;        //医疗机构单位隶属
    private String cdArea;          //医疗机构地区
    private String visitDocName;    //医师姓名
    private String visitDocIdNo;    //医师身份证号
    private String visitDocCode;    //医师唯一标识
    private String visitSubjectCode;    //医师所属专业代码
    private String visitSubjectName;    //医师所属专业名称
    private String visitDeptCode;       //医师所属科室代码
    private String visitDeptName;       //医师所属科室名称
    private String ptNo;                //患者姓名
    private String ptAge;               //患者年龄
    private String costType;            //患者费别
    private String ptBirthdate;         //出生日期
    private String geCode;              //患者性别
    private String ptTel;               //患者联系电话
    private String cardType;            //患者证件类型
    private String idNo;                //患者证件号
    private String ptDistrict;          //患者所在地区
    private String ptCardType;          //患者就诊卡类型
    private String ptCardNo;            //患者就诊卡号
    private String applyTime;           //咨询申请时间
    private String visitTime;           //接诊时间
    private String visitFinishTime;     //结束时间
    private String oldDiagCode;         //患者原诊断编码
    private String oldDiagName;         //患者原诊断名称
    private String diagCode;            //患者本次诊断编码
    private String diagName;            //患者本次诊断名称
    private String diseasesType;        //诊断类型
    private String complaintContent;    //患者诊疗内容
    private String procFile;            //诊疗过程文件
    private String price;               //咨询服务价格
    private String fgReply;             //医师是否回复
    private String crtTime;             //数据上传时间
    private String createTime;          //生成时间
    private String upload;               //上传时间
    @Column(name = "id_online_med")
    public String getIdOnlineMed() {
        return idOnlineMed;
    }
    public void setIdOnlineMed(String idOnlineMed) {
        this.idOnlineMed = idOnlineMed;
    }
    @Column(name = "net_service_code")
    public String getNetServiceCode() {
        return netServiceCode;
    }
    public void setNetServiceCode(String netServiceCode) {
        this.netServiceCode = netServiceCode;
    }
    @Column(name = "med_class_code")
    public String getMedClassCode() {
        return medClassCode;
    }
    public void setMedClassCode(String medClassCode) {
        this.medClassCode = medClassCode;
    }
    @Column(name = "org_name")
    public String getOrgName() {
        return orgName;
    }
    public void setOrgName(String orgName) {
        this.orgName = orgName;
    }
    @Column(name = "org_code")
    public String getOrgCode() {
        return orgCode;
    }
    public void setOrgCode(String orgCode) {
        this.orgCode = orgCode;
    }
    @Column(name = "cd_org_sub")
    public String getCdOrgSub() {
        return cdOrgSub;
    }
    public void setCdOrgSub(String cdOrgSub) {
        this.cdOrgSub = cdOrgSub;
    }
    @Column(name = "cd_area")
    public String getCdArea() {
        return cdArea;
    }
    public void setCdArea(String cdArea) {
        this.cdArea = cdArea;
    }
    @Column(name = "visit_doc_name")
    public String getVisitDocName() {
        return visitDocName;
    }
    public void setVisitDocName(String visitDocName) {
        this.visitDocName = visitDocName;
    }
    @Column(name = "visit_doc_id_no")
    public String getVisitDocIdNo() {
        return visitDocIdNo;
    }
    public void setVisitDocIdNo(String visitDocIdNo) {
        this.visitDocIdNo = visitDocIdNo;
    }
    @Column(name = "visit_doc_code")
    public String getVisitDocCode() {
        return visitDocCode;
    }
    public void setVisitDocCode(String visitDocCode) {
        this.visitDocCode = visitDocCode;
    }
    @Column(name = "visit_subject_code")
    public String getVisitSubjectCode() {
        return visitSubjectCode;
    }
    public void setVisitSubjectCode(String visitSubjectCode) {
        this.visitSubjectCode = visitSubjectCode;
    }
    @Column(name = "visit_subject_name")
    public String getVisitSubjectName() {
        return visitSubjectName;
    }
    public void setVisitSubjectName(String visitSubjectName) {
        this.visitSubjectName = visitSubjectName;
    }
    @Column(name = "visit_dept_code")
    public String getVisitDeptCode() {
        return visitDeptCode;
    }
    public void setVisitDeptCode(String visitDeptCode) {
        this.visitDeptCode = visitDeptCode;
    }
    @Column(name = "visit_dept_name")
    public String getVisitDeptName() {
        return visitDeptName;
    }
    public void setVisitDeptName(String visitDeptName) {
        this.visitDeptName = visitDeptName;
    }
    @Column(name = "pt_no")
    public String getPtNo() {
        return ptNo;
    }
    public void setPtNo(String ptNo) {
        this.ptNo = ptNo;
    }
    @Column(name = "pt_age")
    public String getPtAge() {
        return ptAge;
    }
    public void setPtAge(String ptAge) {
        this.ptAge = ptAge;
    }
    @Column(name = "cost_type")
    public String getCostType() {
        return costType;
    }
    public void setCostType(String costType) {
        this.costType = costType;
    }
    @Column(name = "pt_birth_date")
    public String getPtBirthdate() {
        return ptBirthdate;
    }
    public void setPtBirthdate(String ptBirthdate) {
        this.ptBirthdate = ptBirthdate;
    }
    @Column(name = "ge_code")
    public String getGeCode() {
        return geCode;
    }
    public void setGeCode(String geCode) {
        this.geCode = geCode;
    }
    @Column(name = "pt_tel")
    public String getPtTel() {
        return ptTel;
    }
    public void setPtTel(String ptTel) {
        this.ptTel = ptTel;
    }
    @Column(name = "card_type")
    public String getCardType() {
        return cardType;
    }
    public void setCardType(String cardType) {
        this.cardType = cardType;
    }
    @Column(name = "id_no")
    public String getIdNo() {
        return idNo;
    }
    public void setIdNo(String idNo) {
        this.idNo = idNo;
    }
    @Column(name = "pt_district")
    public String getPtDistrict() {
        return ptDistrict;
    }
    public void setPtDistrict(String ptDistrict) {
        this.ptDistrict = ptDistrict;
    }
    @Column(name = "pt_card_type")
    public String getPtCardType() {
        return ptCardType;
    }
    public void setPtCardType(String ptCardType) {
        this.ptCardType = ptCardType;
    }
    @Column(name = "pt_card_no")
    public String getPtCardNo() {
        return ptCardNo;
    }
    public void setPtCardNo(String ptCardNo) {
        this.ptCardNo = ptCardNo;
    }
    @Column(name = "apply_time")
    public String getApplyTime() {
        return applyTime;
    }
    public void setApplyTime(String applyTime) {
        this.applyTime = applyTime;
    }
    @Column(name = "visit_time")
    public String getVisitTime() {
        return visitTime;
    }
    public void setVisitTime(String visitTime) {
        this.visitTime = visitTime;
    }
    @Column(name = "visit_finish_time")
    public String getVisitFinishTime() {
        return visitFinishTime;
    }
    public void setVisitFinishTime(String visitFinishTime) {
        this.visitFinishTime = visitFinishTime;
    }
    @Column(name = "old_diag_code")
    public String getOldDiagCode() {
        return oldDiagCode;
    }
    public void setOldDiagCode(String oldDiagCode) {
        this.oldDiagCode = oldDiagCode;
    }
    @Column(name = "old_diag_name")
    public String getOldDiagName() {
        return oldDiagName;
    }
    public void setOldDiagName(String oldDiagName) {
        this.oldDiagName = oldDiagName;
    }
    @Column(name = "diag_code")
    public String getDiagCode() {
        return diagCode;
    }
    public void setDiagCode(String diagCode) {
        this.diagCode = diagCode;
    }
    @Column(name = "diag_name")
    public String getDiagName() {
        return diagName;
    }
    public void setDiagName(String diagName) {
        this.diagName = diagName;
    }
    @Column(name = "diseases_type")
    public String getDiseasesType() {
        return diseasesType;
    }
    public void setDiseasesType(String diseasesType) {
        this.diseasesType = diseasesType;
    }
    @Column(name = "complaint_content")
    public String getComplaintContent() {
        return complaintContent;
    }
    public void setComplaintContent(String complaintContent) {
        this.complaintContent = complaintContent;
    }
    @Column(name = "proc_file")
    public String getProcFile() {
        return procFile;
    }
    public void setProcFile(String procFile) {
        this.procFile = procFile;
    }
    @Column(name = "price")
    public String getPrice() {
        return price;
    }
    public void setPrice(String price) {
        this.price = price;
    }
    @Column(name = "fg_reply")
    public String getFgReply() {
        return fgReply;
    }
    public void setFgReply(String fgReply) {
        this.fgReply = fgReply;
    }
    @Column(name = "crt_time")
    public String getCrtTime() {
        return crtTime;
    }
    public void setCrtTime(String crtTime) {
        this.crtTime = crtTime;
    }
    @Column(name = "create_time")
    public String getCreateTime() {
        return createTime;
    }
    public void setCreateTime(String createTime) {
        this.createTime = createTime;
    }
    @Column(name = "upload")
    public String getUpload() {
        return upload;
    }
    public void setUpload(String upload) {
        this.upload = upload;
    }
}

+ 435 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/thirdUpload/BaseNsPrescriptionDO.java

@ -0,0 +1,435 @@
package com.yihu.jw.entity.thirdUpload;

import com.yihu.jw.entity.UuidIdentityEntity;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;

/**
 * Created by wsy on 2021/9/1.
 */
@Entity
@Table(name = "base_ns_prescription")
public class BaseNsPrescriptionDO extends UuidIdentityEntity {

    /*电子处方表*/
    private String idPrescription;      //记录唯一标识
    private String presNo;              //处方号
    private String presClassCode;       //处方类别编码
    private String presClassName;       //处方类别名称
    private String ptId;                //患者ID
    private String medRdNo;             //就诊号
    private String medClassCode;        //就诊类别编码
    private String medClassName;        //就诊类别名称
    private String ptNo;                //患者姓名
    private String geCode;              //患者性别编码
    private String ptAge;               //患者年龄
    private String birthday;            //出生日期
    private String cardType;            //患者证件类型
    private String idNo;                //患者有效证件号
    private String guarderName;         //监护人姓名
    private String guarderNo;           //监护人身份证号码
    private String ptTel;               //患者联系方式
    private String ptDistrict;          //患者所在地区
    private String allergicHistory;     //患者过敏信息
    private String costType;            //患者费别
    private String insClassCode;        //保险类别编码
    private String insClassName;        //保险类别名称
    private String orgCode;             //医疗机构编码
    private String orgName;             //医疗机构名称
    private String presSubjectCode;     //开方医师所属专业代码(诊疗科目代码)
    private String presSubjectName;     //开方医师所属专业名称(诊疗科目名称)
    private String presDeptCode;        //开方科室编码
    private String presDeptName;        //开方科室名称
    private String presTime;            //开方时间
    private String presDocCode;         //开方医生唯一标识
    private String presDocName;         //开方医生姓名
    private String presDocIdNo;         //开方医生身份证号
    private String trialDocCode;        //审方医生唯一标识
    private String trialDocName;        //审方医生姓名
    private String trialDocIdNo;        //审方医生身份证
    private String trialTime;           //审方时间
    private String diagCode;            //诊断编码
    private String diagName;            //诊断名称
    private String diseasesType;        //疾病分类
    private String mobilityFlag;        //行动不便标志
    private String longMedicalFlag;     //病情稳定需长期服药标志
    private String presEffecDays;       //处方有效期(单位天)
    private String totalPrice;          //总金额
    private String uploadTime;          //上传时间
    private String createTime;          //生成时间
    private String upload;              //上传时间

    @Column(name = "id_prescription")
    public String getIdPrescription() {
        return idPrescription;
    }

    public void setIdPrescription(String idPrescription) {
        this.idPrescription = idPrescription;
    }
    @Column(name = "pres_no")
    public String getPresNo() {
        return presNo;
    }

    public void setPresNo(String presNo) {
        this.presNo = presNo;
    }
    @Column(name = "pres_class_code")
    public String getPresClassCode() {
        return presClassCode;
    }

    public void setPresClassCode(String presClassCode) {
        this.presClassCode = presClassCode;
    }
    @Column(name = "pres_class_name")
    public String getPresClassName() {
        return presClassName;
    }

    public void setPresClassName(String presClassName) {
        this.presClassName = presClassName;
    }
    @Column(name = "pt_id")
    public String getPtId() {
        return ptId;
    }

    public void setPtId(String ptId) {
        this.ptId = ptId;
    }
    @Column(name = "med_rd_no")
    public String getMedRdNo() {
        return medRdNo;
    }

    public void setMedRdNo(String medRdNo) {
        this.medRdNo = medRdNo;
    }
    @Column(name = "med_class_code")
    public String getMedClassCode() {
        return medClassCode;
    }

    public void setMedClassCode(String medClassCode) {
        this.medClassCode = medClassCode;
    }
    @Column(name = "med_class_name")
    public String getMedClassName() {
        return medClassName;
    }

    public void setMedClassName(String medClassName) {
        this.medClassName = medClassName;
    }
    @Column(name = "pt_no")
    public String getPtNo() {
        return ptNo;
    }

    public void setPtNo(String ptNo) {
        this.ptNo = ptNo;
    }
    @Column(name = "ge_code")
    public String getGeCode() {
        return geCode;
    }

    public void setGeCode(String geCode) {
        this.geCode = geCode;
    }
    @Column(name = "pt_age")
    public String getPtAge() {
        return ptAge;
    }

    public void setPtAge(String ptAge) {
        this.ptAge = ptAge;
    }
    @Column(name = "birthday")
    public String getBirthday() {
        return birthday;
    }

    public void setBirthday(String birthday) {
        this.birthday = birthday;
    }
    @Column(name = "card_type")
    public String getCardType() {
        return cardType;
    }

    public void setCardType(String cardType) {
        this.cardType = cardType;
    }
    @Column(name = "id_no")
    public String getIdNo() {
        return idNo;
    }

    public void setIdNo(String idNo) {
        this.idNo = idNo;
    }
    @Column(name = "guarder_name")
    public String getGuarderName() {
        return guarderName;
    }

    public void setGuarderName(String guarderName) {
        this.guarderName = guarderName;
    }
    @Column(name = "guarder_no")
    public String getGuarderNo() {
        return guarderNo;
    }

    public void setGuarderNo(String guarderNo) {
        this.guarderNo = guarderNo;
    }
    @Column(name = "pt_tel")
    public String getPtTel() {
        return ptTel;
    }

    public void setPtTel(String ptTel) {
        this.ptTel = ptTel;
    }
    @Column(name = "pt_district")
    public String getPtDistrict() {
        return ptDistrict;
    }

    public void setPtDistrict(String ptDistrict) {
        this.ptDistrict = ptDistrict;
    }
    @Column(name = "allergic_history")
    public String getAllergicHistory() {
        return allergicHistory;
    }

    public void setAllergicHistory(String allergicHistory) {
        this.allergicHistory = allergicHistory;
    }
    @Column(name = "cost_type")
    public String getCostType() {
        return costType;
    }

    public void setCostType(String costType) {
        this.costType = costType;
    }
    @Column(name = "ins_class_code")
    public String getInsClassCode() {
        return insClassCode;
    }

    public void setInsClassCode(String insClassCode) {
        this.insClassCode = insClassCode;
    }
    @Column(name = "ins_class_name")
    public String getInsClassName() {
        return insClassName;
    }

    public void setInsClassName(String insClassName) {
        this.insClassName = insClassName;
    }
    @Column(name = "org_code")
    public String getOrgCode() {
        return orgCode;
    }

    public void setOrgCode(String orgCode) {
        this.orgCode = orgCode;
    }
    @Column(name = "org_name")
    public String getOrgName() {
        return orgName;
    }

    public void setOrgName(String orgName) {
        this.orgName = orgName;
    }
    @Column(name = "pres_subject_code")
    public String getPresSubjectCode() {
        return presSubjectCode;
    }

    public void setPresSubjectCode(String presSubjectCode) {
        this.presSubjectCode = presSubjectCode;
    }
    @Column(name = "pres_subject_name")
    public String getPresSubjectName() {
        return presSubjectName;
    }

    public void setPresSubjectName(String presSubjectName) {
        this.presSubjectName = presSubjectName;
    }
    @Column(name = "pres_dept_code")
    public String getPresDeptCode() {
        return presDeptCode;
    }

    public void setPresDeptCode(String presDeptCode) {
        this.presDeptCode = presDeptCode;
    }
    @Column(name = "pres_dept_name")
    public String getPresDeptName() {
        return presDeptName;
    }

    public void setPresDeptName(String presDeptName) {
        this.presDeptName = presDeptName;
    }
    @Column(name = "pres_time")
    public String getPresTime() {
        return presTime;
    }

    public void setPresTime(String presTime) {
        this.presTime = presTime;
    }
    @Column(name = "pres_doc_code")
    public String getPresDocCode() {
        return presDocCode;
    }

    public void setPresDocCode(String presDocCode) {
        this.presDocCode = presDocCode;
    }
    @Column(name = "pres_doc_name")
    public String getPresDocName() {
        return presDocName;
    }

    public void setPresDocName(String presDocName) {
        this.presDocName = presDocName;
    }
    @Column(name = "pres_doc_id_no")
    public String getPresDocIdNo() {
        return presDocIdNo;
    }

    public void setPresDocIdNo(String presDocIdNo) {
        this.presDocIdNo = presDocIdNo;
    }
    @Column(name = "trial_doc_code")
    public String getTrialDocCode() {
        return trialDocCode;
    }

    public void setTrialDocCode(String trialDocCode) {
        this.trialDocCode = trialDocCode;
    }
    @Column(name = "trial_doc_name")
    public String getTrialDocName() {
        return trialDocName;
    }

    public void setTrialDocName(String trialDocName) {
        this.trialDocName = trialDocName;
    }
    @Column(name = "trial_doc_id_no")
    public String getTrialDocIdNo() {
        return trialDocIdNo;
    }

    public void setTrialDocIdNo(String trialDocIdNo) {
        this.trialDocIdNo = trialDocIdNo;
    }
    @Column(name = "trial_time")
    public String getTrialTime() {
        return trialTime;
    }

    public void setTrialTime(String trialTime) {
        this.trialTime = trialTime;
    }
    @Column(name = "diag_code")
    public String getDiagCode() {
        return diagCode;
    }

    public void setDiagCode(String diagCode) {
        this.diagCode = diagCode;
    }
    @Column(name = "diag_name")
    public String getDiagName() {
        return diagName;
    }

    public void setDiagName(String diagName) {
        this.diagName = diagName;
    }
    @Column(name = "diseases_type")
    public String getDiseasesType() {
        return diseasesType;
    }

    public void setDiseasesType(String diseasesType) {
        this.diseasesType = diseasesType;
    }
    @Column(name = "mobility_flag")
    public String getMobilityFlag() {
        return mobilityFlag;
    }

    public void setMobilityFlag(String mobilityFlag) {
        this.mobilityFlag = mobilityFlag;
    }
    @Column(name = "long_medical_flag")
    public String getLongMedicalFlag() {
        return longMedicalFlag;
    }

    public void setLongMedicalFlag(String longMedicalFlag) {
        this.longMedicalFlag = longMedicalFlag;
    }
    @Column(name = "pres_effec_days")
    public String getPresEffecDays() {
        return presEffecDays;
    }

    public void setPresEffecDays(String presEffecDays) {
        this.presEffecDays = presEffecDays;
    }
    @Column(name = "total_price")
    public String getTotalPrice() {
        return totalPrice;
    }

    public void setTotalPrice(String totalPrice) {
        this.totalPrice = totalPrice;
    }
    @Column(name = "upload_time")
    public String getUploadTime() {
        return uploadTime;
    }

    public void setUploadTime(String uploadTime) {
        this.uploadTime = uploadTime;
    }
    @Column(name = "create_time")
    public String getCreateTime() {
        return createTime;
    }

    public void setCreateTime(String createTime) {
        this.createTime = createTime;
    }
    @Column(name = "upload")
    public String getUpload() {
        return upload;
    }

    public void setUpload(String upload) {
        this.upload = upload;
    }



}

+ 265 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/thirdUpload/BaseNsPrescriptionDrugDO.java

@ -0,0 +1,265 @@
package com.yihu.jw.entity.thirdUpload;
import com.yihu.jw.entity.UuidIdentityEntity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
 * Created by wsy on 2021/9/1.
 */
@Entity
@Table(name = "base_ns_prescription_drug")
public class BaseNsPrescriptionDrugDO extends UuidIdentityEntity {
    private String idPrescriptionDrug;      //记录唯一标识流水号
    private String presNo;                  //处方号
    private String cuntryDrugCode;          //批准文号
    private String eletDrugCode;            //国家药品编码
    private String orgCode;                 //医疗机构编码
    private String apprDrugCode;            //药品通用编码
    private String apprDrugName;            //药品通用名称
    private String drugCode;                //药品商品编码
    private String drugName;                //药品商品名称
    private String drugForm;                //药品剂型
    private String prescriptionDays;        //用药天数
    private String dosage;                  //用药剂量-单次
    private String dosageUnit;              //用药剂量单位-单次
    private String totalDosage;             //用药剂量-总量
    private String totalDosageUnit;         //用药剂量单位-总量
    private String medicineFreq;            //用药频率编码
    private String drugUse;                 //药品用法
    private String standardDesc;            //规格
    private String singlePrice;             //单价
    private String drugTotalPrice;          //金额
    private String comments;                //嘱托
    private String antiComments;            //抗菌药说明
    private String decMethName;             //中药煎煮法名称
    private String createTime;              //生成时间
    private String upload;                  //上传时间
    @Column(name = "id_prescription_drug")
    public String getIdPrescriptionDrug() {
        return idPrescriptionDrug;
    }
    public void setIdPrescriptionDrug(String idPrescriptionDrug) {
        this.idPrescriptionDrug = idPrescriptionDrug;
    }
    @Column(name = "pres_no")
    public String getPresNo() {
        return presNo;
    }
    public void setPresNo(String presNo) {
        this.presNo = presNo;
    }
    @Column(name = "cuntry_drug_code")
    public String getCuntryDrugCode() {
        return cuntryDrugCode;
    }
    public void setCuntryDrugCode(String cuntryDrugCode) {
        this.cuntryDrugCode = cuntryDrugCode;
    }
    @Column(name = "elet_drug_code")
    public String getEletDrugCode() {
        return eletDrugCode;
    }
    public void setEletDrugCode(String eletDrugCode) {
        this.eletDrugCode = eletDrugCode;
    }
    @Column(name = "org_code")
    public String getOrgCode() {
        return orgCode;
    }
    public void setOrgCode(String orgCode) {
        this.orgCode = orgCode;
    }
    @Column(name = "appr_drug_code")
    public String getApprDrugCode() {
        return apprDrugCode;
    }
    public void setApprDrugCode(String apprDrugCode) {
        this.apprDrugCode = apprDrugCode;
    }
    @Column(name = "appr_drug_name")
    public String getApprDrugName() {
        return apprDrugName;
    }
    public void setApprDrugName(String apprDrugName) {
        this.apprDrugName = apprDrugName;
    }
    @Column(name = "drug_code")
    public String getDrugCode() {
        return drugCode;
    }
    public void setDrugCode(String drugCode) {
        this.drugCode = drugCode;
    }
    @Column(name = "drug_name")
    public String getDrugName() {
        return drugName;
    }
    public void setDrugName(String drugName) {
        this.drugName = drugName;
    }
    @Column(name = "drug_form")
    public String getDrugForm() {
        return drugForm;
    }
    public void setDrugForm(String drugForm) {
        this.drugForm = drugForm;
    }
    @Column(name = "prescription_days")
    public String getPrescriptionDays() {
        return prescriptionDays;
    }
    public void setPrescriptionDays(String prescriptionDays) {
        this.prescriptionDays = prescriptionDays;
    }
    @Column(name = "dosage")
    public String getDosage() {
        return dosage;
    }
    public void setDosage(String dosage) {
        this.dosage = dosage;
    }
    @Column(name = "dosage_unit")
    public String getDosageUnit() {
        return dosageUnit;
    }
    public void setDosageUnit(String dosageUnit) {
        this.dosageUnit = dosageUnit;
    }
    @Column(name = "total_dosage")
    public String getTotalDosage() {
        return totalDosage;
    }
    public void setTotalDosage(String totalDosage) {
        this.totalDosage = totalDosage;
    }
    @Column(name = "total_dosage_unit")
    public String getTotalDosageUnit() {
        return totalDosageUnit;
    }
    public void setTotalDosageUnit(String totalDosageUnit) {
        this.totalDosageUnit = totalDosageUnit;
    }
    @Column(name = "medicine_freq")
    public String getMedicineFreq() {
        return medicineFreq;
    }
    public void setMedicineFreq(String medicineFreq) {
        this.medicineFreq = medicineFreq;
    }
    @Column(name = "drug_use")
    public String getDrugUse() {
        return drugUse;
    }
    public void setDrugUse(String drugUse) {
        this.drugUse = drugUse;
    }
    @Column(name = "standard_desc")
    public String getStandardDesc() {
        return standardDesc;
    }
    public void setStandardDesc(String standardDesc) {
        this.standardDesc = standardDesc;
    }
    @Column(name = "single_price")
    public String getSinglePrice() {
        return singlePrice;
    }
    public void setSinglePrice(String singlePrice) {
        this.singlePrice = singlePrice;
    }
    @Column(name = "drug_total_price")
    public String getDrugTotalPrice() {
        return drugTotalPrice;
    }
    public void setDrugTotalPrice(String drugTotalPrice) {
        this.drugTotalPrice = drugTotalPrice;
    }
    @Column(name = "comments")
    public String getComments() {
        return comments;
    }
    public void setComments(String comments) {
        this.comments = comments;
    }
    @Column(name = "anti_comments")
    public String getAntiComments() {
        return antiComments;
    }
    public void setAntiComments(String antiComments) {
        this.antiComments = antiComments;
    }
    @Column(name = "dec_meth_name")
    public String getDecMethName() {
        return decMethName;
    }
    public void setDecMethName(String decMethName) {
        this.decMethName = decMethName;
    }
    @Column(name = "create_time")
    public String getCreateTime() {
        return createTime;
    }
    public void setCreateTime(String createTime) {
        this.createTime = createTime;
    }
    @Column(name = "upload")
    public String getUpload() {
        return upload;
    }
    public void setUpload(String upload) {
        this.upload = upload;
    }
}

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

@ -0,0 +1,65 @@
package com.yihu.jw.rm.regulatory;
/**
 * Created by wsy on 2021/9/1.
 */
public class BaseRegulatoryRequestMapping {
    /*
     *   监管平台请求地址
     */
    public static class UpWebTherapySupserviceInfo{
        /*请求前缀*/
        public static final String PREFIX = "/regulatory";
        //保存医师唯一标识
        public static final String SAVEACHNS = "/saveAchns";
        //删除医师唯一标识
        public static final String DELETEACHNS = "/deleteAchns";
        //查询医师唯一标识
        public static final String FINDACHNSBYCREATETIME = "/findAchnsByCreateTime";
        //待插入
        //保存网络咨询服务信息
        public static final String SAVENSOLINEASK = "/saveNsOlineAsk";
        //删除网络咨询服务信息
        public static final String DELETESOLINEASK = "/deleteNsOlineAsk";
        //查询网络咨询服务信息
        public static final String FINDNSOLINEASK = "/findNsOlineAsk";
        //保存网络诊疗服务信息
        public static final String SAVENSONLINEMED = "/saveNsonlinemed";
        //删除网络诊疗服务信息
        public static final String DELETENSONLINEMED = "/deleteNsonlinemed";
        //查询网络诊疗服务信息
        public static final String FINDSONLINEMED = "/findNsonlinemed";
        //保存电子处方单信息
        public static final String SAVEPRESCRIPTION = "/savePrescription";
        //删除电子处方单信息
        public static final String DELETEPRESCRIPTION = "/deletePrescription";
        //查询电子处方单信息
        public static final String FINDPRESCRIPTION = "/findPrescription";
        //保存电子处方药品明细信息
        public static final String SAVEPRESCRIPTIONDRUG = "savePrescriptionDrug";
        //删除电子处方单信息
        public static final String DELETEPRESCRIPTIONDRUG = "/deletePrescriptionDrug";
        //查询电子处方单信息
        public static final String FINDPRESCRIPTIONDRUG = "/findPrescriptionDrug";
    }
}

+ 23 - 1
common/common-util/src/main/java/com/yihu/jw/util/common/GpsUtil.java

@ -104,15 +104,37 @@ public class GpsUtil {
     * @param bd_lon
     * @return
     */
    public  JSONObject bd09_To_Gps84(double bd_lat, double bd_lon) {
    public JSONObject bd09_To_Gps84(double bd_lat, double bd_lon) {
        JSONObject gcj02 = bd09_To_Gcj02(bd_lat, bd_lon);
        JSONObject map84 = gcj_To_Gps84(gcj02.getDouble("lat"),
                gcj02.getDouble("lon"));
        return map84;
    }
    public JSONObject Gps84_To_bd09(double bd_lat, double bd_lon) {
        JSONObject gcj02 = gps84_To_Gcj02(bd_lat, bd_lon);
        JSONObject map84 = gcj02_To_Bd09(gcj02.getDouble("lat"),
                gcj02.getDouble("lon"));
        return map84;
    }
//    /**
//     * (BD-09)-->84
//     * @param bd_lat
//     * @param bd_lon
//     * @return
//     */
//    public  JSONObject bd09_To_Gps84(double bd_lat, double bd_lon) {
//
//        JSONObject gcj02 = bd09_To_Gcj02(bd_lat, bd_lon);
//        JSONObject map84 = gcj_To_Gps84(gcj02.getDouble("lat"),
//                gcj02.getDouble("lon"));
//        return map84;
//
//    }
    /**
     * is or not outOfChina
     * @param lat

+ 43 - 0
common/common-util/src/main/java/com/yihu/jw/util/common/LatitudeUtils.java

@ -1,13 +1,20 @@
package com.yihu.jw.util.common;
import com.alibaba.fastjson.JSONObject;
import com.sun.org.apache.bcel.internal.generic.IF_ACMPEQ;
import org.apache.http.client.HttpClient;
import org.omg.CORBA.WStringSeqHelper;
import org.springframework.util.StringUtils;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;
import java.text.MessageFormat;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
@ -108,6 +115,42 @@ public class LatitudeUtils {
        return distanceStr;
    }
    public static String getLocationAddress(String lat, String lng)
    {
        BufferedReader in = null;
        try {
            String location = MessageFormat.format("{0},{1}", lat, lng);
            URL tirc = null;
            tirc = new URL("https://api.map.baidu.com/geocoder/v2/?location="+location+"&output=json&ak="+ak);
            in = new BufferedReader(new InputStreamReader(tirc.openStream(),"UTF-8"));
            String res;
            StringBuilder sb = new StringBuilder("");
            while((res = in.readLine())!=null){
                sb.append(res.trim());
            }
            String str = sb.toString();
            JSONObject obj = JSONObject.parseObject(str);
            if (0==obj.getInteger("status")){
                JSONObject tmp = obj.getJSONObject("result");
                if (null!=tmp){
                    return tmp.getString("formatted_address");
                }
            }
        }catch (Exception e) {
            e.printStackTrace();
        }finally{
            try {
                if(in!=null){
                    in.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return null;
    }
    public static void main(String args[]){
        try {
            Map<String, String> json = LatitudeUtils.getGeocoderLatitude("厦门海沧区新阳海新阳光公寓15梯304");

+ 6 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/dao/contacts/PatientSosContactsDao.java

@ -2,6 +2,8 @@ package com.yihu.jw.care.dao.contacts;
import com.yihu.jw.entity.care.contacts.PatientSosContactsDO;
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;
@ -17,4 +19,8 @@ public interface PatientSosContactsDao extends PagingAndSortingRepository<Patien
    List<PatientSosContactsDO> findByPatientOrderByUpdateTimeDesc(String patient);
    PatientSosContactsDO findByPatientAndSosPhone(String patient,String sosPhone);
    @Modifying
    @Query(" update PatientSosContactsDO a set a.successFlag = 0,a.updateInfo=null where a.patient=?1")
    void updateByPatient(String patient);
}

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

@ -0,0 +1,20 @@
package com.yihu.jw.care.dao.device;
import com.yihu.jw.entity.care.device.BaseYxDeviceIndex;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
/**
 * Created with IntelliJ IDEA.
 *
 * @Author: yeshijie
 * @Date: 2021/8/26
 * @Description:
 */
public interface BaseYxDeviceIndexDao extends PagingAndSortingRepository<BaseYxDeviceIndex, String> {
    @Query(value = "SELECT a.* from base_yxdevice_index a where a.sn=?1 and a.lat!=0 and a.lon!=0 order by a.create_time desc limit 1",nativeQuery = true)
    List<BaseYxDeviceIndex> findBySn(String sn);
}

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

@ -58,7 +58,7 @@ public interface DevicePatientHealthIndexDao
	@Query(value = "select DATE_FORMAT(a.record_date,'%Y-%m-%d') from wlyy_patient_health_index a where a.user = ?1 and a.type=?2 and a.record_date >= ?3 and a.record_date <= ?4 and a.del = '1' group by DATE_FORMAT(a.record_date,'%Y-%m-%d') order by DATE_FORMAT(a.record_date,'%Y-%m-%d') desc limit ?5 ,?6",nativeQuery = true)
	List<String> findDateList(String patient, int type, Date start, Date end, int currentSize, int pageSize);
	
	@Query(value= " select * from wlyy_patient_health_index where type in (1,2) and record_date BETWEEN ?1 AND ?2  AND user in (select p.code from wlyy.wlyy_patient p INNER JOIN wlyy.wlyy_sign_family s on s.patient = p.code RIGHT JOIN wlyy_sign_patient_label_info sp on sp.patient = p.code where  s.status > 0 AND s.admin_team_code = ?3 and (s.doctor = ?4 or s.doctor_health =?4) and sp.status = 1 and sp.label_type = 3 and (sp.label = 1 or sp.label = 2))",nativeQuery = true)
	List<DevicePatientHealthIndex> findByTeamcodeAndRecordDate(Date start, Date end, String teamcode, String doctorcode);
@ -77,4 +77,5 @@ public interface DevicePatientHealthIndexDao
	@Modifying
	@Query("update DevicePatientHealthIndex a set a.manageResult=1 where a.id in (?1) ")
	void handleHealthIndex(Long[] id);
}

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

@ -0,0 +1,21 @@
package com.yihu.jw.care.dao.device;
import com.yihu.jw.entity.care.device.PatientSafeAreaDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
/**
 * Created by Bing on 2021/8/31.
 */
public interface PatientSafeAreaDao extends PagingAndSortingRepository<PatientSafeAreaDO,Long>,
        JpaSpecificationExecutor<PatientSafeAreaDO> {
    List<PatientSafeAreaDO> findByPatient(String patient);
    @Modifying
    void deleteByPatient(String patient);
}

+ 15 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/dao/lifeCare/BaseAdminServiceDynamicDao.java

@ -0,0 +1,15 @@
package com.yihu.jw.care.dao.lifeCare;
import com.yihu.jw.entity.care.lifeCare.LifeCareOrderDO;
import com.yihu.jw.entity.door.BaseAdminServiceDynamic;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
/***
 * @ClassName: BaseAdminServiceDynamicDao
 * @Description:
 * @Auther: shi kejing
 * @Date: 2021/8/31 15:28
 */
public interface BaseAdminServiceDynamicDao extends PagingAndSortingRepository<BaseAdminServiceDynamic, String>, JpaSpecificationExecutor<BaseAdminServiceDynamic> {
}

+ 147 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/admin/AdminDoorCoachOrderController.java

@ -0,0 +1,147 @@
package com.yihu.jw.care.endpoint.admin;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.care.endpoint.BaseController;
import com.yihu.jw.care.service.admin.AdminDoorCoachOrderService;
import com.yihu.jw.care.service.doorCoach.DoctorDoorCoachOrderService;
import com.yihu.jw.entity.hospital.message.SystemMessageDO;
import com.yihu.jw.restmodel.ResponseContant;
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.http.MediaType;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
/***
 * @ClassName: AdminDoorCoachOrderController
 * @Description: 管理员调度端终端
 * @Auther: shi kejing
 * @Date: 2021/8/31 14:38
 */
@RestController
@RequestMapping(value = "/admin/doorCoach/serviceOrder", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@Api(description = "管理员调度大屏")
public class AdminDoorCoachOrderController extends EnvelopRestEndpoint {
    @Autowired
    private DoctorDoorCoachOrderService doctorDoorCoachOrderService;
    @Autowired
    private AdminDoorCoachOrderService adminDoorCoachOrderService;
    private BaseController baseController = new BaseController();
    @GetMapping(value = "queryBriefList")
    @ApiOperation(value = "调度员查询工单列表")
    public String queryBriefList(
            @ApiParam(name = "dispatcher", value = "调度员code") @RequestParam(value = "dispatcher", required = true) String dispatcher,
            @ApiParam(name = "hospital", value = "调度员所在机构code") @RequestParam(value = "hospital", required = true) String hospital,
            @ApiParam(name = "orderNumber", value = "工单号") @RequestParam(value = "orderNumber", required = false) String orderNumber,
            @ApiParam(name = "patientName", value = "工单服务对象姓名") @RequestParam(value = "patientName", required = false) String patientName,
            @ApiParam(name = "phone", value = "发起工单的居民的联系方式") @RequestParam(value = "phone", required = false) String phone,
            @ApiParam(name = "status", value = "工单状态") @RequestParam(value = "status", required = false) Integer status,
            @ApiParam(name = "patientType", value = "居民类型") @RequestParam(value = "patientType", required = false) String patientType,
            @ApiParam(name = "page", value = "分页大小", required = true, defaultValue = "1") @RequestParam(value = "page") int page,
            @ApiParam(name = "size", value = "页码", required = true, defaultValue = "15") @RequestParam(value = "size") int size) {
        try{
            JSONObject result = doctorDoorCoachOrderService.queryBriefList(dispatcher,hospital, orderNumber, patientName, phone, status,patientType, page, size);
            if (result.getIntValue(ResponseContant.resultFlag) == ResponseContant.fail) {
                return baseController.error(-1,result.getString(ResponseContant.resultMsg));
            }
            int count = result.getIntValue(ResponseContant.count);
            JSONObject object = new JSONObject();
            object.put("total",count);
            object.put("detailModelList",result.get(ResponseContant.resultMsg));
            object.put("currPage",page);
            object.put("pageSize",size);
            return baseController.write(200,"查询成功","data",object);
        }catch (Exception e){
            return baseController.errorResult(e);
        }
    }
    @GetMapping(value = "queryDoctorList")
    @ApiOperation(value = "服务人员列表(医生列表)")
    public String queryDoctorList(
            @ApiParam(name = "hospital", value = "调度员所在的机构code") @RequestParam(value = "hospital", required = false) String hospital,
            @ApiParam(name = "doctorName", value = "医生姓名") @RequestParam(value = "doctorName", required = false) String doctorName,
            @ApiParam(name = "status", value = "医生接单状态,状态为全部时不传") @RequestParam(value = "status", required = false) String status,
            @ApiParam(name = "patient", value = "居民code") @RequestParam(value = "patient", required = false) String patient,
            @ApiParam(name = "page", value = "分页大小", required = true, defaultValue = "1") @RequestParam(value = "page") int page,
            @ApiParam(name = "size", value = "页码", required = true, defaultValue = "15") @RequestParam(value = "size") int size) {
        try{
            doctorDoorCoachOrderService.initDoorStatus(hospital);
            JSONObject result = doctorDoorCoachOrderService.queryDoctorList(patient,hospital, doctorName, status, page, size);
            if (result.getIntValue(ResponseContant.resultFlag) == ResponseContant.fail) {
                return baseController.error(-1,result.getString(ResponseContant.resultMsg));
            }
            int count = result.getIntValue(ResponseContant.count);
            JSONObject object = new JSONObject();
            object.put("total",count);
            if (count > 0){
                object.put("detailModelList",result.get(ResponseContant.resultMsg));
            }else {
                List list = new ArrayList();
                object.put("detailModelList",list);
            }
            object.put("currPage",page);
            object.put("pageSize",size);
            return baseController.write(200,"查询成功","data",object);
        }catch (Exception e){
            return baseController.errorResult(e);
        }
    }
    @RequestMapping(value = "message/getWaitingMessages",method = RequestMethod.GET)
    @ApiOperation("调度员获取服务工单待接单列表")
    public String getWaitingMessages(
            @ApiParam(name = "message",value = "消息对象")
            @RequestParam(value = "message")String message,
            @ApiParam(name="types",value="消息类型")
            @RequestParam(value="types",required = true) String types,
            @ApiParam(name="page",value="第几页",defaultValue = "1")
            @RequestParam(value="page",required = true) String page,
            @ApiParam(name="pageSize",value="",defaultValue = "10")
            @RequestParam(value="pageSize",required = true) String pageSize){
        if (org.apache.commons.lang3.StringUtils.isBlank(pageSize)) {
            pageSize = "10";
        }
        if (page.equals("0")) {
            page = "1";
        }
        String[] split = org.apache.commons.lang3.StringUtils.split(types, ",");
        List<Integer> typeList = new ArrayList<>();
        for (String s : split) {
            typeList.add(Integer.valueOf(s));
        }
        SystemMessageDO message1 = new SystemMessageDO();
        com.alibaba.fastjson.JSONObject object = JSON.parseObject(message);
        message1.setOver(object.getString("over"));
        message1.setIsRead(object.get("read")+"");
        message1.setReceiver(getUID());
        try {
            org.json.JSONObject waitingMessages = doctorDoorCoachOrderService.getWaitingMessages(message1, types, Integer.valueOf(page), Integer.valueOf(pageSize));
            return baseController.write(200, "查询成功","data",waitingMessages);
        }catch (Exception e){
            return baseController.errorResult(e);
        }
    }
    @GetMapping(value = "getServiceDynamic")
    @ApiOperation(value = "管理员调度实时动态")
    public String getServiceDynamic(
            @ApiParam(name = "page", value = "分页大小", required = true) @RequestParam(value = "page") int page,
            @ApiParam(name = "size", value = "页码", required = true) @RequestParam(value = "size") int size) {
        try{
            return baseController.write(200,"查询成功","data",adminDoorCoachOrderService.getServiceDynamic(page,size));
        }catch (Exception e){
            return baseController.errorResult(e);
        }
    }
}

+ 1 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/device/DoctorDeviceController.java

@ -151,4 +151,5 @@ public class DoctorDeviceController extends BaseController {
		}
	}
}

+ 38 - 1
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/device/PadDeviceController.java

@ -75,12 +75,14 @@ public class PadDeviceController extends BaseController {
    @RequestMapping(value = "PatientDeviceList", method = RequestMethod.GET)
    public String getDeviceByPatient(@ApiParam(name = "patientName", value = "居民姓名", defaultValue = "张")
                                     @RequestParam(value = "patientName", required = false) String patientName,
                                     @ApiParam(name = "doctor", value = "doctor")
                                     @RequestParam(value = "doctor", required = false) String doctor,
                                     @ApiParam(name = "page", value = "分页起始id", defaultValue = "1")
                                     @RequestParam(value = "page", required = true) int page,
                                     @ApiParam(name = "pagesize", value = "每页条数", defaultValue = "10")
                                     @RequestParam(value = "pagesize", required = true) int pagesize) {
        try {
            List<Map<String , Object>> list = patientDeviceService.findDeviceFromAdmin(patientName, page, pagesize);
            List<Map<String , Object>> list = patientDeviceService.findDeviceFromAdmin(doctor,patientName, page, pagesize);
            return write(200, "查询成功", "data", list);
        } catch (Exception ex) {
@ -308,4 +310,39 @@ public class PadDeviceController extends BaseController {
        }
    }
    @RequestMapping(value ="addPatientSosContacts",method = RequestMethod.POST)
    @ApiOperation(value = "设备绑定添加联系人")
    public String addPatientSosContacts(@ApiParam(name = "patient", value = "patient", defaultValue = "patient")
                                           @RequestParam(value = "patient", required = true) String patient,
                                        @ApiParam(name = "jsonStr", value = "patient", defaultValue = "patient")
                                        @RequestParam(value = "jsonStr", required = true) String jsonStr,
                                        @ApiParam(name = "isUpdate", value = "是否有更新联系人 1是 0否", defaultValue = "isUpdate")
                                        @RequestParam(value = "isUpdate", defaultValue = "1") Integer isUpdate){
        try {
            JSONObject result = contactsService.addPatientSosContacts(patient,jsonStr,isUpdate);
            if (ResponseContant.success == result.getInteger(ResponseContant.resultFlag)){
                return success("添加成功");
            }
            else {
                return error(-1,result.getString(ResponseContant.resultMsg));
            }
        }catch (Exception e){
            return errorResult(e);
        }
    }
    @RequestMapping(value ="getPatientSafeArea",method = RequestMethod.GET)
    @ApiOperation(value = "获取患者安全区域")
    public String getPatientSafeArea(@ApiParam(name = "patient", value = "patient", defaultValue = "patient")
                                        @RequestParam(value = "patient", required = true) String patient){
        try {
            return write(200,"获取成功","data",contactsService.getPatientSafeArea(patient));
        }catch (Exception e){
            return errorResult(e);
        }
    }
}

+ 14 - 12
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/device/PatientDeviceController.java

@ -77,7 +77,7 @@ public class PatientDeviceController extends BaseController {
                                   @ApiParam(name = "date", value = "日期", defaultValue = "2021-08-24")
                                   @RequestParam(value = "date", required = true) String date){
        try {
            return write(200,"获取成功","data",patientDeviceService.gasConcentration(patientId,date));
            return write(200,"获取成功","data",patientDeviceService.gasConcentration(patientId,date,null));
        } catch (Exception ex) {
            return errorResult(ex);
        }
@ -324,29 +324,31 @@ public class PatientDeviceController extends BaseController {
    @ApiOperation("更新智能手环设备安全区域")
    @RequestMapping(value = "updateDeviceFenceArea",method = RequestMethod.GET)
    public String updateDeviceFenceArea(@ApiParam(name = "deviceSn",value = "设备sn码")
    public String updateDeviceFenceArea(@ApiParam(name = "patient",value = "患者")
                                        @RequestParam(value = "patient",required = false)String patient,
                                        @ApiParam(name = "deviceSn",value = "设备sn码")
                                        @RequestParam(value = "deviceSn",required = true)String deviceSn,
                                        @ApiParam(name = "fenceNO",value = "安全区编号")
                                        @RequestParam(value = "fenceNO",required = false)Integer fenceNO,
                                        @RequestParam(value = "fenceNO",defaultValue = "1",required = false)Integer fenceNO,
                                        @ApiParam(name = "enable",value = "0,1 是否启用")
                                        @RequestParam(value = "enable",required = false)String enable,
                                        @RequestParam(value = "enable",defaultValue = "1",required = false)String enable,
                                        @ApiParam(name = "name",value = "安全区名称")
                                        @RequestParam(value = "name",required = false)String name,
                                        @RequestParam(value = "name",defaultValue = "安全区域1",required = false)String name,
                                        @ApiParam(name = "freq",value = "0,触发一天;1,每日触发 ")
                                        @RequestParam(value = "freq",required = false)String freq,
                                        @ApiParam(name = "time_begin",value = "目标时间与当日0点之间相差的秒数 ")
                                        @RequestParam(value = "freq",defaultValue = "1",required = false)String freq,
                                        @ApiParam(name = "time_begin",defaultValue = "0",value = "目标时间与当日0点之间相差的秒数 ")
                                        @RequestParam(value = "time_begin",defaultValue = "0",required = false)String time_begin,
                                        @ApiParam(name = "time_end",value = "同上 ")
                                        @ApiParam(name = "time_end",defaultValue = "86400",value = "同上 ")
                                        @RequestParam(value = "time_end",defaultValue = "86400",required = false)String time_end,
                                        @ApiParam(name = "safe_area",value = "lon1,lat1;lon2,lat2; 5个坐标 形成一个封闭区域  A;B;C;D;A ")
                                        @RequestParam(value = "safe_area",required = false)String safe_area,
                                        @ApiParam(name = "clear",value = "删除标志,删除传1")
                                        @ApiParam(name = "clear",value = "删除标志,删除传1")
                                        @RequestParam(value = "clear",required = false)String clear
                                        ){
        try {
            return write(200,"获取成功","data",patientDeviceService.updateDeviceFenceArea(deviceSn, fenceNO, enable, name, freq, time_begin, time_end, safe_area, clear));
            return write(200,"设置成功","data",patientDeviceService.updateDeviceFenceArea(patient,deviceSn, fenceNO, enable, name, freq, time_begin, time_end, safe_area, clear));
        }catch (Exception e){
            return errorResult(e);
            return error(-1,"安全区域设置失败");
        }
    }
@ -429,7 +431,7 @@ public class PatientDeviceController extends BaseController {
        }
    }
    @ApiOperation("获取设备详情信息")
    @ApiOperation("获取设备详情数据 --设备可多人绑定查询数据时与patient无关")
    @RequestMapping(value = "getPatientDeviceData",method = RequestMethod.GET)
    public String getPatientDeviceData(@ApiParam(name="patient")
                                       @RequestParam(value = "patient")String patient,

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

@ -340,7 +340,7 @@ public class SecurityMonitoringOrderEndpoint extends EnvelopRestEndpoint {
                                            @ApiParam(name = "topicItem", value = "专题code,关联security_topic_dict字典", required = false)
                                            @RequestParam(value = "topicItem") String topicItem) {
        try {
            return ObjEnvelop.getSuccess( "查询成功", securityMonitoringOrderService.patientSignTopicInfo(null,patient,topicItem));
            return ObjEnvelop.getSuccess( "查询成功", securityMonitoringOrderService.patientSignTopicInfo(null,patient,topicItem,null));
        } catch (Exception e) {
            return failedObjEnvelopException2(e);
        }

+ 61 - 4
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/statistics/DetectionPlatformEndpoint.java

@ -1,8 +1,13 @@
package com.yihu.jw.care.endpoint.statistics;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.care.endpoint.BaseController;
import com.yihu.jw.care.service.device.PatientDeviceService;
import com.yihu.jw.care.service.statistics.DetectionPlatformService;
import com.yihu.jw.restmodel.ResponseContant;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.ListEnvelop;
import com.yihu.jw.restmodel.web.ObjEnvelop;
import com.yihu.jw.restmodel.web.PageEnvelop;
@ -11,10 +16,7 @@ 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.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
/***
 * @ClassName: DetectionPlatformEndpoint
@ -30,6 +32,8 @@ public class DetectionPlatformEndpoint extends EnvelopRestEndpoint {
    @Autowired
    private DetectionPlatformService platformService;
    @Autowired
    private PatientDeviceService patientDeviceService;
    @GetMapping(value = "getHealthMonitoringListNew")
    @ApiOperation(value = "体征监测/安防监护")
@ -99,5 +103,58 @@ public class DetectionPlatformEndpoint extends EnvelopRestEndpoint {
        }
    }
    @GetMapping(value = "nightRecordList")
    @ApiOperation(value = "根据设备sn码查询起夜记录")
    public ListEnvelop nightRecordList(            @ApiParam(name="deviceSn",value = "deviceSn") @RequestParam(required = true) String deviceSn){
        try {
            return success("查询成功",200, platformService.nightRecordList(deviceSn));
        }catch (Exception e){
            return failedListEnvelopException(e);
        }
    }
    @ApiOperation("获取设备详情信息")
    @RequestMapping(value = "getPatientDeviceDetail",method = RequestMethod.GET)
    public Envelop getPatientDeviceDetail(@ApiParam(name="patient")
                                         @RequestParam(value = "patient")String patient,
                                          @ApiParam(name="deviceSN")
                                         @RequestParam(value = "deviceSN")String deviceSn,
                                          @ApiParam(name="day",value = "yyyy-mm-dd")
                                         @RequestParam(value = "day",required = false)String day){
        try {
            org.json.JSONObject result = patientDeviceService.getPatientDeviceDetail(patient,deviceSn,day);
            if (result.getInt(ResponseContant.resultFlag)==ResponseContant.success){
                return success(JSON.parseObject(result.getString(ResponseContant.resultMsg)));
            }else {
                return success(result.getString(ResponseContant.resultMsg), -1);
            }
        }catch (Exception e){
            return failedObjEnvelopException(e);
        }
    }
    @ApiOperation("获取设备详情数据 --设备可多人绑定查询数据时与patient无关")
    @GetMapping(value = "getPatientDeviceData")
    public Envelop getPatientDeviceData(@ApiParam(name="patient")
                                       @RequestParam(value = "patient")String patient,
                                       @ApiParam(name="deviceSN")
                                       @RequestParam(value = "deviceSN")String deviceSn,
                                       @ApiParam(name="page")
                                       @RequestParam(value = "page")Integer page,
                                       @ApiParam(name="pageSize")
                                       @RequestParam(value = "pageSize")Integer pageSize){
        try {
            org.json.JSONObject result = patientDeviceService.getPatientDeviceData(patient,deviceSn,page,pageSize);
            if (result.getInt(ResponseContant.resultFlag)==ResponseContant.success){
                return success(JSON.parseObject(result.getString(ResponseContant.resultMsg)));
            }else {
                return success(result.getString(ResponseContant.resultMsg), -1);
            }
        }catch (Exception e){
            return failedObjEnvelopException(e);
        }
    }
}

+ 11 - 9
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/third/device/PDeviceController.java

@ -105,29 +105,31 @@ public class PDeviceController extends BaseController {
    @ApiOperation("更新智能手环设备安全区域")
    @RequestMapping(value = "updateDeviceFenceArea",method = RequestMethod.GET)
    public String updateDeviceFenceArea(@ApiParam(name = "deviceSn",value = "设备sn码")
    public String updateDeviceFenceArea(@ApiParam(name = "patient",value = "患者")
                                        @RequestParam(value = "patient",required = false)String patient,
                                        @ApiParam(name = "deviceSn",value = "设备sn码")
                                        @RequestParam(value = "deviceSn",required = true)String deviceSn,
                                        @ApiParam(name = "fenceNO",value = "安全区编号")
                                        @RequestParam(value = "fenceNO",required = false)Integer fenceNO,
                                        @RequestParam(value = "fenceNO",defaultValue = "1",required = false)Integer fenceNO,
                                        @ApiParam(name = "enable",value = "0,1 是否启用")
                                        @RequestParam(value = "enable",required = false)String enable,
                                        @RequestParam(value = "enable",defaultValue = "1",required = false)String enable,
                                        @ApiParam(name = "name",value = "安全区名称")
                                        @RequestParam(value = "name",required = false)String name,
                                        @RequestParam(value = "name",defaultValue = "安全区域1",required = false)String name,
                                        @ApiParam(name = "freq",value = "0,触发一天;1,每日触发 ")
                                        @RequestParam(value = "freq",required = false)String freq,
                                        @RequestParam(value = "freq",defaultValue = "1",required = false)String freq,
                                        @ApiParam(name = "time_begin",defaultValue = "0",value = "目标时间与当日0点之间相差的秒数 ")
                                        @RequestParam(value = "time_begin",required = false)String time_begin,
                                        @RequestParam(value = "time_begin",defaultValue = "0",required = false)String time_begin,
                                        @ApiParam(name = "time_end",defaultValue = "86400",value = "同上 ")
                                        @RequestParam(value = "time_end",required = false)String time_end,
                                        @RequestParam(value = "time_end",defaultValue = "86400",required = false)String time_end,
                                        @ApiParam(name = "safe_area",value = "lon1,lat1;lon2,lat2; 5个坐标 形成一个封闭区域  A;B;C;D;A ")
                                        @RequestParam(value = "safe_area",required = false)String safe_area,
                                        @ApiParam(name = "clear",value = "删除标志,删除传1")
                                        @RequestParam(value = "clear",required = false)String clear
                                        ){
        try {
            return write(200,"获取成功","data",patientDeviceService.updateDeviceFenceArea(deviceSn, fenceNO, enable, name, freq, time_begin, time_end, safe_area, clear));
            return write(200,"设置成功","data",patientDeviceService.updateDeviceFenceArea(patient,deviceSn, fenceNO, enable, name, freq, time_begin, time_end, safe_area, clear));
        }catch (Exception e){
            return errorResult(e);
            return error(-1,"安全区域设置失败");
        }
    }
}

+ 32 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/admin/AdminDoorCoachOrderService.java

@ -0,0 +1,32 @@
package com.yihu.jw.care.service.admin;
import com.yihu.jw.care.dao.lifeCare.BaseAdminServiceDynamicDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
/***
 * @ClassName: AdminDoorCoachOrderService
 * @Description:
 * @Auther: shi kejing
 * @Date: 2021/8/31 16:40
 */
@Service
public class AdminDoorCoachOrderService {
    @Autowired
    private BaseAdminServiceDynamicDao baseAdminServiceDynamicDao;
    @Autowired
    private JdbcTemplate jdbcTemplate;
    public List<Map<String , Object>> getServiceDynamic(Integer page,Integer size){
        size = (page-1)*size;
        String sql = "SELECT * FROM base_admin_service_dynamic ORDER BY create_time DESC LIMIT "+page+","+size+"";
        List<Map<String , Object>> list = jdbcTemplate.queryForList(sql);
        return list;
    }
}

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

@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.yihu.jw.care.dao.assistance.EmergencyAssistanceDao;
import com.yihu.jw.care.dao.device.BaseYxDeviceIndexDao;
import com.yihu.jw.care.dao.device.PatientDeviceDao;
import com.yihu.jw.care.dao.security.BaseEmergencyWarnLogDao;
import com.yihu.jw.care.dao.security.EmergencyWarnConclusionDao;
@ -18,6 +19,7 @@ import com.yihu.jw.care.service.device.PatientDeviceService;
import com.yihu.jw.care.service.family.PatientFamilyMemberService;
import com.yihu.jw.care.util.ConstantUtil;
import com.yihu.jw.care.util.CountDistance;
import com.yihu.jw.care.util.MessageUtil;
import com.yihu.jw.doctor.dao.BaseDoctorDao;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
import com.yihu.jw.entity.base.im.ConsultDo;
@ -25,6 +27,7 @@ import com.yihu.jw.entity.base.im.ConsultTeamDo;
import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.entity.care.assistance.EmergencyAssistanceDO;
import com.yihu.jw.entity.care.contacts.PatientSosContactsDO;
import com.yihu.jw.entity.care.device.BaseYxDeviceIndex;
import com.yihu.jw.entity.care.device.DevicePatientDevice;
import com.yihu.jw.entity.care.securitymonitoring.BaseEmergencyWarnLogDO;
import com.yihu.jw.entity.care.securitymonitoring.EmergencyWarnConclusionDO;
@ -39,6 +42,7 @@ import com.yihu.jw.restmodel.ResponseContant;
import com.yihu.jw.restmodel.emergency.EmergencyOrderVO;
import com.yihu.jw.restmodel.web.PageEnvelop;
import com.yihu.jw.util.common.IdCardUtil;
import com.yihu.jw.util.common.LatitudeUtils;
import com.yihu.jw.util.date.DateUtil;
import com.yihu.jw.util.http.HttpClientUtil;
import com.yihu.mysql.query.BaseJpaService;
@ -105,6 +109,10 @@ public class EmergencyAssistanceService extends BaseJpaService<EmergencyAssistan
    private BaseEmergencyWarnLogDao logDao;
    @Autowired
    private ContactsService contactsService;
    @Autowired
    private MessageUtil messageUtil;
    @Autowired
    private BaseYxDeviceIndexDao yxDeviceIndexDao;
    /**
     * 获取百度天气
@ -230,6 +238,9 @@ public class EmergencyAssistanceService extends BaseJpaService<EmergencyAssistan
        for (BaseDoctorDO doctorDO:doctorDOS){
            try {
                if (StringUtils.isNotBlank(doctorDO.getMobile())){
                    messageUtil.sendTXYSJson("1099807",doctorDO.getMobile(),assistanceDO.getPatientName(),"紧急呼叫");
                }
                imUtill.sendMDTSocketMessageToDoctor(doctorDO.getId(),message.toString());
            }catch (Exception e){
                e.printStackTrace();
@ -255,7 +266,7 @@ public class EmergencyAssistanceService extends BaseJpaService<EmergencyAssistan
        }
        emergencyOrderVO.setId(assistanceDO.getId());
        //手环发起时坐标已取
        if (assistanceDO.getOrderSource()==2){//手环发起的紧急救助获取手环坐标
        if (assistanceDO.getOrderSource()==2){//手环发起的紧急救助实时获取手环坐标
            try {
                List<DevicePatientDevice> devicePatientDeviceDos = patientDeviceDao.findByUserAndCategoryCode(assistanceDO.getPatient(),"4");
                if (devicePatientDeviceDos.size()>0){
@ -281,6 +292,20 @@ public class EmergencyAssistanceService extends BaseJpaService<EmergencyAssistan
            }catch (Exception e){
            }
        }else if (assistanceDO.getOrderSource()==4){//拐杖
            if (StringUtils.isNotBlank(assistanceDO.getDeviceSn())){
                List<BaseYxDeviceIndex> points = yxDeviceIndexDao.findBySn(assistanceDO.getDeviceSn());
                if (points.size()>0){
                    double lat = Double.parseDouble(points.get(0).getLat());
                    double lon = Double.parseDouble(points.get(0).getLon());
                    if (!(lat==0.0&&lon==0.0)){
                        assistanceDO.setServeAddress(LatitudeUtils.getLocationAddress(lat+"",lon+""));
                        assistanceDO.setServeLat(lat+"");
                        assistanceDO.setServeLon(lon+"");
                        assistanceDO = emergencyAssistanceDao.save(assistanceDO);
                    }
                }
            }
        }
        BasePatientDO patientDO = patientDao.findById(assistanceDO.getPatient());
        Integer statustemp = Integer.valueOf(assistanceDO.getStatus()+"");
@ -343,22 +368,26 @@ public class EmergencyAssistanceService extends BaseJpaService<EmergencyAssistan
        JSONArray familyArr =  familyMemberService.getPatientMembers(assistanceDO.getPatient(),null,null,null,null);
        String emeCallPhone = "";
        if (assistanceDO.getOrderSource()!=1){//设备发起工单
            String category = assistanceDO.getOrderSource()==2?"4":"7";
            List<DevicePatientDevice> devices = patientDeviceDao.findByUserAndCategoryCode(assistanceDO.getPatient(),category);
            if (devices.size()>0){
//            String category = assistanceDO.getOrderSource()==2?"4":"7";
            //v1.0紧急联系人设备共用从数据库中获取
            String sql = " select sos_phone from base_patient_sos_contacts where patient='"+assistanceDO.getPatient()+"' order by phone_seqid asc ";
            List<String> nums = jdbcTemplate.queryForList(sql,String.class);
//            List<DevicePatientDevice> devices = patientDeviceDao.findByUserAndCategoryCode(assistanceDO.getPatient(),category);
            if (nums.size()>0){
                try {
                    com.alibaba.fastjson.JSONObject jsonTmp = patientDeviceService.getAqgDeviceInfo(devices.get(0).getDeviceSn());
                    if (jsonTmp.containsKey("sos_numbers")){//取第一个号码
                        JSONArray array = jsonTmp.getJSONArray("sos_numbers");
                        for (int i=0;i<array.size();i++){
                            JSONObject obj = array.getJSONObject(i);
                            if (obj.getBooleanValue("dial_flag")){
                                emeCallPhone = obj.getString("num");
                                break;
                            }
                        }
                    }
                    emeCallPhone = nums.get(0);
//                    com.alibaba.fastjson.JSONObject jsonTmp = patientDeviceService.getAqgDeviceInfo(devices.get(0).getDeviceSn());
//                    if (jsonTmp.containsKey("sos_numbers")){//取第一个号码
//                        JSONArray array = jsonTmp.getJSONArray("sos_numbers");
//                        for (int i=0;i<array.size();i++){
//                            JSONObject obj = array.getJSONObject(i);
//                            if (obj.getBooleanValue("dial_flag")){
//                                emeCallPhone = obj.getString("num");
//                                break;
//                            }
//                        }
//
//                    }
                    System.out.println("1");
                }catch (Exception e){
                    e.printStackTrace();

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

@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.care.dao.contacts.BasePatientContactsOrgDao;
import com.yihu.jw.care.dao.contacts.PatientSosContactsDao;
import com.yihu.jw.care.dao.device.PatientDeviceDao;
import com.yihu.jw.care.dao.device.PatientSafeAreaDao;
import com.yihu.jw.care.dao.family.PatientFamilyMemberDao;
import com.yihu.jw.care.service.device.NetworkCardService;
import com.yihu.jw.care.service.device.PatientDeviceService;
@ -17,6 +18,7 @@ import com.yihu.jw.entity.base.patient.BasePatientFamilyMemberDO;
import com.yihu.jw.entity.care.contacts.BasePatientContactsOrgDO;
import com.yihu.jw.entity.care.contacts.PatientSosContactsDO;
import com.yihu.jw.entity.care.device.DevicePatientDevice;
import com.yihu.jw.entity.care.device.PatientSafeAreaDO;
import com.yihu.jw.org.dao.BaseOrgDao;
import com.yihu.jw.patient.dao.BasePatientDao;
import com.yihu.jw.restmodel.ResponseContant;
@ -66,6 +68,8 @@ public class ContactsService {
    private PatientSosContactsDao sosContactsDao;
    @Autowired
    private NetworkCardService networkCardService;
    @Autowired
    private PatientSafeAreaDao safeAreaDao;
    /**
     * 查找居民联系服务站
@ -202,7 +206,7 @@ public class ContactsService {
        List<Map<String,Object>> result = new ArrayList<>();
        String sql =  "select * from base_org org  " ;
        if (StringUtils.isNotBlank(patient)){
            sql +=" LEFT JOIN ( " +
            sql +=" Inner JOIN ( " +
                    "SELECT  DISTINCT pack.org_code,'1' as signFlag FROM  base_service_package_sign_record sr,  base_service_package_record r, " +
                    " base_service_package pack  WHERE  sr.id = r.sign_id and sr.status=1 and sr.patient = '"+patient+"'" +
                    "  and r.service_package_id = pack.id  " +
@ -276,6 +280,7 @@ public class ContactsService {
                contactsDO = new PatientSosContactsDO();
                contactsDO.setPhoneSeqid(1==seqid?2:1);
            }
            contactsDO.setUpdateInfo(null);
            contactsDO.setDel(1);
            contactsDO.setPatient(patient);
            contactsDO.setSosName(name);
@ -290,6 +295,57 @@ public class ContactsService {
    }
    /**
     *设备绑定添加居民紧急联系人
     */
    @Transactional(rollbackFor = Exception.class)
    public JSONObject addPatientSosContacts(String patient,String jsonStr,Integer isUpdate) throws Exception {
        JSONObject result = new JSONObject();
        List<PatientSosContactsDO> list = sosContactsDao.findByPatientOrderByUpdateTimeDesc(patient);
        JSONArray jsonArray = JSONArray.parseArray(jsonStr);
        if (0==isUpdate){
            sosContactsDao.updateByPatient("updateByPatient");
        }else {
            for (int i=0;i<jsonArray.size();i++){
                list = sosContactsDao.findByPatientAndDel(patient,1);
                JSONObject obj = jsonArray.getJSONObject(i);
                String num = obj.getString("num");
                String name = obj.getString("name");
                String relation = obj.getString("relation");
                Integer seqid=0;
                if (list.size()>=2){
                    List<String> sosContacts =list.stream().map(PatientSosContactsDO::getSosPhone).collect(Collectors.toList());
                    if (!sosContacts.contains(num)){
                        result.put(ResponseContant.resultFlag,ResponseContant.fail);
                        result.put(ResponseContant.resultMsg,"该用户紧急联系人已上限");
                        return result;
                    }
                }
                if (list.size()>0){
                    seqid = list.get(0).getPhoneSeqid();
                }
                PatientSosContactsDO contactsDO = sosContactsDao.findByPatientAndSosPhone(patient,num);
                if(null==contactsDO){
                    contactsDO = new PatientSosContactsDO();
                    contactsDO.setPhoneSeqid(1==seqid?2:1);
                }
                contactsDO.setUpdateInfo(null);
                contactsDO.setDel(1);
                contactsDO.setPatient(patient);
                contactsDO.setSosName(name);
                contactsDO.setSosPhone(num);
                contactsDO.setRelation(Integer.parseInt(relation));
                contactsDO.setSuccessFlag(0);
                sosContactsDao.save(contactsDO);
            }
        }
        result.put(ResponseContant.resultFlag,ResponseContant.success);
        result.put(ResponseContant.resultMsg,"修改成功");
        return result;
    }
    public void delSosNumber(List<Map<String,Object>> sims,String patient,String[] numTmp) {
        String delSuccess = "";//白名单删除号码
        for (Map<String,Object> simTmp : sims) {
@ -366,4 +422,32 @@ public class ContactsService {
        sosContactsDao.save(modify);
    }
    public JSONObject getPatientSafeArea(String patient){
        JSONObject result = new JSONObject();
        result.put("currentPositioning",null);       //当前定位
        result.put("currentLat",null);       //当前定位
        result.put("currentLon",null);
        List<PatientSafeAreaDO> safes =  safeAreaDao.findByPatient(patient);
        result.put("fences",safes);
        Double dulat = null;
        Double dulon = null;
        BasePatientDO patientDO = basePatientDao.findById(patient);
        String points = patientDO.getLatLon();
        if (StringUtils.isNotBlank(points)){
            String[] pointss = points.split(",");
            if (2==pointss.length){
                if (StringUtils.isNotBlank(pointss[0])){
                    dulat = Double.parseDouble(pointss[0]);
                }
                if (StringUtils.isNotBlank(pointss[1])){
                    dulon = Double.parseDouble(pointss[1]);
                }
                result.put("currentPositioning",LatitudeUtils.getLocationAddress(dulat+"",dulon+""));
                result.put("currentLat",dulat);
                result.put("currentLon",dulon);
            }
        }
        return result;
    }
}

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

@ -4,27 +4,23 @@ package com.yihu.jw.care.service.device;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.yihu.jw.care.config.AqgConfig;
import com.yihu.jw.care.dao.device.BaseSleepPlanDao;
import com.yihu.jw.care.dao.device.DeviceDao;
import com.yihu.jw.care.dao.device.DeviceDetailDao;
import com.yihu.jw.care.dao.device.PatientDeviceDao;
import com.yihu.jw.care.dao.device.*;
import com.yihu.jw.care.service.assistance.EmergencyAssistanceService;
import com.yihu.jw.care.service.contacts.ContactsService;
import com.yihu.jw.care.service.security.SecurityMonitoringOrderService;
import com.yihu.jw.care.service.wechat.WeiXinAccessTokenUtils;
import com.yihu.jw.care.util.ConcealUtil;
import com.yihu.jw.care.util.CountDistance;
import com.yihu.jw.care.util.MyJdbcTemplate;
import com.yihu.jw.doctor.dao.BaseDoctorDao;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.entity.care.device.BaseSleepPlan;
import com.yihu.jw.entity.care.device.Device;
import com.yihu.jw.entity.care.device.DeviceDetail;
import com.yihu.jw.entity.care.device.DevicePatientDevice;
import com.yihu.jw.entity.care.device.*;
import com.yihu.jw.patient.dao.BasePatientDao;
import com.yihu.jw.restmodel.ResponseContant;
import com.yihu.jw.util.common.GpsUtil;
import com.yihu.jw.util.common.IdCardUtil;
import com.yihu.jw.util.common.LatitudeUtils;
import com.yihu.jw.util.date.DateUtil;
import com.yihu.jw.util.entity.ServiceException;
import com.yihu.jw.util.healthIndex.HealthIndexUtil;
@ -61,6 +57,7 @@ import javax.annotation.PostConstruct;
import java.text.MessageFormat;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
@Component
@Transactional(rollbackFor = Exception.class)
@ -114,6 +111,10 @@ public class PatientDeviceService extends BaseJpaService<DevicePatientDevice, Pa
    private EmergencyAssistanceService emergencyAssistanceService;
    @Autowired
    private SecurityMonitoringOrderService securityMonitoringOrderService;
    @Autowired
    private CountDistance countDistance;
    @Autowired
    private PatientSafeAreaDao safeAreaDao;
    @PostConstruct
    public void init() {
@ -172,9 +173,15 @@ public class PatientDeviceService extends BaseJpaService<DevicePatientDevice, Pa
     * 燃气浓度
     * @param patient
     */
    public List<Map<String,Object>> gasConcentration(String patient,String date){
        String sql = "SELECT r.value,r.create_time from wlyy_patient_device pd,base_device_health_index r " +
                "WHERE pd.device_sn = r.device_sn and pd.`user` = '"+patient+"' ";
    public List<Map<String,Object>> gasConcentration(String patient,String date,String deviceSn){
        String sql = "SELECT r.value,CAST(DATE_FORMAT(r.create_time,'%Y-%m-%d %H:%i:%S') as char) create_time  from wlyy_patient_device pd,base_device_health_index r " +
                "WHERE pd.device_sn = r.device_sn  ";
        if (StringUtils.isNotBlank(patient)){
            sql +=" and pd.`user` = '"+patient+"' ";
        }
        if (StringUtils.isNotBlank(deviceSn)){
            sql +=" and r.device_sn = '"+deviceSn+"' ";
        }
        sql += " and pd.category_code='14' and r.create_time>'"+date+" 00:00:00' and r.create_time<'"+date+" 23:59:59'  ORDER BY r.create_time desc ";
        List<Map<String,Object>> list = jdbcTemplate.queryForList(sql);
@ -209,6 +216,11 @@ public class PatientDeviceService extends BaseJpaService<DevicePatientDevice, Pa
        String userType = devicePatientDevice.getUserType();
        String sosAddress = null;
        String url ="";
        String sql = " select count(id) from wlyy_patient_device where user='"+devicePatientDevice.getUser()+"' and  device_sn='sn' and del=0 ";
        if (jdbcTemplate.queryForObject(sql,Integer.class)>0){
            return -5;
        }
        if (userType == null) {
            userType = "-1";
            devicePatientDevice.setUserType("-1");
@ -247,7 +259,7 @@ public class PatientDeviceService extends BaseJpaService<DevicePatientDevice, Pa
                //V1.0.0    监控器、报警器、燃气传感器 烟雾传感器支持一个设备绑定多个居民
                //监控器 12   报警器 7  14  15
                if ("12".equals(type) || "14".equals(type) || "15".equals(type) || "7".equals(type) ) {
                if ("12".equals(type) || "14".equals(type) || "15".equals(type)) {
                    if (devicePatientDevice.getUser().equals(device.getUser())) {
                        System.out.println("居民已经绑定此sn码:"+sn);
                        return -5;
@ -376,7 +388,7 @@ public class PatientDeviceService extends BaseJpaService<DevicePatientDevice, Pa
        return page;
    }
    public List<Map<String , Object>> findDeviceFromAdmin(String patientName, int page, int pageSize) {
    public List<Map<String , Object>> findDeviceFromAdmin(String doctor,String patientName, int page, int pageSize) {
        String sql = "select Distinct p.id,p.`name`,dd.photo,pd.device_id deviceId,pd.category_code categoryCode,pd.device_name deviceName, " +
                " pd.device_sn deviceSn,pd.czrq,pd.doctor,pd.doctor_name doctorName,pd.agent,pd.agent_name agentName " +
                " from wlyy_patient_device pd,wlyy_devices wd,base_patient p,dm_device dd where p.id = pd.`user`  and pd.del = 0 " +
@ -384,6 +396,12 @@ public class PatientDeviceService extends BaseJpaService<DevicePatientDevice, Pa
        if (StringUtils.isNotBlank(patientName)){
            sql += " AND (p.`name` LIKE '%" + patientName +"%' or  p.idcard LIKE '%" + patientName + "%') ";
        }
        if (StringUtils.isNotBlank(doctor)){//著老远查看时之查看签约居民的绑定
            sql += " and EXISTS (SELECT sr.patient from base_service_package_sign_record sr,base_service_package_record r,base_team_member m " +
                    " WHERE sr.patient = p.id 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') ";
        }
        sql += " ORDER BY pd.czrq DESC LIMIT "+ (page-1)*pageSize +" , " + pageSize + " ";
        List<Map<String , Object>> list = jdbcTemplate.queryForList(sql);
        return list;
@ -898,63 +916,156 @@ public class PatientDeviceService extends BaseJpaService<DevicePatientDevice, Pa
            result.put(ResponseContant.resultMsg,"未查询到该设备");
        }else {
            DevicePatientDevice device = devices.get(0);
            if (!patient.equals(device.getUser())){
                result.put(ResponseContant.resultFlag,ResponseContant.fail);
                result.put(ResponseContant.resultMsg,"居民未绑定该设备");
            }else {
                String sql = "select dd.photo,pd.device_sn,dd.brands,dd.category_code,dd.model,pd.device_name,date_format(pd.czrq,'%Y-%m-%d %H:%i:%S' ) deviceTime " +
                        "from dm_device dd INNER JOIN wlyy_patient_device pd on dd.category_code = pd.category_code INNER JOIN wlyy_devices wd on dd.model = wd.device_model and pd.device_sn = wd.device_code \n" +
                        "where 1=1 and  pd.del=0 and pd.device_sn ='"+deviceSn+"' group by pd.user";
                Map<String,Object> devInfo = jdbcTemplate.queryForMap(sql);
                devInfo.put("patient",patient);
                devInfo.put("patientName",patientDO.getName());
                devInfo.put("sosContactsDOS",new ArrayList<>());
                if ("4".equals(device.getCategoryCode())||"7".equals(device.getCategoryCode())){
                    devInfo.put("sosContactsDOS",contactsService.getPatientSosContacts(patient));
                }
                com.alibaba.fastjson.JSONObject devInfoObj = JSON.parseObject(JSON.toJSONString(devInfo, SerializerFeature.WriteMapNullValue));
                switch (device.getCategoryCode()){
                    case "1"://血压设备
                        break;
                    case "2"://血糖设备
                        break;
                    case "4"://手表 围栏与轨迹
                        devInfoObj =  securityMonitoringOrderService.patientSignTopicInfo(devInfoObj,patient,"preventLost");
//            if (!patient.equals(device.getUser())){
//                result.put(ResponseContant.resultFlag,ResponseContant.fail);
//                result.put(ResponseContant.resultMsg,"居民未绑定该设备");
//            }else {
            String sql = "select dd.photo,GROUP_CONCAT(DISTINCT p.name) as patientName,pd.device_sn,dd.brands,dd.category_code,dd.model,pd.device_name,date_format(pd.czrq,'%Y-%m-%d %H:%i:%S' ) deviceTime,wd.manufacturer,p.mobile,p.address,p.idcard,wd.device_type  " +
                    "from dm_device dd INNER JOIN wlyy_patient_device pd on dd.category_code = pd.category_code INNER JOIN base_patient p on p.id = pd.user " +
                    " INNER JOIN wlyy_devices wd on dd.model = wd.device_model and pd.device_sn = wd.device_code " +
                    "where 1=1 and  pd.del=0 and pd.device_sn ='" + deviceSn + "' group by pd.device_sn";
            Map<String, Object> devInfo = jdbcTemplate.queryForMap(sql);
            devInfo.put("patient", patient);
            devInfo.put("sosContactsDOS", new ArrayList<>());
            String dataSql = "";
            String recordSql = "";
            List<Map<String, Object>> dataList = new ArrayList<>();
            List<Map<String, Object>> recordList = new ArrayList<>();
            String addresSql = "SELECT sp.org_code orgCode,sp.org_name orgName FROM base_service_package_record spr , base_service_package sp\n" +
                    "WHERE spr.service_package_id = sp.id AND spr.patient = '" + patient + "' AND sp.org_code IS NOT NULL GROUP BY sp.org_code,sp.org_name";
            List<Map<String, Object>> addressList = jdbcTemplate.queryForList(addresSql);
            if (addressList.size() > 0) {
                devInfo.put("orgName", addressList.get(0).get("orgName"));
                devInfo.put("orgCode", addressList.get(0).get("orgCode"));
            } else {
                devInfo.put("orgName", "");
                devInfo.put("orgCode", "");
            }
                        //轨迹动态
                        break;
                    case "7"://报警器 紧急工单
                        break;
                    case "12"://监控 视频地址
                        com.alibaba.fastjson.JSONObject tmp =ysDeviceService.getDeviceLiveAddress(patient,deviceSn,1,null);
                        devInfoObj.put("monitorInfoStatus",tmp.getIntValue(ResponseContant.resultFlag));
                        if (tmp.getIntValue(ResponseContant.resultFlag) == ResponseContant.fail){
                            devInfoObj.put("monitorInfo",tmp.getString(ResponseContant.resultMsg));
                        }
                        else {
                            devInfoObj.put("monitorInfo",tmp.getJSONObject(ResponseContant.resultMsg));
                        }
                        break;
                    case "13"://睡眠带 获取当天睡眠详情
                        securityMonitoringOrderService.preventOutOfBed(devInfoObj,patient,false,day);
                        break;
                    case "14"://气感报警器 当天监测记录以及最新浓度
                        if (StringUtils.isBlank(day)){
                            day = DateUtil.getStringDateShort();
            if ("4".equals(device.getCategoryCode()) || "7".equals(device.getCategoryCode())|| "16".equals(device.getCategoryCode())) {
                devInfo.put("sosContactsDOS", contactsService.getPatientSosContacts(patient));
            }
            com.alibaba.fastjson.JSONObject devInfoObj = JSON.parseObject(JSON.toJSONString(devInfo, SerializerFeature.WriteMapNullValue));
            switch (device.getCategoryCode()) {
                case "1"://血压设备
                    dataSql = "SELECT record_date recordDate,value1,value2,value3,value4,value5,value6,value7,type FROM wlyy_patient_health_index WHERE device_sn = '" + deviceSn + "' AND del = 1 ORDER BY sort_date DESC LIMIT 10";
                    dataList = jdbcTemplate.queryForList(dataSql);
                    devInfoObj.put("data", dataList);
                    String ssql = "SELECT record_date recordDate,value1,value2,value3,value4,value5,value6,value7,type FROM wlyy_patient_health_index WHERE device_sn = '" + deviceSn + "' AND del = 1 AND status = 1 ";
                    String bloodPressureSql = ssql + " AND type = 1 ORDER BY sort_date DESC LIMIT 10";
                    dataList = jdbcTemplate.queryForList(bloodPressureSql);
                    devInfoObj.put("bloodPressure",dataList); //血压
                    break;
                case "2"://血糖设备
                    dataSql = "SELECT record_date recordDate,value1,value2,value3,value4,value5,value6,value7,type FROM wlyy_patient_health_index WHERE device_sn = '" + deviceSn + "' AND del = 1 ";
                    dataSql += " ORDER BY sort_date DESC LIMIT 10";
                    dataList = jdbcTemplate.queryForList(dataSql);
                    devInfoObj.put("data", dataList);    //血糖数据
                    recordSql = "SELECT record_date recordDate,value1,value2,value3,value4,value5,value6,value7,type FROM wlyy_patient_health_index WHERE device_sn = '" + deviceSn + "' AND del = 1  AND status = 1 ORDER BY sort_date DESC LIMIT 10";
                    dataList = jdbcTemplate.queryForList(recordSql);
                    devInfoObj.put("bloodSugar", dataList);          //血糖异常数据
                    break;
                case "4"://手表 围栏与轨迹
                    if (StringUtils.isBlank(day)) {
                        day = DateUtil.getStringDateShort();
                    }
                    devInfoObj = securityMonitoringOrderService.patientSignTopicInfo(devInfoObj, patient, "preventLost",deviceSn);
                    //轨迹动态
                    JSONArray locations = getX1Locations(deviceSn, day.replace("-", ""));
                    devInfoObj.put("routes", locations);
                    break;
                case "7"://报警器 紧急工单
                    break;
                case "12"://监控 视频地址
                    com.alibaba.fastjson.JSONObject tmp = ysDeviceService.getDeviceLiveAddress(patient, deviceSn, 1, null);
                    devInfoObj.put("monitorInfoStatus", tmp.getIntValue(ResponseContant.resultFlag));
                    if (tmp.getIntValue(ResponseContant.resultFlag) == ResponseContant.fail) {
                        devInfoObj.put("monitorInfo", tmp.getString(ResponseContant.resultMsg));
                    } else {
                        devInfoObj.put("monitorInfo", tmp.getJSONObject(ResponseContant.resultMsg));
                    }
                    break;
                case "13"://睡眠带 获取当天睡眠详情
                    securityMonitoringOrderService.preventOutOfBed(devInfoObj, patient, false, day);
                    break;
                case "14"://气感报警器 当天监测记录以及最新浓度
                    if (StringUtils.isBlank(day)) {
                        day = DateUtil.getStringDateShort();
                    }
                    List<Map<String, Object>> listTmp = gasConcentration(patient, day, deviceSn);
                    devInfoObj.put("monitorInfo", listTmp);
                    devInfoObj.put("day", day);
                    securityMonitoringOrderService.preventGasLeakage(devInfoObj, patient, false);
                    break;
                case "15"://烟感报警器 获取最新浓度
                    securityMonitoringOrderService.preventFire(devInfoObj, patient, deviceSn, false);
                    devInfoObj.put("day", DateUtil.getStringDateShort());
                    break;
                case "16":
                    if (StringUtils.isBlank(day)) {
                        day = DateUtil.getStringDateShort();
                    }
                    // 电子围栏
                    devInfoObj.put("safeAreaGz", securityMonitoringOrderService.getElectronicFence(device.getUser()));
                    // 行动轨迹
                    devInfoObj.put("actionTrack", securityMonitoringOrderService.getActionTrack(deviceSn,day));
                    //当前定位
                    List<Map<String , Object>> newList = securityMonitoringOrderService.getNewList(deviceSn,day);
                    String lat = "";
                    String lon = "";
                    if (newList.size() > 0) {
                        lat = (String) newList.get(0).get("lat");
                        lon = (String) newList.get(0).get("lon");
                        devInfoObj.put("currentPositioning", LatitudeUtils.getLocationAddress(lat,lon));    //当前定位
                    } else {  //当前地址为null,则获取居民坐标
                        newList = securityMonitoringOrderService.getPatientLatLon(deviceSn);
                        String safeArea = (String) newList.get(0).get("lat_lon");
                        String[] safeAreas = safeArea.split(";");
                        com.alibaba.fastjson.JSONArray fenceLocation = new com.alibaba.fastjson.JSONArray();
                        for (String area:safeAreas){
                            String[] areaPoint = area.split(",");
                            lat = areaPoint[0];
                            lon = areaPoint[1];
                        }
                        List<Map<String,Object>> listTmp = gasConcentration(patient,day);
                        devInfoObj.put("monitorInfo",listTmp);
                        devInfoObj.put("day",day);
                        securityMonitoringOrderService.preventGasLeakage(devInfoObj,patient,false);
                        break;
                    case "15"://烟感报警器 获取最新浓度
                        securityMonitoringOrderService.preventFire(devInfoObj,patient,false);
                        devInfoObj.put("day",DateUtil.getStringDateShort());
                        break;
                }
                    }
                    devInfoObj.put("currentPositioning",LatitudeUtils.getLocationAddress(lat,lon));       //当前定位
                    devInfoObj.put("currentLat",lat);       //当前定位
                    devInfoObj.put("currentLon",lon);       //当前定位
                    double dulat =Double.parseDouble(lat);
                    double dulon = Double.parseDouble(lon);
                    List<PatientSafeAreaDO> safeAreaDOS = safeAreaDao.findByPatient(device.getUser());
                    String safeArea=null;
                    if (safeAreaDOS.size()>0){
                        safeArea = safeAreaDOS.get(0).getSafeAreaGz();
                    }
                    String[] safeAreas = safeArea.split(";");
                    com.alibaba.fastjson.JSONArray fenceLocation = new com.alibaba.fastjson.JSONArray();
                    for (String area:safeAreas){
                        String[] areaPoint = area.split(",");
                        com.alibaba.fastjson.JSONObject positionTmp = new com.alibaba.fastjson.JSONObject();
                        Double areaLon = Double.parseDouble( areaPoint[0]);
                        Double areaLat = Double.parseDouble( areaPoint[1]);
//                                com.alibaba.fastjson.JSONObject positionTmp = gpsUtil.gcj02_To_Bd09(lat,lon);
                        positionTmp.put("lat",areaLat);
                        positionTmp.put("lon",areaLon);
                        fenceLocation.add(positionTmp);
                    }
                    if (!countDistance.isInPolygon(dulon,dulat,fenceLocation)){
//                        orderUtil.createSecurityOrder(sn,null,null,8,"1","yslkaqqy",null);
                        devInfoObj.put("isTrueFalse","已超出围栏范围");
                        devInfoObj.put("isNotAlarm","已报警");
                    } else {
                        devInfoObj.put("isTrueFalse","未超出围栏范围");
                        devInfoObj.put("isNotAlarm","未报警");
                    }
                    break;
            }
//        }
                result.put(ResponseContant.resultFlag,ResponseContant.success);
                result.put(ResponseContant.resultMsg,JSON.toJSONString(devInfoObj,SerializerFeature.WriteMapNullValue));
            }
        }
        return result;
    }
@ -970,50 +1081,128 @@ public class PatientDeviceService extends BaseJpaService<DevicePatientDevice, Pa
        List<DevicePatientDevice> devices = patientDeviceDao.findByDeviceSn(deviceSn);
        if (devices.size()>0){
            DevicePatientDevice device = devices.get(0);
            if (!patient.equals(device.getUser())){
                throw new Exception("居民未绑定该设备");
            }else{
//            if (!patient.equals(device.getUser())){
//                throw new Exception("居民未绑定该设备");
//            }else{
                switch (device.getCategoryCode()){
                    case "1"://血压设备
                        result = getHealthIndex(result,deviceSn,patient,page,pageSize);
                        result = getHealthIndex(result,1,deviceSn,patient,page,pageSize);
                        break;
                    case "2"://血糖设备
                        result = getHealthIndex(result,deviceSn,patient,page,pageSize);
                        result = getHealthIndex(result,2,deviceSn,patient,page,pageSize);
                        break;
                    default://安防设备
                        result  = getEmeWarn(result,deviceSn,patient,page,pageSize);
                        result  = getEmeWarn(result,deviceSn,null,page,pageSize);
                        break;
                }
            }
//            }
        }else {
            throw new Exception("设备未被绑定");
        }
        result.put(ResponseContant.resultFlag,ResponseContant.success);
        result.put(ResponseContant.resultMsg,JSON.toJSONString(result,SerializerFeature.WriteMapNullValue));
        return result;
    }
    public JSONObject getHealthIndex(JSONObject result,String deviceSn,String patient,Integer page,Integer pageSize){
        String sqlCount = "select count(id) from wlyy_patient_health_index where user ='"+patient+"' and device_sn='"+deviceSn+"' " +
                " and del=1 ";
        String sql = "select *,CAST(DATE_FORMAT(record_date,'%Y-%m-%d %H:%i:%S') as char) record_date from wlyy_patient_health_index where user ='"+patient+"' and device_sn='"+deviceSn+"' " +
                " and del=1 order by record_date desc limit "+page*pageSize+","+pageSize;
        long count = jdbcTemplate.queryForObject(sqlCount,long.class);
        List<Map<String,Object>> list = jdbcTemplate.queryForList(sql);
        for (Map<String,Object> tmp:list){
            Integer type =Integer.parseInt(tmp.get("type").toString());
            String value1 = tmp.get("value1")==null?null:tmp.get("value1").toString();
            String value2 = tmp.get("value2")==null?null:tmp.get("value2").toString();
            String value3 = tmp.get("value3")==null?null:tmp.get("value3").toString();
            String value4 = tmp.get("value4")==null?null:tmp.get("value4").toString();
            String value5 = tmp.get("value5")==null?null:tmp.get("value5").toString();
            String value6 = tmp.get("value6")==null?null:tmp.get("value6").toString();
            String value7 = tmp.get("value7")==null?null:tmp.get("value7").toString();
            com.alibaba.fastjson.JSONArray errorInfo = healthIndexUtil.verifyHealthIndex(type,value1,value2,value3,value4,value5,value6,value7);
            tmp.put("errorInfo",errorInfo);
    public JSONObject getHealthIndex(JSONObject result,Integer type,String deviceSn,String patient,Integer page,Integer pageSize){
        page = page>0?page-1:0;
        Long count =0l;
        PageRequest pageRequest = new PageRequest(page, pageSize);
        result.put("dataList",new ArrayList<>());
        if (type == 1) {
            List<Object> re = new ArrayList<>();
            String countSql =" select count(Distinct DATE_FORMAT(a.record_date,'%Y-%m-%d')) from wlyy_patient_health_index a where a.user = '"+patient+"' " +
                    " and a.type=1 and a.device_sn='"+deviceSn+"' and a.del = '1' ";
            count = jdbcTemplate.queryForObject(countSql,Long.class);
            String sql =" select DATE_FORMAT(a.record_date,'%Y-%m-%d') from wlyy_patient_health_index a where a.user = '"+patient+"' " +
                    " and a.type=1 and a.device_sn='"+deviceSn+"' and a.del = '1' group by DATE_FORMAT(a.record_date,'%Y-%m-%d') order by DATE_FORMAT(a.record_date,'%Y-%m-%d') desc limit "+pageRequest.getOffset()+" ,"+pageRequest.getPageSize();
            List<String> dateList = jdbcTemplate.queryForList(sql,String.class);
            if (dateList != null && dateList.size() > 0) {
                for (String dateString : dateList) {
                    com.alibaba.fastjson.JSONObject obj = healthIndexService.getPatientXT_Json(patient, dateString);
                    if (obj != null) {
                        re.add(obj);
                    }
                }
            }
            result.put("dataList",re);
        }
        else if (type == 2){
            JSONArray re = new JSONArray();
            // 排序
            String countSql =" select SUM(total) from ( select count(id ) total from wlyy_patient_health_index a where a.user = '"+patient+"' " +
                    " and a.type=2 and a.device_sn='"+deviceSn+"' and a.del = '1' GROUP BY user,value1,value2,value3,value4,value5,value6,value7,type,record_date,sort_date )A  ";
            count = jdbcTemplate.queryForObject(countSql,Long.class);
            String sql = "SELECT " +
                    "MIN(id) id" +
                    ", user" +
                    ",value1" +
                    ",value2" +
                    ",value3" +
                    ",value4" +
                    ",value5" +
                    ",value6" +
                    ",value7" +
                    ",device_sn" +
                    ",type" +
                    ",record_date" +
                    ",sort_date" +
                    ",czrq as createDate" +
                    ",min(czrq) czrq " +
                    " from wlyy_patient_health_index " +
                    " WHERE `user` = '" + patient + "' " +
                    " and type =" + type +" "+
                    " and device_sn='"+deviceSn+"' "+
                    " and del = '1' " +
                    " GROUP BY user,value1,value2,value3,value4,value5,value6,value7,type,record_date,sort_date " +
                    " order by record_date desc ,sort_date desc limit " + pageRequest.getOffset() + " ," + pageRequest.getPageSize() + " ";
            List<Map<String, Object>> list = jdbcTemplate.queryForList(sql);
            for (Map<String, Object> map : list) {
                JSONObject json = new JSONObject();
                json.put("id", map.get("id"));
                json.put("healthindexid", map.get("id"));
                json.put("patient", map.get("user"));
                json.put("value1", map.get("value1"));
                json.put("value2", map.get("value2"));
                json.put("value3", map.get("value3"));
                json.put("value4", map.get("value4"));
                json.put("value5", map.get("value5"));
                json.put("value6", map.get("value6"));
                json.put("value7", map.get("value7"));
                json.put("deviceSn", map.get("device_sn") == null ? "" : map.get("device_sn"));
                json.put("type", map.get("type"));
                Date date = (Date) map.get("record_date");
                if (type == 2) {
                    json.put("date", DateUtil.dateToStr(date, DateUtil.YYYY_MM_DD_HH_MM_SS));
                } else {
                    json.put("date", DateUtil.dateToStr(date, DateUtil.YYYY_MM_DD));
                }
                json.put("sortDate", map.get("sort_date"));
                json.put("czrq", map.get("czrq"));
                //是否为补传数据(设备上传且测量时间和创建时间不匹配)
                Date recordDate = (Date)map.get("record_date");
                Date createDate = (Date) map.get("createDate");
                String recordTime = DateUtil.dateToStr(recordDate,DateUtil.YYYY_MM_DD);
                String createTime = DateUtil.dateToStr(createDate,DateUtil.YYYY_MM_DD);
                if (map.get("device_sn") == null){
                    json.put("isSupplement",0);
                }else {
                    if (recordTime.compareToIgnoreCase(createTime)==0){
                        json.put("isSupplement",0);
                    }else {
                        json.put("isSupplement",1);
                    }
                }
                    re.put(json);
            }
            result.put("dataList",re);
        }
        result.put("total",count);
        result.put("page",page+1);
        result.put("pageSize",pageSize);
        result.put("dataList",list);
        return result;
    }
@ -1024,20 +1213,31 @@ public class PatientDeviceService extends BaseJpaService<DevicePatientDevice, Pa
                " and ord.patient='"+patient+"' " +
                "UNION All " +
                "select count(ord.id)  as total from base_security_monitoring_order ord  where ord.device_sn='"+deviceSn+"' " +
                " and ord.patient='"+patient+"' )A ";
        long count = jdbcTemplate.queryForObject(sqlCount,long.class);
                " {{patient}} )A ";
        String sql = "select '20' as OrderType,ord.id,ord.patient,ord.patient_name,ord.doctor,ord.status,ord.doctor_name," +
                "'紧急呼叫' as serve_desc,DATE_FORMAT(ord.create_time,'%Y-%m-%d %H:%i:%S') create_time " +
                "from base_emergency_assistance_order ord  where ord.device_sn='"+deviceSn+"' and ord.patient='"+patient+"' " +
                "UNION " +
                "select  '22' as 'OrderType',ord.id,ord.patient,ord.patient_name,ord.doctor,ord.status,ord.doctor_name," +
                "ord.serve_desc,DATE_FORMAT(ord.create_time,'%Y-%m-%d %H:%i:%S') create_time from base_security_monitoring_order ord " +
                " where ord.device_sn='"+deviceSn+"' and ord.patient='"+patient+"'  order by create_time desc limit "+page*pageSize+","+pageSize;
                " where ord.device_sn='"+deviceSn+"' {{patient}}  order by create_time desc limit "+page*pageSize+","+pageSize;
        if (StringUtils.isNotBlank(patient)){
            sqlCount = sqlCount.replace("{{patient}}","and ord.patient='"+patient+"' ");
            sql = sql.replace("{{patient}}","and ord.patient='"+patient+"' ");
        }else {
            sqlCount = sqlCount.replace("{{patient}}"," ");
            sql = sql.replace("{{patient}}"," ");
        }
        long count = jdbcTemplate.queryForObject(sqlCount,long.class);
        List<Map<String,Object>> list = jdbcTemplate.queryForList(sql);
        String str = JSON.toJSONString(list,SerializerFeature.WriteMapNullValue);
        com.alibaba.fastjson.JSONArray arr = com.alibaba.fastjson.JSONArray.parseArray(str);
        result.put("total",count);
        result.put("page",page+1);
        result.put("pageSize",pageSize);
        result.put("dataList",list);
        result.put("dataList", arr);
        return result;
    }
@ -1158,42 +1358,89 @@ public class PatientDeviceService extends BaseJpaService<DevicePatientDevice, Pa
     * @return
     * @throws Exception
     */
    public com.alibaba.fastjson.JSONObject updateDeviceFenceArea(String deviceSn,Integer fenceNO,String enable,String name,String freq,
    @Transactional(rollbackFor = Exception.class)
    public String updateDeviceFenceArea(String patient,String deviceSn,Integer fenceNO,String enable,String name,String freq,
                                                                 String time_begin,String time_end,String safe_area ,String clear) throws Exception{
        List<DevicePatientDevice> devices = patientDeviceDao.findByDeviceSn(deviceSn);
        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, deviceSn,fenceNO);
        if(StringUtils.isBlank(patient)){
            List<DevicePatientDevice> devices = patientDeviceDao.findByDeviceSn(deviceSn);
            if (devices.size()>0){
                DevicePatientDevice deviceTmp = devices.get(0);
                if ("4".equals(deviceTmp.getCategoryCode())||"16".equals(deviceTmp.getCategoryCode())){
                    patient = deviceTmp.getUser();
                }
            }
        }else {
            url = MessageFormat.format(AqgConfig.S3fence_area, deviceSn,fenceNO);
        }
        MultiValueMap<String, String> param = new LinkedMultiValueMap<>();
        if(StringUtils.isBlank(clear)){
            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]))+";";
        List<DevicePatientDevice> devices = patientDeviceDao.findAllByUserAndCategoryCode(patient,"4");
        PatientSafeAreaDO safeAreaDO = new PatientSafeAreaDO();
        if (StringUtils.isNotBlank(patient)){
            List<PatientSafeAreaDO> safeAreaDOS = safeAreaDao.findByPatient(patient);
            // 1删除 空修改或删除
            if (safeAreaDOS.size()>0){
                safeAreaDO = safeAreaDOS.get(0);
            }else {
                safeAreaDO.setPatient(patient);
                safeAreaDO.setCreateTime(new Date());
                safeAreaDO.setUpdateTime(new Date());
                safeAreaDO.setSuccessFlag(-1);
            }
            if (StringUtils.isNotBlank(clear)) {//删除
                safeAreaDao.deleteByPatient(patient);
            }
            else{//新增或修改
                safeAreaDO.setSafeAreaGz(safe_area);
                safeAreaDO.setUpdateTime(new Date());
                safeAreaDO.setSuccessFlag(-1);
            }
        }
        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,fenceNO);
                    }
                }
            }else {
                url = MessageFormat.format(AqgConfig.S3fence_area, deviceSnTmp,fenceNO);
            }
            param.add("name", name);
            param.add("freq", freq);
            param.add("enable",enable);
            param.add("time_begin", time_begin);
            param.add("time_end", time_end);
            param.add("safe_area", safe_area);
            MultiValueMap<String, String> param = new LinkedMultiValueMap<>();
            if(StringUtils.isBlank(clear)){
                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", name);
                param.add("freq", freq);
                param.add("enable",enable);
                param.add("time_begin", time_begin);
                param.add("time_end", time_end);
                param.add("safe_area", safe_area);
        }else {
            param.add("clear",clear);
            }else {
                param.add("clear",clear);
            }
            HttpEntity<com.alibaba.fastjson.JSONObject> response = httpClientUtil.aqgCookieHttp(url, param, HttpMethod.POST, getCookie());
            com.alibaba.fastjson.JSONObject responseObj = response.getBody();
            if (responseObj.getBoolean("success")){
                safeAreaDO.setSuccessFlag(1);
            }
            else {
                throw new Exception("安全区域设置失败!");
            }
            if (StringUtils.isBlank(clear)&&StringUtils.isNotBlank(patient)){
                safeAreaDao.save(safeAreaDO);
            }
        }
        HttpEntity<com.alibaba.fastjson.JSONObject> response = httpClientUtil.aqgCookieHttp(url, param, HttpMethod.POST, getCookie());
        return response.getBody();
        return "success";
    }
    /**
@ -1202,7 +1449,9 @@ public class PatientDeviceService extends BaseJpaService<DevicePatientDevice, Pa
     * @param time_begin YYYYMMDD 日期
     * @return
     */
    public com.alibaba.fastjson.JSONObject getX1Locations(String deviceSn,String time_begin){
    public JSONArray getX1Locations(String deviceSn,String time_begin){
        JSONArray result = new JSONArray();
        String url = AqgConfig.X1_locations+"?device="+deviceSn+"&depth="+1+"&rows_per_page="+300;
        if (StringUtils.isNotBlank(time_begin)){
@ -1212,8 +1461,23 @@ public class PatientDeviceService extends BaseJpaService<DevicePatientDevice, Pa
        headers.put("Accept", MediaType.APPLICATION_JSON.toString());
        headers.put("Cookie", getCookie());
        String  responseStr = httpClientUtil.get(url,"utf-8",headers);
        com.alibaba.fastjson.JSONObject result = JSON.parseObject(responseStr);
        com.alibaba.fastjson.JSONObject resObj = JSON.parseObject(responseStr);
        if (resObj.getBooleanValue("success")){
            com.alibaba.fastjson.JSONArray arr = resObj.getJSONArray("objs");
            arr.sort(Comparator.comparing(obj -> ((com.alibaba.fastjson.JSONObject) obj).getJSONObject("created_at").getLong("$date")));
            for (int i=0;i<arr.size();i++){
                try {
                    com.alibaba.fastjson.JSONObject obj = arr.getJSONObject(i);
                    com.alibaba.fastjson.JSONArray pointArr = obj.getJSONObject("point").getJSONArray("coordinates");
                    Double lon = pointArr.getDouble(0);
                    Double lat = pointArr.getDouble(1);
                    com.alibaba.fastjson.JSONObject pointJson = gpsUtil.gcj02_To_Bd09(lat,lon);
                    result.put(pointJson);
                }catch (Exception e){
                }
            }
        }
        return result;
    }

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

@ -245,7 +245,7 @@ public class PatientHealthIndexService extends BaseJpaService<DevicePatientHealt
     *
     * @return
     */
    private com.alibaba.fastjson.JSONObject getPatientXT_Json(String patient, String dateString) {
    public com.alibaba.fastjson.JSONObject getPatientXT_Json(String patient, String dateString) {
        com.alibaba.fastjson.JSONObject obj = new com.alibaba.fastjson.JSONObject();
        obj.put("user", patient);
        boolean hadData = false;

+ 71 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/device/YunXunDeviceService.java

@ -0,0 +1,71 @@
package com.yihu.jw.care.service.device;
import com.yihu.jw.util.http.HttpClientUtil;
import com.yihu.jw.utils.StringUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
 * Created with IntelliJ IDEA.
 * 云芯拐杖设备对接
 * @Author: yeshijie
 * @Date: 2021/8/27
 * @Description:
 */
@Service
public class YunXunDeviceService {
    private static Logger logger = LoggerFactory.getLogger(YunXunDeviceService.class);
    @Autowired
    private HttpClientUtil httpClientUtil;
    /**
     * 设置紧急联系人
     * @param sn
     * @param phone1
     * @param phone2
     * @param phone3
     */
    public void setSos(String sn,String phone1,String phone2,String phone3){
        if(StringUtil.isBlank(phone1)){
            return;
        }
        //[IC*334588000000156*0027*SOS,00000000000,00000000000]
        String order = "SOS,"+phone1;
        if(!StringUtil.isBlank(phone2)){
            order += ","+phone2;
        }
        if(!StringUtil.isBlank(phone3)){
            order += ","+phone3;
        }
        String instruction = "[IC*"+sn+"*"+hex10To16(order.length())+"]";
        sendInstruction(sn,instruction);
    }
    /**
     * 发送指令接口
     * @param instruction
     */
    public void sendInstruction(String sn,String instruction){
        try {
            String url = "http://117.24.13.79:43210/yunxin/sendMessage?deviceSN="+sn+"&message="+instruction;
            String response = httpClientUtil.get(url,"UTF-8");
            logger.info("sendInstruction="+response);
        }catch (Exception e){
            e.printStackTrace();
        }
    }
    /**
     * 保留4位 十进制转十六进制
     * @param ten
     * @return
     */
    public String hex10To16(int ten){
        return String.format("%04x",ten);
    }
}

+ 50 - 1
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/doorCoach/DoctorDoorCoachOrderService.java

@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.jw.care.dao.doorCoach.*;
import com.yihu.jw.care.dao.lifeCare.BaseAdminServiceDynamicDao;
import com.yihu.jw.care.service.consult.ConsultTeamService;
import com.yihu.jw.care.util.EntranceUtil;
import com.yihu.jw.care.util.MessageUtil;
@ -17,6 +18,7 @@ import com.yihu.jw.entity.base.org.BaseOrgDO;
import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.entity.base.wx.BasePatientWechatDo;
import com.yihu.jw.entity.care.doorCoach.*;
import com.yihu.jw.entity.door.BaseAdminServiceDynamic;
import com.yihu.jw.entity.hospital.message.SystemMessageDO;
import com.yihu.jw.hospital.message.dao.SystemMessageDao;
import com.yihu.jw.hospital.prescription.dao.PrescriptionDao;
@ -94,7 +96,8 @@ public class DoctorDoorCoachOrderService {
    private BaseOrgDao hospitalDao;
    @Autowired
    private ConsultTeamService consultTeamService;
    @Autowired
    private BaseAdminServiceDynamicDao baseAdminServiceDynamicDao;
    @Autowired
    private MessageDao messageDao;
    @Autowired
@ -401,6 +404,21 @@ public class DoctorDoorCoachOrderService {
        baseDoorCoachOrderDao.save(doorServiceOrder);
        try {
            BaseAdminServiceDynamic adminServiceDynamic = new BaseAdminServiceDynamic();
            adminServiceDynamic.setCreateTime(DateUtil.getTime());
            adminServiceDynamic.setName(doorServiceOrder.getPatientName());
            adminServiceDynamic.setPatient(doorServiceOrder.getPatient());
            adminServiceDynamic.setDoctor(doorServiceOrder.getDoctor());
            adminServiceDynamic.setDoctorName(doorServiceOrder.getDoctorName());
            adminServiceDynamic.setNumber(doorServiceOrder.getNumber());
            adminServiceDynamic.setType(1);
            adminServiceDynamic.setValue("已接单,工单编号:");
            baseAdminServiceDynamicDao.save(adminServiceDynamic);
        }catch (Exception e) {
            logger.info(e.getMessage());
        }
        systemMessageDao.orderMessageDel(doorServiceOrder.getDoctor(),orderId);
        if(doorServiceOrder.getType() == null|| doorServiceOrder.getType() != 3) {
@ -491,6 +509,21 @@ public class DoctorDoorCoachOrderService {
        doorServiceOrder.setCancelReason(reason);   // 拒绝原因
        doorServiceOrder.setCancelTime(new Date());
        try {
            BaseAdminServiceDynamic baseAdminServiceDynamic = new BaseAdminServiceDynamic();
            baseAdminServiceDynamic.setCreateTime(DateUtil.getTime());
            baseAdminServiceDynamic.setName(doorServiceOrder.getPatientName());
            baseAdminServiceDynamic.setPatient(doorServiceOrder.getPatient());
            baseAdminServiceDynamic.setDoctor(doorServiceOrder.getDoctor());
            baseAdminServiceDynamic.setDoctorName(doorServiceOrder.getDoctorName());
            baseAdminServiceDynamic.setNumber(doorServiceOrder.getNumber());
            baseAdminServiceDynamic.setType(1);
            baseAdminServiceDynamic.setValue("已拒单,工单编号:");
            baseAdminServiceDynamicDao.save(baseAdminServiceDynamic);
        }catch (Exception e) {
            logger.info(e.getMessage());
        }
        baseDoorCoachOrderDao.save(doorServiceOrder);
    }
@ -599,6 +632,22 @@ public class DoctorDoorCoachOrderService {
        one.setPatientConfirmFinishTime(new Date());
        // 更新记录
        this.setUpdateColumnInfo(one);
        try {
            BaseAdminServiceDynamic baseAdminServiceDynamic = new BaseAdminServiceDynamic();
            baseAdminServiceDynamic.setType(1);
            baseAdminServiceDynamic.setValue("已完成服务,工单编号:");
            baseAdminServiceDynamic.setNumber(one.getNumber());
            baseAdminServiceDynamic.setDoctorName(one.getDoctorName());
            baseAdminServiceDynamic.setDoctor(one.getDoctor());
            baseAdminServiceDynamic.setPatient(one.getPatient());
            baseAdminServiceDynamic.setName(one.getPatientName());
            baseAdminServiceDynamic.setCreateTime(DateUtil.getTime());
            baseAdminServiceDynamicDao.save(baseAdminServiceDynamic);
        }catch (Exception e){
            logger.info(e.getMessage());
        }
        // 计算保存服务总的支付费用
        Integer times = patientDoorCoachOrderService.countPatientDoorTimes(one.getPatient());
        String jsonData = this.serverPackagePriceByOrderId(orderId);

+ 20 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/doorCoach/PatientDoorCoachOrderService.java

@ -3,6 +3,7 @@ package com.yihu.jw.care.service.doorCoach;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.care.dao.doorCoach.*;
import com.yihu.jw.care.dao.lifeCare.BaseAdminServiceDynamicDao;
import com.yihu.jw.care.service.consult.ConsultTeamService;
import com.yihu.jw.care.service.message.BaseServiceNewsService;
import com.yihu.jw.care.service.pay.PayService;
@ -16,6 +17,7 @@ import com.yihu.jw.entity.base.wx.BasePatientWechatDo;
import com.yihu.jw.entity.care.doorCoach.*;
import com.yihu.jw.entity.care.lifeCare.LifeCareFeeDetailDO;
import com.yihu.jw.entity.care.lifeCare.LifeCareOrderDO;
import com.yihu.jw.entity.door.BaseAdminServiceDynamic;
import com.yihu.jw.entity.hospital.message.SystemMessageDO;
import com.yihu.jw.entity.order.BusinessOrderDO;
import com.yihu.jw.hospital.message.dao.SystemMessageDao;
@ -103,6 +105,8 @@ public class PatientDoorCoachOrderService extends BaseJpaService<BaseDoorCoachOr
    private PayService payService;
    @Autowired
    private BusinessOrderDao businessOrderDao;
    @Autowired
    private BaseAdminServiceDynamicDao baseAdminServiceDynamicDao;
    /**
     * 创建上门辅导服务工单
@ -190,6 +194,22 @@ public class PatientDoorCoachOrderService extends BaseJpaService<BaseDoorCoachOr
            orderDO.setType(2);
        }
        orderDO.setServiceStatus("1");
        try {
            BaseAdminServiceDynamic baseAdminServiceDynamic = new BaseAdminServiceDynamic();
            baseAdminServiceDynamic.setDoctorName(orderDO.getDoctorName());
            baseAdminServiceDynamic.setDoctor(orderDO.getDoctor());
            baseAdminServiceDynamic.setName(orderDO.getPatientName());
            baseAdminServiceDynamic.setPatient(orderDO.getPatient());
            baseAdminServiceDynamic.setType(1);
            baseAdminServiceDynamic.setValue("创建了上门辅导申请");
            baseAdminServiceDynamic.setCreateTime(DateUtil.getTime());
            baseAdminServiceDynamic.setName(orderDO.getNumber());
            baseAdminServiceDynamicDao.save(baseAdminServiceDynamic);
        }catch (Exception e) {
            logger.info(e.getMessage());
        }
        this.save(orderDO);
        result.put("orderId",orderDO.getId());
        result.put(ResponseContant.resultFlag, ResponseContant.success);

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

@ -2,10 +2,8 @@ package com.yihu.jw.care.service.lifeCare;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.care.dao.lifeCare.LifeCareCancelLogDao;
import com.yihu.jw.care.dao.lifeCare.LifeCareFeeDetailDao;
import com.yihu.jw.care.dao.lifeCare.LifeCareItemDictDao;
import com.yihu.jw.care.dao.lifeCare.LifeCareOrderDao;
import com.yihu.jw.care.dao.lifeCare.*;
import com.yihu.jw.care.dao.team.BaseTeamMemberDao;
import com.yihu.jw.care.service.common.OrderNoService;
import com.yihu.jw.care.service.message.BaseServiceNewsService;
import com.yihu.jw.care.service.pay.PayService;
@ -22,6 +20,7 @@ import com.yihu.jw.entity.care.lifeCare.LifeCareCancelLogDO;
import com.yihu.jw.entity.care.lifeCare.LifeCareFeeDetailDO;
import com.yihu.jw.entity.care.lifeCare.LifeCareItemDictDO;
import com.yihu.jw.entity.care.lifeCare.LifeCareOrderDO;
import com.yihu.jw.entity.door.BaseAdminServiceDynamic;
import com.yihu.jw.entity.order.BusinessOrderDO;
import com.yihu.jw.order.dao.BusinessOrderDao;
import com.yihu.jw.org.dao.BaseOrgDao;
@ -88,9 +87,10 @@ public class LifeCareOrderService extends BaseJpaService<LifeCareOrderDO, LifeCa
    private PayService payService;
    @Autowired
    private BusinessOrderDao businessOrderDao;
    @Autowired
    private BaseTeamMemberDao baseTeamMemberDao;
    @Autowired
    private BaseAdminServiceDynamicDao baseAdminServiceDynamicDao;
    /**
     * 记录完成情况
     * @param orderId
@ -134,6 +134,22 @@ public class LifeCareOrderService extends BaseJpaService<LifeCareOrderDO, LifeCa
        lifeCareOrderDO.setCompleteRemark(completeRemark);
        lifeCareOrderDO.setCompleteTime(new Date());
        lifeCareOrderDao.save(lifeCareOrderDO);
        try {
            BaseAdminServiceDynamic baseAdminServiceDynamic = new BaseAdminServiceDynamic();
            baseAdminServiceDynamic.setCreateTime(DateUtil.getTime());
            baseAdminServiceDynamic.setType(2);
            baseAdminServiceDynamic.setNumber(lifeCareOrderDO.getNumber());
            baseAdminServiceDynamic.setValue("完成了生活照料");
            baseAdminServiceDynamic.setPatient(lifeCareOrderDO.getPatient());
            baseAdminServiceDynamic.setName(lifeCareOrderDO.getPatientName());
            baseAdminServiceDynamic.setDoctor(lifeCareOrderDO.getDoctor());
            baseAdminServiceDynamic.setDoctorName(lifeCareOrderDO.getDoctorName());
            baseAdminServiceDynamicDao.save(baseAdminServiceDynamic);
        }catch (Exception e) {
            logger.info(e.getMessage());
        }
        return 0;
    }
@ -552,6 +568,22 @@ public class LifeCareOrderService extends BaseJpaService<LifeCareOrderDO, LifeCa
        orderDO.setNumber(orderNoService.getOrderNo(1));
        orderDO.setCreateTime(new Date());
        orderDO.setStatus(0);//待付款状态
        try {
            BaseAdminServiceDynamic baseAdminServiceDynamic = new BaseAdminServiceDynamic();
            baseAdminServiceDynamic.setValue("申请了生活照料");
            baseAdminServiceDynamic.setType(2);
            baseAdminServiceDynamic.setNumber(orderDO.getNumber());
            baseAdminServiceDynamic.setDoctorName(orderDO.getDoctorName());
            baseAdminServiceDynamic.setDoctor(orderDO.getDoctor());
            baseAdminServiceDynamic.setPatient(orderDO.getPatient());
            baseAdminServiceDynamic.setNumber(orderDO.getPatientName());
            baseAdminServiceDynamic.setCreateTime(DateUtil.getTime());
            baseAdminServiceDynamicDao.save(baseAdminServiceDynamic);
        } catch (Exception e) {
            logger.info(e.getMessage());
        }
        this.save(orderDO);
        result.put("orderId",orderDO.getId());
        orderDO.setTotalFee(new BigDecimal(0));
@ -563,6 +595,24 @@ public class LifeCareOrderService extends BaseJpaService<LifeCareOrderDO, LifeCa
        //发起支付订单
        payService.submitOrder(orderDO.getPatient(),"4",orderDO.getId(),orderDO.getTotalFee().doubleValue());
        //给签约医生发送预约短信
        String sql ="SELECT i.code,r.team_code,pack.org_code,pack.org_name from base_service_package_sign_record sr,base_service_package_record r, base_service_package_item i,base_service_package pack  \n" +
                "where  sr.id = r.sign_id and sr.status=1 and r.service_package_id = i.service_package_id and r.service_package_id = pack.id and i.del = 1 and sr.`status`=1 \n" +
                "and  sr.patient  = '"+orderDO.getPatient()+"' and i.code='lifeCare' ";
        List<Map<String,Object>> items = jdbcTemplate.queryForList(sql);
        Map<String,Object> mapTmp = items.get(0);
        List<BaseDoctorDO> doctorDOS = baseTeamMemberDao.findAllMembers(mapTmp.get("team_code").toString());
        for (BaseDoctorDO doctorDO:doctorDOS){
            try {
                if (StringUtils.isNotBlank(doctorDO.getMobile())){
                    messageUtil.sendTXYSJson("1099805",doctorDO.getMobile(),orderDO.getPatientName());
                }
            }catch (Exception e){
                e.printStackTrace();
            }
        }
        return result;
    }

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

@ -5,7 +5,6 @@ import com.yihu.jw.care.dao.message.BaseServiceNewsDao;
import com.yihu.jw.care.service.device.DeviceService;
import com.yihu.jw.entity.care.device.DevicePatientDevice;
import com.yihu.jw.entity.care.message.BaseServiceNews;
import com.yihu.jw.restmodel.iot.device.WlyyPatientDeviceVO;
import com.yihu.jw.util.common.IdCardUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.PageRequest;
@ -43,7 +42,16 @@ public class BaseServiceNewsService {
     * @return
     */
    public List<Map<String,Object>> findOrgLocations(){
        String filter = "";
        String sqltmp = "SELECT GROUP_CONCAT(dict_code) orgCodes from wlyy_hospital_sys_dict WHERE dict_name = 'jkzl_org' ";
        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 code not in ('"+orgCodes+"')";
        }
        String sql = "SELECT code,name,brief,address,photo,mobile,longitude,latitude,type from base_org WHERE type in ('3','4') and del =1";
        sql += filter;
        List<Map<String,Object>> list = jdbcTemplate.queryForList(sql);
        return list;
    }

+ 59 - 22
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/patient/CarePatientService.java

@ -21,6 +21,7 @@ import com.yihu.jw.patient.dao.BasePatientDao;
import com.yihu.jw.patient.service.BasePatientMedicardCardService;
import com.yihu.jw.restmodel.ResponseContant;
import com.yihu.jw.restmodel.web.PageEnvelop;
import com.yihu.jw.sms.dao.HospitalSysDictDao;
import com.yihu.jw.util.common.IdCardUtil;
import com.yihu.jw.util.date.DateUtil;
import com.yihu.jw.utils.StringUtil;
@ -73,6 +74,8 @@ public class CarePatientService extends BaseJpaService<BasePatientDO, BasePatien
    private String wxId;
    @Autowired
    private DeviceService deviceService;
    @Autowired
    private HospitalSysDictDao hospitalSysDictDao;
    /**
     * 签约记录
@ -441,21 +444,47 @@ public class CarePatientService extends BaseJpaService<BasePatientDO, BasePatien
        String online= imUtil.getOnlineListByType(null);
        JSONObject json = JSON.parseObject(online).getJSONObject("data");
        String limit = " limit "+(page-1)*size+","+size;
        String filter ="";
        if("1".equals(type)||StringUtil.isBlank(type)){
            List<Map<String,Object>> list = findChild(name,residentialArea,limit,json.getJSONObject("child"));
            String sqltmp = "SELECT GROUP_CONCAT(dict_code) orgCodes from wlyy_hospital_sys_dict WHERE dict_name = 'jkzl_child' ";
            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 id not in ('"+orgCodes+"')";
            }
            List<Map<String,Object>> list = findChild(name,residentialArea,limit,filter);
            re.put("child",list);
            re.put("childTotal",findChildTotal(name,residentialArea));
            re.put("childTotal",findChildTotal(name,residentialArea,filter));
        }
        if("2".equals(type)||StringUtil.isBlank(type)){
            List<Map<String,Object>> list = findOld(name,residentialArea,limit,json);
            filter = "";
            String sqltmp = "SELECT GROUP_CONCAT(dict_code) orgCodes from wlyy_hospital_sys_dict WHERE 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 a.id not in ('"+orgCodes+"')";
            }
            List<Map<String,Object>> list = findOld(name,residentialArea,limit,json,filter);
            re.put("old",list);
            re.put("oldTotal",findOldTotal(name,residentialArea));
            re.put("oldTotal",findOldTotal(name,residentialArea,filter));
        }
        if("3".equals(type)||StringUtil.isBlank(type)){
            List<Map<String,Object>> list = findHelper(name,limit,json.getJSONObject("helper"));
            filter = "";
            String sqltmp = "SELECT GROUP_CONCAT(dict_code) orgCodes from wlyy_hospital_sys_dict WHERE dict_name = 'jkzl_org' ";
            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 h.org_code not in ('"+orgCodes+"')";
            }
            List<Map<String,Object>> list = findHelper(name,limit,filter);
            re.put("helper",list);
            re.put("helperTotal",findHelperTotal(name));
            re.put("helperTotal",findHelperTotal(name,filter));
        }
        return re;
    }
@ -465,17 +494,20 @@ public class CarePatientService extends BaseJpaService<BasePatientDO, BasePatien
     * @param name
     * @param residentialArea
     * @param limit
     * @param json
     * @return
     */
    public List<Map<String,Object>> findChild(String name,String residentialArea,String limit,JSONObject json){
        String sql = "SELECT id,name,photo,idcard,CAST(IFNULL(birthday,'') AS char ) birthday,residential_area residentialArea,sex  from base_patient WHERE archive_type = 2 and del = '1' ";
    public List<Map<String,Object>> findChild(String name,String residentialArea,String limit,String filter1){
        String sql = "SELECT id,name,photo,idcard,CAST(IFNULL(birthday,'') AS char ) birthday,residential_area residentialArea" +
                ",sex,IFNULL(on_line,0) online  from base_patient WHERE archive_type = 2 and del = '1' ";
        if(!StringUtil.isBlank(name)){
            sql+= " and name like '%"+name+"%' ";
        }
        if(!StringUtil.isBlank(residentialArea)){
            sql+= " and residential_area = '"+residentialArea+"' ";
        }
        sql += filter1;
        sql += " order by online desc";
        sql+=limit;
        List<Map<String,Object>>  list = jdbcTemplate.queryForList(sql);
        String sqlCount = "SELECT COUNT(*) from base_door_coach_order where `status` = 6";
@ -483,7 +515,6 @@ public class CarePatientService extends BaseJpaService<BasePatientDO, BasePatien
            String paientId = map.get("id").toString();
            String filter = " and patient = '"+paientId+"'";
            Integer count = jdbcTemplate.queryForObject(sqlCount+filter,Integer.class);
            map.put("online",json.containsKey(paientId));
            map.put("doorCoach",count);
            String idcardNo = map.get("idcard") + "";
            Date birthday = DateUtil.strToDate(map.get("birthday").toString());
@ -493,7 +524,7 @@ public class CarePatientService extends BaseJpaService<BasePatientDO, BasePatien
        return list;
    }
    public Integer findChildTotal(String name,String residentialArea){
    public Integer findChildTotal(String name,String residentialArea,String filter){
        String sql = "SELECT count(id) from base_patient WHERE archive_type = 2 and del = '1' ";
        if(!StringUtil.isBlank(name)){
            sql+= " and name like '%"+name+"%' ";
@ -501,6 +532,7 @@ public class CarePatientService extends BaseJpaService<BasePatientDO, BasePatien
        if(!StringUtil.isBlank(residentialArea)){
            sql+= " and residential_area = '"+residentialArea+"' ";
        }
        sql += filter;
        return jdbcTemplate.queryForObject(sql,Integer.class);
    }
@ -512,9 +544,9 @@ public class CarePatientService extends BaseJpaService<BasePatientDO, BasePatien
     * @param json
     * @return
     */
    public List<Map<String,Object>> findOld(String name,String residentialArea,String limit,JSONObject json){
    public List<Map<String,Object>> findOld(String name,String residentialArea,String limit,JSONObject json,String filter1){
        String sql = "SELECT a.id,a.name,a.photo,a.idcard,CAST(IFNULL(a.birthday,'') AS char ) birthday,a.residential_area residentialArea,a.sex " +
                ", GROUP_CONCAT(DISTINCT d.category_code) deviceFlag from base_patient a " +
                ", GROUP_CONCAT(DISTINCT d.category_code) deviceFlag,IFNULL(on_line,0) online,IFNULL(sign_status,0) signStatus from base_patient a " +
                " LEFT JOIN wlyy_patient_device d on d.`user`=a.id  WHERE a.archive_type = 1 and a.del = '1' ";
        if(!StringUtil.isBlank(name)){
            sql+= " and name like '%"+name+"%' ";
@ -522,7 +554,9 @@ public class CarePatientService extends BaseJpaService<BasePatientDO, BasePatien
        if(!StringUtil.isBlank(residentialArea)){
            sql+= " and residential_area = '"+residentialArea+"' ";
        }
        sql += " GROUP BY a.id,a.name,a.photo,a.idcard,a.birthday,a.residential_area,a.sex ";
        sql += filter1;
        sql += " GROUP BY a.id,a.name,a.photo,a.idcard,a.birthday,a.residential_area,a.sex,online,signStatus ";
        sql += " ORDER BY online desc,signStatus desc";
        sql += limit;
        List<Map<String,Object>>  list = jdbcTemplate.queryForList(sql);
        String sqlLife= "SELECT COUNT(*) from base_life_care_order where `status` = 2";
@ -547,7 +581,7 @@ public class CarePatientService extends BaseJpaService<BasePatientDO, BasePatien
        return list;
    }
    public Integer findOldTotal(String name,String residentialArea){
    public Integer findOldTotal(String name,String residentialArea,String filter){
        String sql = "SELECT count(a.id) from base_patient a  WHERE a.archive_type = 1 and a.del = '1' ";
        if(!StringUtil.isBlank(name)){
            sql+= " and name like '%"+name+"%' ";
@ -555,6 +589,7 @@ public class CarePatientService extends BaseJpaService<BasePatientDO, BasePatien
        if(!StringUtil.isBlank(residentialArea)){
            sql+= " and residential_area = '"+residentialArea+"' ";
        }
        sql += filter;
        return jdbcTemplate.queryForObject(sql,Integer.class);
    }
@ -562,14 +597,16 @@ public class CarePatientService extends BaseJpaService<BasePatientDO, BasePatien
     * 查找助老员
     * @param name
     * @param limit
     * @param json
     * @return
     */
    public List<Map<String,Object>> findHelper(String name,String limit,JSONObject json){
        String sql = "SELECT id,name,photo,sex from base_doctor WHERE doctor_level = 2 and del = '1' ";
    public List<Map<String,Object>> findHelper(String name,String limit,String fileter){
        String sql = "SELECT a.id,a.name,a.photo,a.sex,IFNULL(a.on_line,0) online from base_doctor a,base_doctor_hospital h" +
                "  WHERE a.id=h.doctor_code and a.doctor_level = 2 and a.del = '1' and h.del = '1' ";
        if(!StringUtil.isBlank(name)){
            sql+= " and name like '%"+name+"%' ";
            sql+= " a.and name like '%"+name+"%' ";
        }
        sql += fileter;
        sql += " ORDER BY online desc";
        sql+=limit;
        List<Map<String,Object>>  list = jdbcTemplate.queryForList(sql);
        String sqlLife= "SELECT COUNT(*) from base_life_care_order where `status` = 2";
@ -590,7 +627,6 @@ public class CarePatientService extends BaseJpaService<BasePatientDO, BasePatien
            Integer lifeCare = jdbcTemplate.queryForObject(sqlLife+filter,Integer.class);
            Integer emergency = jdbcTemplate.queryForObject(sqlEmergency+filter,Integer.class);
            Integer security = jdbcTemplate.queryForObject(sqlSecurity+filter,Integer.class);
            map.put("online",json.containsKey(doctorId));
            map.put("lifeCare",lifeCare);
            map.put("emergency",emergency);
            map.put("security",security);
@ -598,11 +634,12 @@ public class CarePatientService extends BaseJpaService<BasePatientDO, BasePatien
        return list;
    }
    public Integer findHelperTotal(String name){
        String sql = "SELECT count(id) from base_doctor WHERE doctor_level = 2 and del = '1' ";
    public Integer findHelperTotal(String name,String filter){
        String sql = "SELECT count(a.id) from base_doctor a,base_doctor_hospital h WHERE  a.id=h.doctor_code and a.doctor_level = 2 and a.del = '1' and h.del = '1'  ";
        if(!StringUtil.isBlank(name)){
            sql+= " and name like '%"+name+"%' ";
        }
        sql += filter;
        return jdbcTemplate.queryForObject(sql,Integer.class);
    }

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

@ -38,6 +38,7 @@ import com.yihu.jw.restmodel.emergency.EmergencyOrderVO;
import com.yihu.jw.restmodel.web.PageEnvelop;
import com.yihu.jw.util.common.GpsUtil;
import com.yihu.jw.util.common.IdCardUtil;
import com.yihu.jw.util.common.LatitudeUtils;
import com.yihu.jw.util.date.DateUtil;
import com.yihu.jw.util.entity.EntityUtils;
import com.yihu.mysql.query.BaseJpaService;
@ -123,6 +124,8 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
    private BaseSleepPlanDetailDao sleepPlanDetailDao;
    @Autowired
    private BaseSleepNightRecordDao nightRecordDao;
    @Autowired
    private PatientSafeAreaDao safeAreaDao;
    private Logger logger = LoggerFactory.getLogger(SecurityMonitoringOrderService.class);
@ -237,6 +240,9 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
        message.put("content_type",40);
        for (BaseDoctorDO doctorDO:doctorDOS){
            try {
                if (StringUtils.isNotBlank(doctorDO.getMobile())){
                    messageUtil.sendTXYSJson("1099807",doctorDO.getMobile(),orderDO.getPatientName(),orderDO.getServeDesc());
                }
                imUtil.sendMDTSocketMessageToDoctor(doctorDO.getId(),message.toString());
            }catch (Exception e){
                e.printStackTrace();
@ -250,6 +256,29 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
        return result;
    }
    public List<Map<String , Object>> getElectronicFence(String patient){
        String sql = " select safe_area_gz safeAreaGz from wlyy_patient_safe_area where patient = '"+patient+"' ";
        return jdbcTemplate.queryForList(sql);
    }
    public List<Map<String , Object>> getActionTrack(String deviceSn,String day){
        String sql = "SELECT * FROM base_yxdevice_index WHERE sn = '"+deviceSn+"' AND lon != 0 AND lat != 0  and create_time like '"+day+"%' ORDER BY create_time DESC LIMIT 0,20";
        return jdbcTemplate.queryForList(sql);
    }
    public List<Map<String,Object>>getNewList(String deviceSn,String day){
        if (StringUtils.isBlank(day)){
            day = DateUtil.getStringDateShort();
        }
        String sql = "SELECT * FROM base_yxdevice_index WHERE sn = '"+deviceSn+"' AND create_time LIKE '"+day+"%' AND lon != 0 AND lat != 0 ORDER BY create_time DESC limit 1";
        return jdbcTemplate.queryForList(sql);
    }
    public List<Map<String , Object>> getPatientLatLon(String deviceSn){
        String sql = "SELECT p.lat_lon FROM base_patient p,wlyy_patient_device pd WHERE pd.del = 0 AND pd.device_sn = '"+deviceSn+"' AND pd.`user` = p.id AND p.del = 1 limit 1";
        return jdbcTemplate.queryForList(sql);
    }
    public JSONObject getSecurityOrderDetail(String orderID,String doctor){
        JSONObject result = new JSONObject();
        EmergencyOrderVO emergencyOrderVO = new EmergencyOrderVO();
@ -328,13 +357,13 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
            }
        }
        //附加信息 电子围栏状态
        if (orderDO.getOrderSource()==2){
        if (2==orderDO.getOrderSource()||8==orderDO.getOrderSource()){//手表/拐杖
            Map<String,Object> map = new HashMap<>();
            map.put("inFenceStatus",false);
            map.put("inFenceName","疑似超出安全区域");
            emergencyOrderVO.setInformation(map);
        }
        if(4==orderDO.getOrderSource()){
        if(4==orderDO.getOrderSource()){//报警器
            List<DevicePatientDevice> devicePatientDeviceDos = patientDeviceDao.findByUserAndCategoryCode(orderDO.getPatient(),"12");
            if (devicePatientDeviceDos.size()==0){
            }
@ -370,7 +399,7 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
                }else {
                    monitorInfo.put("sleepPlan",false);
                }
                monitorInfo = patientSignTopicInfo(monitorInfo,orderDO.getPatient(),"preventFall");
                monitorInfo = patientSignTopicInfo(monitorInfo,orderDO.getPatient(),"preventFall",null);
                emergencyOrderVO.setInformation(monitorInfo);
            }catch (Exception e){
                e.printStackTrace();
@ -379,7 +408,7 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
        if (6==orderDO.getOrderSource()){//气感工单
            try {
                JSONObject monitorInfo = JSONObject.parseObject(orderDO.getWarnInfo());
                monitorInfo = patientSignTopicInfo(monitorInfo,orderDO.getPatient(),"preventFall");
                monitorInfo = patientSignTopicInfo(monitorInfo,orderDO.getPatient(),"preventFall",null);
                emergencyOrderVO.setInformation(monitorInfo);
            }catch (Exception e){
                e.printStackTrace();
@ -388,7 +417,7 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
        if (7==orderDO.getOrderSource()){//烟感工单
            try {
                JSONObject monitorInfo = JSONObject.parseObject(orderDO.getWarnInfo());
                monitorInfo = patientSignTopicInfo(monitorInfo,orderDO.getPatient(),"preventFall");
                monitorInfo = patientSignTopicInfo(monitorInfo,orderDO.getPatient(),"preventFall",null);
                emergencyOrderVO.setInformation(monitorInfo);
            }catch (Exception e){
                e.printStackTrace();
@ -1276,57 +1305,156 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
                    break;
            }
        }
        result = patientSignTopicInfo(result,patient,topicItem);
        result = patientSignTopicInfo(result,patient,topicItem,null);
        return result;
    }
    public void preventLost(JSONObject result,String patient){
        List<DevicePatientDevice> devicePatientDeviceDos = patientDeviceDao.findByUserAndCategoryCode(patient,"4");
        if (devicePatientDeviceDos.size()==0){
            return;
        }
        DevicePatientDevice device = devicePatientDeviceDos.get(0);
        result.put("deviceSn",device.getDeviceSn());
    public void preventLost(JSONObject result,String patient,String deviceSn){
        //手表与拐杖同时绑定时优先手表,围栏状态其中一个超出围栏即为超出围栏
        try {
            JSONObject response= patientDeviceService.getAqgDeviceInfo(device.getDeviceSn());
            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);
                    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"));
                    result.put("location",tmp);
            Integer categoryCode=0;
            List<DevicePatientDevice> devicePatientDeviceDos = new ArrayList<>();
            List<DevicePatientDevice> devicePatientDeviceDos2 = new ArrayList<>();
            if (StringUtils.isNotBlank(deviceSn)){//查看指定设备详情
                List<DevicePatientDevice> devices = patientDeviceDao.findByDeviceSn(deviceSn);
                if (devices.size()>0){
                   String categoryCodeTmp = devices.get(0).getCategoryCode();
                    categoryCode = StringUtils.isBlank(categoryCodeTmp)?-1:Integer.parseInt(categoryCodeTmp);
                    if (4==categoryCode){
                        devicePatientDeviceDos = devices;
                    }
                    if (16==categoryCode){
                        devicePatientDeviceDos2 = devices;
                    }
                }
                //围栏信息
                if (response.containsKey("fences")&&response.get("fences")!=null){
                    JSONArray fencesArr = response.getJSONArray("fences");
                    JSONArray fencesEnables = new JSONArray();
                    for (int i=0;i<fencesArr.size();i++){
                        JSONObject tmp = fencesArr.getJSONObject(i);
                        if (tmp.getBooleanValue("enable")){//围栏生效
                            JSONObject fenceTmp = new JSONObject();
                            fenceTmp.put("fenceNO",tmp.getInteger("seqid").toString());
                            fenceTmp.put("name",tmp.getString("name"));
                            JSONArray fenceLocationTmp = tmp.getJSONObject("safe_area").getJSONArray("coordinates").getJSONArray(0);
                            JSONArray fenceLocation = new JSONArray();
                            for (int j=0;j<fenceLocationTmp.size();j++){
                                Double lon = fenceLocationTmp.getJSONArray(j).getDouble(0);
                                Double lat = fenceLocationTmp.getJSONArray(j).getDouble(1);
                                JSONObject positionTmp = gpsUtil.gcj02_To_Bd09(lat,lon);
                                fenceLocation.add(positionTmp);
            }else {
                devicePatientDeviceDos = patientDeviceDao.findByUserAndCategoryCode(patient,"4");
                devicePatientDeviceDos2 = patientDeviceDao.findByUserAndCategoryCode(patient,"16");
            }
            if (devicePatientDeviceDos.size()>0&&(4==categoryCode||0==categoryCode)){
                DevicePatientDevice device = devicePatientDeviceDos.get(0);
                result.put("deviceSn",device.getDeviceSn());
                JSONObject response= patientDeviceService.getAqgDeviceInfo(device.getDeviceSn());
                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);
                        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"));
                        result.put("location",tmp);
                    }
                    //围栏信息
                    if (response.containsKey("fences")&&response.get("fences")!=null){
                        JSONArray fencesArr = response.getJSONArray("fences");
                        JSONArray fencesEnables = new JSONArray();
                        for (int i=0;i<fencesArr.size();i++){
                            JSONObject tmp = fencesArr.getJSONObject(i);
                            if (tmp.getBooleanValue("enable")){//围栏生效
                                JSONObject fenceTmp = new JSONObject();
                                fenceTmp.put("fenceNO",tmp.getInteger("seqid").toString());
                                fenceTmp.put("name",tmp.getString("name"));
                                JSONArray fenceLocationTmp = tmp.getJSONObject("safe_area").getJSONArray("coordinates").getJSONArray(0);
                                JSONArray fenceLocation = new JSONArray();
                                for (int j=0;j<fenceLocationTmp.size();j++){
                                    Double lon = fenceLocationTmp.getJSONArray(j).getDouble(0);
                                    Double lat = fenceLocationTmp.getJSONArray(j).getDouble(1);
                                    JSONObject positionTmp = gpsUtil.gcj02_To_Bd09(lat,lon);
                                    fenceLocation.add(positionTmp);
                                }
                                fenceTmp.put("location",fenceLocation);
                                fenceTmp.put("inFenceStatus",countDistance.isInPolygon(result.getJSONObject("location").getDouble("lon"),result.getJSONObject("location").getDouble("lat"),fenceLocation));
                                fencesEnables.add(fenceTmp);
                            }
                            fenceTmp.put("location",fenceLocation);
                            fenceTmp.put("inFenceStatus",countDistance.isInPolygon(result.getJSONObject("location").getDouble("lon"),result.getJSONObject("location").getDouble("lat"),fenceLocation));
                            fencesEnables.add(fenceTmp);
                        }
                        if (fencesEnables.size()>0){
                            result.put("fences",fencesEnables);
                        }
                    }
                    if (fencesEnables.size()>0){
                        result.put("fences",fencesEnables);
                }
            }
            if (devicePatientDeviceDos2.size()>0&&(16==categoryCode||0==categoryCode)) {
                DevicePatientDevice deviceDO = devicePatientDeviceDos2.get(0);
                double dulat = 0l;
                double dulon = 0l;
                //获取当前定位
                String sql = " SELECT * FROM base_yxdevice_index WHERE sn = '" + deviceDO.getDeviceSn() + "' " +
                        "AND create_time LIKE '" + DateUtil.getStringDateShort() + "%' AND lon != 0 AND lat != 0 ORDER BY create_time DESC  ";
                List<Map<String, Object>> pointTmp = jdbcTemplate.queryForList(sql);
                if (pointTmp.size() > 0) {
                    dulat = Double.parseDouble(pointTmp.get(0).get("lat").toString());
                    dulon = Double.parseDouble(pointTmp.get(0).get("lon").toString());
                }
                if ((dulat == 0.0 && dulon == 0.0)) {
                    BasePatientDO patientDO = basePatientDao.findById(deviceDO.getUser());
                    String points = patientDO.getLatLon();
                    if (StringUtils.isNotBlank(points)) {
                        String[] pointss = points.split(",");
                        if (2 == pointss.length) {
                            if (StringUtils.isNotBlank(pointss[0])) {
                                dulat = Double.parseDouble(pointss[0]);
                            }
                            if (StringUtils.isNotBlank(pointss[1])) {
                                dulat = Double.parseDouble(pointss[1]);
                            }
                        }
                    }
                }
                if (!(dulat == 0.0 && dulon == 0.0)) {
                    List<PatientSafeAreaDO> safeAreaDOS = safeAreaDao.findByPatient(deviceDO.getUser());
                    String safeArea=null;
                    if (safeAreaDOS.size()>0){
                        safeArea = safeAreaDOS.get(0).getSafeAreaGz();
                    }
                    JSONArray fenceLocation = new JSONArray();
                    String address = LatitudeUtils.getLocationAddress(dulat + "", dulon + "");
                    if (StringUtils.isNotBlank(safeArea)) {
                        String[] safeAreas = safeArea.split(";");
                        for (String area : safeAreas) {
                            String[] areaPoint = area.split(",");
                            JSONObject positionTmp = new JSONObject();
                            Double areaLon = Double.parseDouble(areaPoint[0]);
                            Double areaLat = Double.parseDouble(areaPoint[1]);
                            positionTmp.put("lat", areaLat);
                            positionTmp.put("lon", areaLon);
                            fenceLocation.add(positionTmp);
                        }
                        if (devicePatientDeviceDos2.size() > 0 && 0 == categoryCode) {
                            JSONObject obj = result.getJSONArray("fences").getJSONObject(0);
                            if (!obj.getBooleanValue("inFenceStatus")) {
                                if (!countDistance.isInPolygon(dulon, dulat, fenceLocation)) {
                                    obj.put("inFenceStatus", false);
                                    obj = result.getJSONObject("location");
                                    obj.put("address", address);
                                    obj.put("lon", dulon);
                                    obj.put("lat", dulat);
                                }
                            }
                        }
                        if (devicePatientDeviceDos2.size() > 0 && 16 == categoryCode) {
                            if (StringUtils.isNotBlank(safeArea)) {
                                result.put("deviceSn", deviceDO.getDeviceSn());
                                JSONObject location = new JSONObject();
                                location.put("address",address);
                                location.put("province","");
                                location.put("city","");
                                location.put("lon",dulon);
                                location.put("lat",dulat);
                                result.put("location",location);
                                JSONArray fences = new JSONArray();
                                JSONObject fence = new JSONObject();
                                fence.put("fenceNO","1");
                                fence.put("name","安全区域1");
                                fence.put("inFenceStatus", countDistance.isInPolygon(dulon, dulat, fenceLocation));
                                fence.put("location", fenceLocation);
                                fences.add(fence);
                                result.put("fences",fences);
                            }
                        }
                    }
                }
            }
@ -1353,14 +1481,15 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
                        dayTime = getSleepMonitoringDay(new Date(),patient);
                    }
                    List<BaseSleepPlanDetail> planDetails = sleepPlanDetailDao.findByPatientAndDay(patient,dayTime);
                    BaseSleepPlanDetail planDetail = new BaseSleepPlanDetail();
                    if (planDetails.size()>0){
                        BaseSleepPlanDetail planDetail =  planDetails.get(0);
                        planDetail =  planDetails.get(0);
                        List<BaseSleepNightRecord> sleepNightRecordList = nightRecordDao.findByPatientAndDayOrderByCreateTimeDesc(patient,dayTime);
                        planDetail.setSleepNightRecordList(sleepNightRecordList);
                        String jsonStr = JSON.toJSONStringWithDateFormat(planDetail, "yyyy-MM-dd HH:mm:ss", SerializerFeature.WriteMapNullValue);
                        sleepInfo = JSONObject.parseObject(jsonStr);
                        sleepInfo.put("day",dayTime);
                    }
                    String jsonStr = JSON.toJSONStringWithDateFormat(planDetail, "yyyy-MM-dd HH:mm:ss", SerializerFeature.WriteMapNullValue);
                    sleepInfo = JSONObject.parseObject(jsonStr);
                    sleepInfo.put("day",dayTime);
                    List<BaseSleepPlan> sleepPlans = sleepPlanDao.findByPatient(patient);
                    if (sleepPlans.size()>0){
                        BaseSleepPlan sleepPlan = sleepPlans.get(0);
@ -1397,6 +1526,7 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
                        if (minuteFieldDiff>0){
                            outBedTime +=String.format("%d分钟", minuteFieldDiff);
                        }
                        sleepInfo.put("outBedTimeCrzq",outBed.getCreateTime());
                        sleepInfo.put("outBedTime",outBedTime);
                    }else {
                        sleepInfo.put("outBedTime","无");
@ -1413,9 +1543,16 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
        }
    }
    public void preventFire(JSONObject result,String patient,boolean video){
    public void preventFire(JSONObject result,String patient,String deviceSn,boolean video){
        String sql = "SELECT r.value from wlyy_patient_device pd,base_device_health_index r " +
                "WHERE pd.device_sn = r.device_sn and pd.`user` = '"+patient+"' ";
                "WHERE pd.device_sn = r.device_sn  ";
        if (StringUtils.isNotBlank(patient)){
            sql+=" and pd.`user` = '"+patient+"' ";
        }
        if (StringUtils.isNotBlank(deviceSn)){
            sql+=" and  r.device_sn = '"+deviceSn+"' ";
        }
        sql += " and pd.category_code='15' ORDER BY r.create_time desc LIMIT 1";
        List<Map<String,Object>> list1 = jdbcTemplate.queryForList(sql);
@ -1478,12 +1615,12 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
    }
    public JSONObject patientSignTopicInfo(JSONObject result,String patient,String topicItem){
    public JSONObject patientSignTopicInfo(JSONObject result,String patient,String topicItem,String deviceSn){
        if (null==result){
            result = new JSONObject();
        }
        if ("preventLost".equals(topicItem)||StringUtils.isBlank(topicItem)){
            preventLost(result, patient);
            preventLost(result, patient,deviceSn);
        }
        if ("preventFall".equals(topicItem)||StringUtils.isBlank(topicItem)){
            monitorInfo(result, patient);
@ -1492,7 +1629,7 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
            preventOutOfBed(result, patient,true,null);
        }
        if ("preventFire".equals(topicItem)||StringUtils.isBlank(topicItem)){
            preventFire(result, patient,true);
            preventFire(result, patient,null,true);
        }
        if ("preventGasLeakage".equals(topicItem)||StringUtils.isBlank(topicItem)){
            preventGasLeakage(result, patient,true);

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

@ -36,7 +36,6 @@ import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
@ -149,6 +148,11 @@ public class ServicePackageService extends BaseJpaService<ServicePackageDO, Serv
                    patientLabelDO.setLabelName(dictService.fingByNameAndCode(ConstantUtil.DICT_SERVICE_TYPE,lableCode));
                    patientLabelDao.save(patientLabelDO);
                    //居民签约状态
                    BasePatientDO patientDO = patientDao.findById(patientId);
                    patientDO.setSignStatus(1);
                    patientDao.save(patientDO);
                    //修改base_patient_add里面的del,状态修改成0
                }else {
                    logger.info("居民已签约,patient:"+patientId);
@ -425,37 +429,16 @@ public class ServicePackageService extends BaseJpaService<ServicePackageDO, Serv
        patientLabelDO.setLabelName(dictService.fingByNameAndCode(ConstantUtil.DICT_SERVICE_TYPE,lableCode));
        patientLabelDao.save(patientLabelDO);
        //服务项目 emergencyAssistance 只能签约一个
        String sqlItem = "select item.`code`,item.name from base_service_package_item item INNER JOIN base_service_package_record pr on item.service_package_id = pr.service_package_id\n" +
                "where pr.sign_id='"+signId+"' GROUP BY item.`code`";
        List<Map<String,Object>> itemList = jdbcTemplate.queryForList(sqlItem);
        Map<String,List<Map<String,Object>>> signItem = itemList.stream().collect(Collectors.groupingBy(e->e.get("code").toString()));
        //居民签约状态
        patientDO.setSignStatus(1);
        patientDao.save(patientDO);
        Iterator<ServicePackageRecordDO> iterator = recordDOList.iterator();
        while (iterator.hasNext()) {
            ServicePackageRecordDO recordDO = iterator.next();
            recordDO.setPatient(patientId);
            recordDO.setSignId(signId);
//            if (idList.contains(recordDO.getServicePackageId())) {
//                iterator.remove();//使用迭代器的删除方法删除
//            }
        }
/*        if(recordDOList.size()>0){
            List<String> packages = recordDOList.stream().map(ServicePackageRecordDO::getServicePackageId).collect(Collectors.toList());
            String packagesId = packages.stream().map(String::valueOf).collect(Collectors.joining("','"));
            sqlItem = "select item.`code`,item.name from base_service_package_item item " +
                    "where item.service_package_id in ('"+packagesId+"') GROUP BY item.`code`";
            itemList = jdbcTemplate.queryForList(sqlItem);
           Map<String,List<Map<String,Object>>> newItem = itemList.stream().collect(Collectors.groupingBy(e->e.get("code").toString()));
           if (newItem.containsKey("emergencyAssistance")&&signItem.containsKey("emergencyAssistance")){
               String message = "重复签约服务项目:"+newItem.get("emergencyAssistance").get(0).get("name").toString();
               throw new Exception(message);
           }
        }*/
//        CapacityAssessmentRecordDO capacityAssessmentRecordDO = capacityAssessmentRecordService.findAssessmentByPatientId(patientId);
//        capacityAssessmentRecordDO.setServicePackageStatus(1);
//        capacityAssessmentRecordService.save(capacityAssessmentRecordDO);
        servicePackageRecordDao.save(recordDOList);
        //修改床位生请状态为已完成

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

@ -61,7 +61,7 @@ public class DetectionPlatformService  {
            List<Map<String,Object>> list = jdbcTemplate.queryForList(sql);
            return PageEnvelop.getSuccessListWithPage("查询成功",list,page,pageSize,count);
        }else {
            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` \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 ";
            String countSql = "select count(id) from ("+sql+")A ";
            long count = jdbcTemplate.queryForObject(countSql,long.class);
@ -105,9 +105,9 @@ public class DetectionPlatformService  {
                "(SELECT COUNT(pd.id) isUse FROM wlyy_devices d,wlyy_patient_device pd WHERE d.device_type = 0 AND d.device_code = pd.device_sn AND pd.del = 0) isUse";
        List<Map<String , Object>> healthList = jdbcTemplate.queryForList(healthSql);
        if (healthList.size() > 0) {
            object.put("healthAllCount",securityList.get(0).get("allCount"));//健康设备总量
            object.put("healthIsUseCount",securityList.get(0).get("isUse"));//健康设备使用中数量
            object.put("healthInventoryCount",securityList.get(0).get("inventory"));//健康设备库存量
            object.put("healthAllCount",healthList.get(0).get("allCount"));//健康设备总量
            object.put("healthIsUseCount",healthList.get(0).get("isUse"));//健康设备使用中数量
            object.put("healthInventoryCount",healthList.get(0).get("inventory"));//健康设备库存量
        } else {
            object.put("healthAllCount",0);//健康设备总量
            object.put("healthIsUseCount",0);//健康设备使用中数量
@ -169,6 +169,7 @@ public class DetectionPlatformService  {
    public JSONArray getDeviceByCondition(String categoryCode , String user){
        JSONArray jsonArray = new JSONArray();
        JSONArray arrayAll = new JSONArray();
        List<DevicePatientDevice> patientDevices = patientDeviceDao.findAllGroupUser();
        if (StringUtils.isNotBlank(categoryCode)) {  //categoryCode != null   根据设备类型查询
            patientDevices = patientDeviceDao.findAllByCategoryCode(categoryCode);
@ -187,7 +188,6 @@ public class DetectionPlatformService  {
//        List<Map<String , Object>> userList = jdbcTemplate.queryForList(userSql);
        if (patientDevices.size() > 0) {
            for (int i=0;i<patientDevices.size();i++) {
                JSONArray arrayAll = new JSONArray();
                JSONArray array = new JSONArray();
                JSONObject userObj = new JSONObject();
                userObj.put("patient",patientDevices.get(i).getUser());
@ -222,13 +222,12 @@ public class DetectionPlatformService  {
                        userObj.put("deviceInfo",array);
                        arrayAll.add(userObj);
                    }
                    jsonArray.add(arrayAll);
                }
            }
        } else {
            return jsonArray;
            return arrayAll;
        }
        return jsonArray;
        return arrayAll;
    }
    public JSONObject getDeviceInfo(String deviceSn) throws Exception{
@ -245,6 +244,16 @@ public class DetectionPlatformService  {
                    "FROM wlyy_patient_device pd,base_patient p WHERE p.id = pd.`user` AND p.del = 1 AND pd.del = 0 AND pd.device_sn = '"+deviceSn+"'";
            List<Map<String , Object>> patientInfoList = jdbcTemplate.queryForList(patientInfoSql);
            if (patientInfoList.size() > 0) {
                String addresSql = "SELECT sp.org_code orgCode,sp.org_name orgName FROM base_service_package_record spr , base_service_package sp\n" +
                        "WHERE spr.service_package_id = sp.id AND spr.patient = '"+patientInfoList.get(0).get("patient")+"' AND sp.org_code IS NOT NULL GROUP BY sp.org_code,sp.org_name";
                List<Map<String, Object>> addressList = jdbcTemplate.queryForList(addresSql);
                if (addressList.size() > 0) {
                    object.put("orgName",addressList.get(0).get("orgName"));
                    object.put("orgCode",addressList.get(0).get("orgCode"));
                } else {
                    object.put("orgName","");
                    object.put("orgCode","");
                }
                categoryCode = patientInfoList.get(0).get("categoryCode").toString();
                object.put("patientName",patientInfoList.get(0).get("patientName"));
                object.put("patient",patientInfoList.get(0).get("patient"));
@ -252,8 +261,10 @@ public class DetectionPlatformService  {
                object.put("idcard",patientInfoList.get(0).get("idcard"));
                object.put("address",patientInfoList.get(0).get("address"));
                String dataSql= "";
                String recordSql = "";
                List<Map<String , Object>> dataList = new ArrayList<>();
                switch (categoryCode) {
                List<Map<String , Object>> recordList = new ArrayList<>();
                switch (categoryCode) {     //设备数据
                    // 1=血糖仪  2=血压计 14=燃气报警器  15=烟雾报警器
                    // 4=智能手表  7=居家安全报警器  16=智能拐杖  13=智能床带/睡眠带
                    case "1" :
@ -266,15 +277,35 @@ public class DetectionPlatformService  {
                        dataList = jdbcTemplate.queryForList(dataSql);
                        object.put("data",dataList);
                        break;
                    case "4" :  //只能手表
                        //检测指标
                        //使用数据
                        //监护记录
                        break;
                    case "7" :  //居家安全报警器
                        break;
                    case "13" : //睡眠带
                        String nightRecordSql = "SELECT * FROM base_sleep_night_record WHERE device_sn = '"+deviceSn+"' ORDER BY create_time DESC LIMIT 0,20";
                        List<Map<String , Object>> nightRecordList = jdbcTemplate.queryForList(nightRecordSql);
                        object.put("nightRecordList",nightRecordList);  //起夜记录
                        break;
                    case "14" :
                        dataSql = "SELECT record_time recordDate,`value`,unit,device_type FROM base_device_health_index WHERE device_sn = '"+deviceSn+"' ORDER BY record_time DESC LIMIT 10 ";
                        dataList = jdbcTemplate.queryForList(dataSql);
                        object.put("data",dataList);
                        recordSql = "SELECT * FROM base_device_health_index WHERE device_sn = '"+deviceSn+"' order by record_time desc ";
                        recordList = jdbcTemplate.queryForList(recordSql);
                        object.put("record",recordList);
                        break;
                    case "15" :
                        dataSql = "SELECT record_time recordDate,`value`,unit,device_type FROM base_device_health_index WHERE device_sn = '"+deviceSn+"' ORDER BY record_time DESC LIMIT 10 ";
                        dataList = jdbcTemplate.queryForList(dataSql);
                        object.put("data",dataList);
                        recordSql = "SELECT * FROM base_device_health_index WHERE device_sn = '"+deviceSn+"' order by record_time desc ";
                        recordList = jdbcTemplate.queryForList(recordSql);
                        object.put("record",recordList);
                        break;
                    case "16" : //智能拐杖
                        break;
                }
            } else {
@ -286,4 +317,10 @@ public class DetectionPlatformService  {
        return object;
    }
    public List<Map<String , Object>> nightRecordList(String deviceSn){
        String nightRecordSql = "SELECT * FROM base_sleep_night_record WHERE device_sn = '"+deviceSn+"' ORDER BY create_time DESC LIMIT 0,20";
        List<Map<String , Object>> nightRecordList = jdbcTemplate.queryForList(nightRecordSql);
        return nightRecordList;  //起夜记录
    }
}

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

@ -10,7 +10,6 @@ import com.yihu.jw.doctor.dao.BaseDoctorDao;
import com.yihu.jw.doctor.dao.BaseDoctorHospitalDao;
import com.yihu.jw.entity.base.login.BaseLoginLogDO;
import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.entity.patient.Patient;
import com.yihu.jw.es.util.ElasticsearchUtil;
import com.yihu.jw.es.util.SaveModel;
import com.yihu.jw.im.util.ImUtil;
@ -27,6 +26,7 @@ import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import java.text.DecimalFormat;
import java.util.*;
import java.util.stream.Collectors;
@ -71,7 +71,7 @@ public class StatisticsService {
     * @return
     * @throws Exception
     */
    public JSONObject statisticsTotalAmount( String endDate) throws Exception {
    public JSONObject statisticsTotalAmount(String endDate) throws Exception {
        JSONObject res = new JSONObject();
        String index = "28,31,35,37,39,41,43,44";
        String[] indexes = index.split(",");
@ -87,21 +87,47 @@ public class StatisticsService {
    }
    public JSONObject serviceResources(){
//        String sql = "SELECT type , COUNT(1) count FROM base_org WHERE del = 1 GROUP BY type";
//        List<Map<String , Object>> list = jdbcTemplate.queryForList(sql);
        String orgFilter = "";
        String sqlOrg = "SELECT GROUP_CONCAT(dict_code) orgCodes from wlyy_hospital_sys_dict WHERE dict_name = 'jkzl_org' ";
        List<Map<String,Object>> listOrg =  jdbcTemplate.queryForList(sqlOrg);
        if(listOrg.size()>0){
            String orgCodes = String.valueOf(listOrg.get(0).get("orgCodes"));
            orgCodes = orgCodes.replaceAll(",","','");
            orgFilter = " and code not in ('"+orgCodes+"')";
        }
        JSONObject res = new JSONObject();
        String medicalInstitutionSql = "SELECT COUNT(1) FROM base_org WHERE (type = 1 OR type = 2) AND del = 1;";
        String elderlyCarServiceSql = "SELECT COUNT(1) FROM base_org WHERE type = 3 AND del = 1";
        String childcareInstitutionsssSql = "SELECT COUNT(1) FROM base_org WHERE type = 4 AND del = 1";
        String doctorSql = "SELECT COUNT(1) FROM base_doctor WHERE del = 1 AND doctor_level = 1";
        String helperSql = "SELECT COUNT(1) FROM base_doctor WHERE del = 1 AND doctor_level = 2";
        String teacherSql = "SELECT COUNT(1) FROM base_doctor WHERE del = 1 AND doctor_level = 3";
        String medicalInstitutionSql = "SELECT COUNT(1) FROM base_org WHERE (type = 1 OR type = 2) AND del = 1 ";
        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;
        //助老员和教师注册人数
        Integer doctorNum = 0;
        Integer helperNum = 0;
        Integer teacherNum = 0;
        String sql2 = "SELECT COUNT(a.id) c,a.doctor_level from base_doctor a,base_doctor_hospital h where a.id=h.doctor_code and a.del = '1' and h.del = '1' " +
                "and a.doctor_level is not null and h.org_code not in ( " +
                "SELECT dict_code from wlyy_hospital_sys_dict WHERE dict_name = 'jkzl_org'  " +
                ") GROUP BY a.doctor_level";
        List<Map<String,Object>> list2 = jdbcTemplate.queryForList(sql2);
        for(Map<String,Object> map:list2){
            String archive_type = map.get("doctor_level").toString();
            Integer num = Integer.valueOf(map.get("c").toString());
            if("1".equals(archive_type)){
                doctorNum = num;
                continue;
            }
            if("2".equals(archive_type)){
                helperNum = num;
                continue;
            }
            if("3".equals(archive_type)){
                teacherNum = num;
            }
        }
        Integer medicalInstitutionNum = jdbcTemplate.queryForObject(medicalInstitutionSql,Integer.class);
        Integer elderlyCarServiceNum = jdbcTemplate.queryForObject(elderlyCarServiceSql,Integer.class);
        Integer childcareInstitutionsssNum = jdbcTemplate.queryForObject(childcareInstitutionsssSql,Integer.class);
        Integer doctorNum = jdbcTemplate.queryForObject(doctorSql,Integer.class);
        Integer helperNum = jdbcTemplate.queryForObject(helperSql,Integer.class);
        Integer teacherNum = jdbcTemplate.queryForObject(teacherSql,Integer.class);
        res.put("medicalInstitutionNum",medicalInstitutionNum);             //医疗结构
        res.put("elderlyCarServiceNum",elderlyCarServiceNum);               //养老机构
        res.put("childcareInstitutionsssNum",childcareInstitutionsssNum);   //托育机构
@ -114,9 +140,22 @@ public class StatisticsService {
    // v0.7.0实时数据 照护对象、检测设备、紧急救助
    public JSONObject realTimeDataNew() throws Exception {
        JSONObject res = new JSONObject();
        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 id not in ('"+orgCodes+"')";
        }
        Integer olderTotal = 0;
        Integer childTotal = 0;
        String sql1 = "SELECT COUNT(*) c,archive_type*1 as archive_type from base_patient WHERE archive_type is not null and del='1' GROUP BY archive_type";
        String sql1 = "SELECT COUNT(*) c,archive_type*1 as archive_type from base_patient WHERE archive_type is not null and del='1' ";
        sql1 += filter;
        sql1 += " GROUP BY archive_type";
        List<Map<String,Object>> list1 = jdbcTemplate.queryForList(sql1);
        for(Map<String,Object> map:list1){
            String archive_type = map.get("archive_type").toString();
@ -338,22 +377,54 @@ public class StatisticsService {
        Integer childTotal = 0;
        Integer helperTotal = 0;
        Integer teacherTotal = 0;
        Integer olderOff = 0;
        Integer childOff = 0;
        Integer helperOff = 0;
        Integer teacherOff = 0;
        Integer helperOn = 0;
        Integer teacherOn = 0;
        Integer childOn = 0;
        Integer olderOn = 0;
        Integer olderWxOn = 0;
        Integer olderPadOn = 0;
        //老人 儿童注册人数
        String sql1 = "SELECT COUNT(*) c,archive_type*1 as archive_type from base_patient WHERE archive_type is  not null and del='1' GROUP BY archive_type";
        String pateintFilter = "";
        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(",","','");
            pateintFilter = " and id not in ('"+orgCodes+"')";
        }
        String sql1 = "SELECT COUNT(*) c,archive_type*1 as archive_type,IFNULL(on_line,0) online from base_patient WHERE archive_type is  not null" +
                " and del='1' "+pateintFilter+" GROUP BY archive_type";
        List<Map<String,Object>> list1 = jdbcTemplate.queryForList(sql1);
        for(Map<String,Object> map:list1){
            String archive_type = map.get("archive_type").toString();
            Integer num = Integer.valueOf(map.get("c").toString());
            Integer online = Integer.valueOf(map.get("online").toString());
            if("1".equals(archive_type)){
                olderTotal = num;
                if(online == 1){
                    olderOn = num;
                }else{
                    olderOff = num;
                }
                continue;
            }
            if("2".equals(archive_type)){
                childTotal = num;
                if(online == 1){
                    childOn = num;
                }else{
                    childOff = num;
                }
            }
        }
        olderTotal = olderOff+olderOn;
        childTotal = childOff+childOn;
        //助老员和教师注册人数
        String sql2 = "SELECT COUNT(a.id) c,a.doctor_level from base_doctor a,base_doctor_hospital h where a.id=h.doctor_code and a.del = '1' and h.del = '1' " +
        String sql2 = "SELECT COUNT(a.id) c,a.doctor_level,IFNULL(a.on_line,0) online from base_doctor a,base_doctor_hospital h where a.id=h.doctor_code and a.del = '1' and h.del = '1' " +
                "and a.doctor_level is not null and h.org_code not in ( " +
                "SELECT dict_code from wlyy_hospital_sys_dict WHERE dict_name = 'jkzl_org'  " +
                ") GROUP BY a.doctor_level";
@ -361,50 +432,32 @@ public class StatisticsService {
        for(Map<String,Object> map:list2){
            String archive_type = map.get("doctor_level").toString();
            Integer num = Integer.valueOf(map.get("c").toString());
            Integer online = Integer.valueOf(map.get("online").toString());
            if("2".equals(archive_type)){
                helperTotal = num;
                if(online == 1){
                    helperOn = num;
                }else{
                    helperOff = num;
                }
                continue;
            }
            if("3".equals(archive_type)){
                teacherTotal = num;
                if(online == 1){
                    teacherOn = num;
                }else{
                    teacherOff = num;
                }
            }
        }
        helperTotal = helperOff+helperOn;
        teacherTotal = teacherOff+teacherOn;
        //helper 助老员,teacher 教师,child 幼儿,olderWx 老人公众号,olderPad 老人平板
        String onlineCount = imUtil.getOnlineCountByType("");
        JSONObject jsonObject = JSON.parseObject(onlineCount).getJSONObject("data");
        //olderPad":0,"olderWx":0,"child":0,"teacher":0,"helper":0
        Integer helperOn = jsonObject.getInteger("helper");
        Integer teacherOn = jsonObject.getInteger("teacher");
        Integer childOn = jsonObject.getInteger("child");
        Integer olderWxOn = jsonObject.getInteger("olderWx");
        Integer olderPadOn = jsonObject.getInteger("olderPad");
        int repeatNum = 0;
        if(olderWxOn>0&&olderPadOn>0){
            //2个都大于0 要计算重复的人数
            String onlineOlderWx = imUtil.getOnlineListByType("olderWx");
            JSONObject olderWx = JSON.parseObject(onlineOlderWx);
            List<String> list = new ArrayList(olderWx.size());
            olderWx.entrySet().stream().forEach(one->{
                list.add(one.getKey());
            });
            String onlineOlderPad = imUtil.getOnlineListByType("olderPad");
            JSONObject olderPad = JSON.parseObject(onlineOlderPad);
            for (Map.Entry<String,Object> s:olderPad.entrySet()){
                if(list.contains(s.getKey())){
                    repeatNum++;
                }
            }
        }
        Integer olderOff = olderTotal - olderWxOn - olderPadOn + repeatNum;
        olderOff = olderOff>0?olderOff:0;
        Integer childOff = childTotal - childOn;
        Integer helperOff = helperTotal - helperOn;
        Integer teacherOff = teacherTotal - teacherOn;
        olderWxOn = jsonObject.getInteger("olderWx");
        olderPadOn = jsonObject.getInteger("olderPad");
        result.put("olderTotal",olderTotal);
        result.put("childTotal",childTotal);
@ -676,16 +729,22 @@ public class StatisticsService {
    public JSONArray capacityAssessment(String endDate, String area, int level) throws Exception{
        //评估类型
        JSONArray jsonArray = new JSONArray();
        List<SaveModel> list = statisticsUtilService.findDateAllQuotaLevel1Sort(endDate,endDate,area,level,"37",SaveModel.timeLevel_DDL,null,null);
        for(int i=0;i<list.size();i++){
            SaveModel saveModel = list.get(i);
        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' " +
                "where  dict.dict_name='service_type' and  dict.dict_code is not null and dict_code<>5  \n" +
                " GROUP BY dict.dict_code; ";
        List<Map<String,Object>> list = jdbcTemplate.queryForList(sql);
        String older = "  select count(DISTINCT patient) from wlyy_patient_label where label_type='1' ";
        Integer count = jdbcTemplate.queryForObject(older,Integer.class);
        for(Map<String,Object> map:list){
            JSONObject json = new JSONObject();
            if (saveModel.getResult2().longValue()==0&&StringUtils.isBlank(saveModel.getSlaveKey1())){
                continue;
            }
            json.put("num",saveModel.getResult2().longValue());
            json.put("code",saveModel.getSlaveKey1());
            json.put("name",saveModel.getSlaveKey1Name());
            DecimalFormat df = new DecimalFormat("0.00");
            json.put("rate", df.format((Integer.parseInt(map.get("total").toString())*1.00) / count * 100));
            json.put("num", map.get("total"));
            json.put("code",map.get("dict_code").toString());
            json.put("name",map.get("dict_value").toString());
            jsonArray.add(json);
        }
        return jsonArray;

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

@ -46,6 +46,10 @@ public class YsConfig {
    //云台停止
    public static final String ptzStop = iotBaseUrl +"/api/lapp/device/ptz/stop";
    public static final String openChannelNo = iotBaseUrl +"/api/lapp/live/video/open";
    public static final String defenceSet = iotBaseUrl +"/open.ys7.com/api/lapp/device/intelligence/detection/switch/set";
    /**
     * 录像相关
     */

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

@ -11,5 +11,6 @@ public interface BasePatientOutBedDao extends PagingAndSortingRepository<BasePat
        JpaSpecificationExecutor<BasePatientOutBed> {
    BasePatientOutBed findByPatientAndDeviceSnAndStatus(String patient,String deviceSn,Integer status);
    BasePatientOutBed findByPatientAndDeviceSn(String patient,String deviceSn);
}

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

@ -0,0 +1,21 @@
package com.yihu.jw.care.dao.device;
import com.yihu.jw.entity.care.device.PatientSafeAreaDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
/**
 * Created by Bing on 2021/8/31.
 */
public interface PatientSafeAreaDao extends PagingAndSortingRepository<PatientSafeAreaDO,Long>,
        JpaSpecificationExecutor<PatientSafeAreaDO> {
    List<PatientSafeAreaDO> findByPatient(String patient);
    @Modifying
    void deleteByPatient(String patient);
}

+ 30 - 20
svr/svr-cloud-device/src/main/java/com/yihu/jw/care/endpoint/DeviceController.java

@ -5,6 +5,7 @@ import com.alibaba.fastjson.serializer.SerializerFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.jw.care.dao.device.DeviceDetailDao;
import com.yihu.jw.care.service.DeviceService;
import com.yihu.jw.care.service.YsDeviceService;
import com.yihu.jw.entity.care.device.DeviceDetail;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@ -31,7 +32,7 @@ import java.util.*;
 * @Description:
 */
@RestController
@RequestMapping("/device")
@RequestMapping(value = "/device",produces = "application/json")
@Api(value = "爱牵挂设备相关服务", description = "设备相关服务")
public class DeviceController {
@ -41,6 +42,8 @@ public class DeviceController {
    private DeviceService deviceService;
    @Autowired
    private DeviceDetailDao deviceDetailDao;
    @Autowired
    private YsDeviceService ysDeviceService;
    @RequestMapping(value = "/importDeviceFromExcel", produces = "application/json;charset=UTF-8",method = RequestMethod.POST)
    @ResponseBody
@ -130,6 +133,9 @@ public class DeviceController {
                    errorMsgMap.put(deviceCode,"该sim卡号已存在");
                    continue;
                }
                if ("CS-C6Wi-3E4WFR".equals(deviceModel)){//监控器 直播地址开通->关闭视频加密 后续暂时先于APP操作
                    ysDeviceService.videoOpen(deviceCode,null);
                }
                deviceDetail.setApplyDate(sdf.format(new Date()));
                deviceDetail.setManufacturer(manufacturer);
                deviceDetail.setDeviceName(deviceName);
@ -161,7 +167,7 @@ public class DeviceController {
    }
    @ApiOperation("爱牵挂设备sos数据接收")
    @RequestMapping(value = "aqgsos", produces = "application/x-www-form-urlencoded;charset=UTF-8", method = {RequestMethod.POST,RequestMethod.GET})
    @RequestMapping(value = "aqgsos", method = {RequestMethod.POST,RequestMethod.GET})
    public String aqgsos(
            @ApiParam(name="imei",required = false,value="15位设备唯一序号",defaultValue = "")
            @RequestParam(value = "imei",required = false) String imei,
@ -171,10 +177,13 @@ public class DeviceController {
            @RequestParam(value = "time_begin",required = false) String time_begin,
            HttpServletRequest request) {
        try {
            String paraString = JSON.toJSONString(request.getParameterMap());
            logger.info("爱牵挂设备sos数据接收,请求参数:\n"+paraString);
            long startTime=System.currentTimeMillis();
            String paraString = JSON.toJSONString(request.getParameterMap());
            deviceService.aqgsos(imei, label_mac, time_begin,request);
            long endTime=System.currentTimeMillis();
            logger.info("爱牵挂设备sos数据接收,请求参数:\n"+paraString+"\n"+(endTime-startTime)+"ms");
            return success();
        } catch (Exception e) {
            e.printStackTrace();
@ -183,7 +192,7 @@ public class DeviceController {
    }
    @ApiOperation("爱牵挂设备开关机数据接收")
    @RequestMapping(value = "aqgSwitch", produces = "application/x-www-form-urlencoded;charset=UTF-8", method = {RequestMethod.POST,RequestMethod.GET})
    @RequestMapping(value = "aqgSwitch", method = {RequestMethod.POST,RequestMethod.GET})
    public String aqgSwitch(
            @ApiParam(name="imei",required = false,value="15位设备唯一序号",defaultValue = "")
            @RequestParam(value = "imei",required = false) String imei,
@ -207,7 +216,7 @@ public class DeviceController {
    }
    @ApiOperation("爱牵挂设备消息通知数据接收")
    @RequestMapping(value = "pushdata", produces = "application/x-www-form-urlencoded;charset=UTF-8", method = {RequestMethod.POST,RequestMethod.GET})
    @RequestMapping(value = "pushdata", method = {RequestMethod.POST,RequestMethod.GET})
    public String pushdata(
            @ApiParam(name="type",required = false,value="根据type来定义给用户推送提示  type=1 SOS,type=5 设备低电, 其他类型非本机型所有",defaultValue = "")
            @RequestParam(value = "type",required = false) int type,
@ -217,11 +226,11 @@ public class DeviceController {
            @RequestParam(value = "communityid",required = false) String communityid,
            HttpServletRequest request) {
        try {
            long startTime=System.currentTimeMillis();
            String paraString = JSON.toJSONString(request.getParameterMap());
            logger.info("爱牵挂设备消息通知数据接收,请求参数:\n"+paraString);
            deviceService.pushdata(type, deviceid, communityid, request);
            long endTime=System.currentTimeMillis();
            logger.info("爱牵挂设备消息通知数据接收,请求参数:\n"+paraString+"\n"+(endTime-startTime)+"ms");
            return success();
        } catch (Exception e) {
            e.printStackTrace();
@ -231,7 +240,7 @@ public class DeviceController {
    //
    @ApiOperation("爱牵挂位置接收")
    @RequestMapping(value = "byLocation", produces = "application/x-www-form-urlencoded;charset=UTF-8", method = {RequestMethod.POST,RequestMethod.GET})
    @RequestMapping(value = "byLocation", method = {RequestMethod.POST,RequestMethod.GET})
    public String byLocation(
            @ApiParam(name="imei",required = false,value="15位设备唯一序号",defaultValue = "")
            @RequestParam(value = "imei",required = true) String imei,
@ -266,7 +275,7 @@ public class DeviceController {
    @ApiOperation("爱牵挂心率数据接收")
    @RequestMapping(value = "byHeartRate", produces = "application/x-www-form-urlencoded;charset=UTF-8", method = {RequestMethod.POST,RequestMethod.GET})
    @RequestMapping(value = "byHeartRate",  method = {RequestMethod.POST,RequestMethod.GET})
    public String byHeartRate(
            @ApiParam(name = "imei", value = "15位设备唯一序号")
            @RequestParam(value = "imei",required = true)String imei,
@ -292,7 +301,7 @@ public class DeviceController {
    }
    @ApiOperation("爱牵挂血压数据接收")
    @RequestMapping(value = "byBloodPressure", produces = "application/x-www-form-urlencoded;charset=UTF-8", method = {RequestMethod.POST,RequestMethod.GET})
    @RequestMapping(value = "byBloodPressure",  method = {RequestMethod.POST,RequestMethod.GET})
    public String byBloodPressure(
            @ApiParam(name = "imei", value = "15位设备唯一序号", required = true)
            @RequestParam(value = "imei",required = true)String imei,
@ -320,7 +329,7 @@ public class DeviceController {
    }
    @ApiOperation("爱牵挂跌倒数据接收")
    @RequestMapping(value = "byFall", produces = "application/x-www-form-urlencoded;charset=UTF-8", method = {RequestMethod.POST,RequestMethod.GET})
    @RequestMapping(value = "byFall",  method = {RequestMethod.POST,RequestMethod.GET})
    public String byFall(
            @ApiParam(name = "imei", value = "15位设备唯一序号", required = true)
            @RequestParam(value = "imei",required = true)String imei,
@ -350,7 +359,7 @@ public class DeviceController {
    }
    @ApiOperation("设备步数接收")
    @RequestMapping(value = "bySteps", produces = "application/x-www-form-urlencoded;charset=UTF-8", method = {RequestMethod.POST,RequestMethod.GET})
    @RequestMapping(value = "bySteps",  method = {RequestMethod.POST,RequestMethod.GET})
    public String bySteps(
            @ApiParam(name="imei",required = false,value="15位设备唯一序号",defaultValue = "")
            @RequestParam(value = "imei",required = true) String imei,
@ -373,7 +382,7 @@ public class DeviceController {
    /*******************************************睡眠带begin****************************************************************/
    @ApiOperation("爱牵挂-睡眠带睡眠接收")
    @RequestMapping(value = "bySleep", produces = "application/x-www-form-urlencoded;charset=UTF-8", method = {RequestMethod.POST,RequestMethod.GET})
    @RequestMapping(value = "bySleep",  method = {RequestMethod.POST,RequestMethod.GET})
    public String bySleep(
            @ApiParam(name="device",required = false,value="睡眠带MAC地址",defaultValue = "")
            @RequestParam(value = "device",required = true) String device,
@ -391,11 +400,12 @@ public class DeviceController {
            @RequestParam(value = "is_warn",required = false)String is_warn,
            HttpServletRequest request) {
        try {
            long startTime=System.currentTimeMillis();
            String paraString = JSON.toJSONString(request.getParameterMap());
            logger.info("爱牵挂-睡眠带接收,请求参数:"+paraString);
            deviceService.bySleep(device,time_begin,heartrate,breath,bed_status,turn_over,is_warn);
            long endTime=System.currentTimeMillis();
            logger.info("爱牵挂-睡眠带接收,请求参数:"+paraString+"\n"+(endTime-startTime)+"ms");
            return success();
        } catch (Exception e) {
            e.printStackTrace();
@ -404,7 +414,7 @@ public class DeviceController {
    }
    @ApiOperation("爱牵挂-睡眠带睡眠报告接收")
    @RequestMapping(value = "bySleepReport", produces = "application/x-www-form-urlencoded;charset=UTF-8", method = {RequestMethod.POST,RequestMethod.GET})
    @RequestMapping(value = "bySleepReport",  method = {RequestMethod.POST,RequestMethod.GET})
    public String bySleep(
            @ApiParam(name="device",required = false,value="睡眠带MAC地址",defaultValue = "")
            @RequestParam(value = "device",required = true) String device,
@ -461,7 +471,7 @@ public class DeviceController {
    }
    @ApiOperation("爱牵挂-睡眠带wifi在线状态接收")
    @RequestMapping(value = "byOnlineStatus", produces = "application/x-www-form-urlencoded;charset=UTF-8", method = {RequestMethod.POST,RequestMethod.GET})
    @RequestMapping(value = "byOnlineStatus",  method = {RequestMethod.POST,RequestMethod.GET})
    public String byOnlineStatus(
            @ApiParam(name="device",required = false,value="睡眠带MAC地址",defaultValue = "")
            @RequestParam(value = "device",required = true) String device,

+ 15 - 0
svr/svr-cloud-device/src/main/java/com/yihu/jw/care/endpoint/YsDeviceController.java

@ -4,6 +4,7 @@ import com.yihu.jw.care.common.BaseController;
import com.yihu.jw.care.service.YsDeviceService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@ -45,5 +46,19 @@ public class YsDeviceController  extends BaseController {
        }
    }
    @ApiOperation("萤石摄像机直播地址开通->关闭视频加密")
    @RequestMapping(value = "video/open", produces = "application/x-www-form-urlencoded;charset=UTF-8", method = {RequestMethod.POST,RequestMethod.GET})
    public String videoOpen(
            @ApiParam(name="deviceSn",required = true,value="deviceSn")
            @RequestParam(value = "deviceSn",required = true) String deviceSn,
            HttpServletRequest request) {
        try {
            ysDeviceService.videoOpen(deviceSn,request);
            return success();
        } catch (Exception e) {
            e.printStackTrace();
            return error(-1,"error");
        }
    }
}

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

@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.yihu.jw.care.config.AqgConfig;
import com.yihu.jw.care.dao.device.*;
import com.yihu.jw.care.util.SecurityOrderUtil;
import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.entity.care.device.*;
import com.yihu.jw.entity.hospital.message.SystemMessageDO;
@ -84,6 +85,8 @@ public class DeviceService {
    private BaseSleepPlanDetailDao sleepPlanDetailDao;
    @Autowired
    private BaseSleepPlanDao sleepPlanDao;
    @Autowired
    private SecurityOrderUtil orderUtil;
    /**
     * 获取爱牵挂管理员cookie
@ -170,7 +173,7 @@ public class DeviceService {
                String sql =" select Distinct pack.org_code,pack.org_name\n" +
                        "from base_service_package_sign_record sr INNER JOIN base_service_package_record pr\n" +
                        "on sr.id = pr.sign_id and sr.status=1 INNER JOIN base_service_package_item item on pr.service_package_id = item.service_package_id and item.del=1 \n" +
                        "INNER JOIN base_service_package pack pack on pr.service_package_id = pack.id where item.code='emergencyAssistance' and sr.patient='"+patientDO.getId()+"'";
                        "INNER JOIN base_service_package pack on pr.service_package_id = pack.id where item.code='emergencyAssistance' and sr.patient='"+patientDO.getId()+"'";
                List<Map<String,Object>> sqlResult = jdbcTemplate.queryForList(sql);
                if (sqlResult.size()>0){
                    JSONObject jsonObject = new JSONObject();
@ -186,17 +189,15 @@ public class DeviceService {
                    List<NameValuePair> params = new ArrayList<>();
                    params.add(new BasicNameValuePair("jsonData", jsonObject.toJSONString()));
                    params.add(new BasicNameValuePair("patientId", logDO.getPatient()));
                    String orderSource=null;
                    if (deviceDO.getCategoryCode().equals("4")) {
                        params.add(new BasicNameValuePair("orderSource", "2"));//工单来源工单发起来源状态 1APP 2手环 3居家报警
                        orderSource="2";
                    }
                    if (deviceDO.getCategoryCode().equals("7")) {
                        params.add(new BasicNameValuePair("orderSource", "3"));
                        orderSource="3";
                    }
                    String response = httpClientUtil.post(url, params,"UTF-8");
                    System.out.println(response);
                    orderUtil.createEmeOrder(logDO,orderSource);
                }
                sosLogDao.save(logDO);
            }
        }catch(Exception e){
                e.printStackTrace();
@ -255,12 +256,12 @@ public class DeviceService {
                            String url = cloudCareUrl+"/cloudCare/noLogin/device/getDeviceLastLocation";
                            List<NameValuePair> params = new ArrayList<>();
                            params.add(new BasicNameValuePair("deviceSn", deviceDO.getDeviceSn()));
                            String response = httpClientUtil.post(url, params,"UTF-8");
                            String response = httpClientUtil.get(url, params,"UTF-8");
                            JSONObject result = com.alibaba.fastjson.JSONObject.parseObject(response);
                            JSONObject jsonObjectData =JSONObject.parseObject(AesEncryptUtils.agDecrypt(result.getString("data")));
                            Double lat = jsonObjectData.getJSONObject("data").getJSONObject("obj").getJSONObject("locationdata").getJSONObject("point").getDouble("lat");
                            Double lon = jsonObjectData.getJSONObject("data").getJSONObject("obj").getJSONObject("locationdata").getJSONObject("point").getDouble("lon");
                            String address = jsonObjectData.getJSONObject("data").getJSONObject("obj").getJSONObject("locationdata").getString("address");
                            JSONObject jsonObjectData =JSONObject.parseObject(result.getString("data"));
                            Double lat = jsonObjectData.getJSONObject("obj").getJSONObject("locationdata").getJSONObject("point").getDouble("lat");
                            Double lon = jsonObjectData.getJSONObject("obj").getJSONObject("locationdata").getJSONObject("point").getDouble("lon");
                            String address = jsonObjectData.getJSONObject("obj").getJSONObject("locationdata").getString("address");
                            String sql ="select DISTINCT pack.org_code,pack.org_name\n" +
                                    " from base_service_package_sign_record sr,base_service_package_record pr,base_service_package_item item ,base_service_package pack\n" +
@ -290,8 +291,6 @@ public class DeviceService {
                                response = httpClientUtil.post(url, params,"UTF-8");
                                System.out.println(response);
                                System.out.println(response);
                            }
                        }
                    }
@ -596,6 +595,10 @@ public class DeviceService {
                        planDetail.setDay(dayTime);
                        planDetail.setPatient(patient);
                        planDetail.setDeviceSn(device);
                        if (!needSiesta){//无午睡计划
                            SiestaBegin = bedBegin;
                        }
                        /***起床***/
                        Long timeDiffer = timeDate.getTime() - bedUp.getTime();
                        if(DateUtil.isInArea(timeDate,bedUpBegin,SiestaBegin)){//起床时间内
@ -719,37 +722,37 @@ public class DeviceService {
                    }
                    //更新患者在床状态
                    updatePatientSleepStatus(device,patient,time_begin,bed_status);
                    if (!orderCreate){
                        if ("1".equals(bed_status)){//呼吸 心率检测
                            Integer theshold_breath_h = 25;
                            Integer theshold_breath_l = 8;
                            Integer theshold_heartrate_h = 100;
                            Integer theshold_heartrate_l = 50;
                            if (StringUtils.isNotBlank(breath)){
                                Integer breath1 = Integer.parseInt(breath);
                                if (breath1>theshold_breath_h||breath1<theshold_breath_l){
                                    planDetail.setBreath(breath);
                                    planDetail.setHeartRate(heartrate);
                                    planDetail.setBedStatus(1);
                                    planDetail.setSleepNightRecordList(nightRecord.findBySnPaTime(device,patient,dayTime));
                                    outBedOrder(null,timeDate,devicePatientDeviceDos.get(0),patient,device,"心率和呼吸频率异常",JSON.toJSONStringWithDateFormat(planDetail,"yyyy-MM-dd HH:mm:ss",SerializerFeature.WriteMapNullValue));
                                    return null;
                                }
                            }
                            if (StringUtils.isNotBlank(heartrate)){
                                Integer heartrate1 = Integer.parseInt(heartrate);
                                if (heartrate1>theshold_heartrate_h||theshold_heartrate_h<theshold_heartrate_l){
                                    planDetail.setBreath(breath);
                                    planDetail.setHeartRate(heartrate);
                                    planDetail.setBedStatus(1);
                                    planDetail.setSleepNightRecordList(nightRecord.findBySnPaTime(device,patient,dayTime));
                                    outBedOrder(null,timeDate,devicePatientDeviceDos.get(0),patient,device,"心率和呼吸频率异常",JSON.toJSONStringWithDateFormat(planDetail,"yyyy-MM-dd HH:mm:ss",SerializerFeature.WriteMapNullValue));
                                    return null;
                                }
                            }
                        }
                    }
//                    if (!orderCreate){
//                        if ("1".equals(bed_status)){//呼吸 心率检测
//                            Integer theshold_breath_h = 25;
//                            Integer theshold_breath_l = 8;
//                            Integer theshold_heartrate_h = 100;
//                            Integer theshold_heartrate_l = 50;
//                            if (StringUtils.isNotBlank(breath)){
//                                Integer breath1 = Integer.parseInt(breath);
//                                if (breath1>theshold_breath_h||breath1<theshold_breath_l){
//                                    planDetail.setBreath(breath);
//                                    planDetail.setHeartRate(heartrate);
//                                    planDetail.setBedStatus(1);
//                                    planDetail.setSleepNightRecordList(nightRecord.findBySnPaTime(device,patient,dayTime));
//                                    outBedOrder(null,timeDate,devicePatientDeviceDos.get(0),patient,device,"心率和呼吸频率异常",JSON.toJSONStringWithDateFormat(planDetail,"yyyy-MM-dd HH:mm:ss",SerializerFeature.WriteMapNullValue));
//                                    return null;
//                                }
//                            }
//                            if (StringUtils.isNotBlank(heartrate)){
//                                Integer heartrate1 = Integer.parseInt(heartrate);
//                                if (heartrate1>theshold_heartrate_h||theshold_heartrate_h<theshold_heartrate_l){
//                                    planDetail.setBreath(breath);
//                                    planDetail.setHeartRate(heartrate);
//                                    planDetail.setBedStatus(1);
//                                    planDetail.setSleepNightRecordList(nightRecord.findBySnPaTime(device,patient,dayTime));
//                                    outBedOrder(null,timeDate,devicePatientDeviceDos.get(0),patient,device,"心率和呼吸频率异常",JSON.toJSONStringWithDateFormat(planDetail,"yyyy-MM-dd HH:mm:ss",SerializerFeature.WriteMapNullValue));
//                                    return null;
//                                }
//                            }
//
//                        }
//                    }
                }
            }
        } catch (Exception e) {
@ -813,26 +816,19 @@ public class DeviceService {
    public void updatePatientSleepStatus(String device,String patient,String time_begin,String bed_status){
        Integer status = Integer.parseInt(bed_status);
        BasePatientOutBed outBed = outBedDao.findByPatientAndDeviceSnAndStatus(patient,device,0);
        switch (status){
            case 0://离床
                if (null==outBed){
                    outBed = new BasePatientOutBed();
                    outBed.setPatient(patient);
                    outBed.setDeviceSn(device);
                    outBed.setStatus(status);
                    outBed.setCreateTime(DateUtil.strToDate(time_begin,DateUtil.YYYY_MM_DD_HH_MM_SS));
                    outBedDao.save(outBed);
                }
                break;
            case 1://在床
                if (null!=outBed){
                   outBed.setStatus(status);
                   outBed.setCreateTime(DateUtil.strToDate(time_begin,DateUtil.YYYY_MM_DD_HH_MM_SS));
                   outBedDao.save(outBed);
                }
                break;
        BasePatientOutBed outBed = outBedDao.findByPatientAndDeviceSn(patient,device);
        if (null==outBed){
            outBed = new BasePatientOutBed();
        }else {
            if (0==outBed.getStatus()&&0==status){//离床状态不刷新时间,需要计算离床时长
                return;
            }
        }
        outBed.setPatient(patient);
        outBed.setDeviceSn(device);
        outBed.setStatus(status);
        outBed.setCreateTime(DateUtil.strToDate(time_begin,DateUtil.YYYY_MM_DD_HH_MM_SS));
        outBedDao.save(outBed);
    }
    @Async

+ 176 - 28
svr/svr-cloud-device/src/main/java/com/yihu/jw/care/service/DeviceUploadService.java

@ -6,12 +6,16 @@ import com.alibaba.fastjson.serializer.SerializerFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.jw.care.dao.device.*;
import com.yihu.jw.care.endpoint.Result;
import com.yihu.jw.care.util.CountDistance;
import com.yihu.jw.care.util.SecurityOrderUtil;
import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.entity.care.device.*;
import com.yihu.jw.entity.hospital.message.SystemMessageDO;
import com.yihu.jw.hospital.message.dao.SystemMessageDao;
import com.yihu.jw.im.util.ImUtil;
import com.yihu.jw.patient.dao.BasePatientDao;
import com.yihu.jw.util.common.GpsUtil;
import com.yihu.jw.util.common.LatitudeUtils;
import com.yihu.jw.util.date.DateUtil;
import com.yihu.jw.util.healthIndex.HealthIndexUtil;
import com.yihu.jw.utils.StringUtil;
@ -20,6 +24,7 @@ import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat;
@ -55,6 +60,18 @@ public class DeviceUploadService {
    private BaseYxDeviceIndexDao yxDeviceIndexDao;
    @Autowired
    private HvDeviceService hvDeviceService;
    @Autowired
    private CountDistance countDistance;
    @Autowired
    private YsDeviceService ysDeviceService;
    @Autowired
    private SecurityOrderUtil orderUtil;
    @Autowired
    private GpsUtil gpsUtil;
    @Autowired
    private JdbcTemplate jdbcTemplate;
    @Autowired
    private PatientSafeAreaDao safeAreaDao;
    public Result uploadDevicesData(String dataJson)throws Exception {
        try {
@ -433,38 +450,169 @@ public class DeviceUploadService {
     * @return
     */
    public void parsingInstruction(String instructions){
        if(StringUtils.isBlank(instructions)){
            return;
        }
        String res = "";
        //位置[434036bb95761faaf8771d10029ae8eaIC*860314001160427*0113*UD,210826,093829,V,0.000000,N,0.000000,E,0.00,0.0,100.0,0,62,31,0,0,00000000,1,1,460,0,22831,259001902,62,6,wifi0,20:6b:e7:67:bf:1f,-63,wifi1,d4:9e:05:a7:60:a6,-65,wifi2,e0:d4:62:2d:67:9c,-71,wifi3,54:75:95:b9:4f:8e,-73,wifi4,e4:72:e2:aa:73:0c,-73,wifi5,e0:d4:62:2d:67:a1,-73]
        String instruct[] = instructions.split("]");
        for (int i=0;i<instruct.length;i++){
            String inst = instruct[i];
            String tmp[] = inst.split("\\*");
            String sn = tmp[1];
            String order = tmp[3];
            if(order.contains(",")){
                String tmp1[] = order.split(",");
                if("UD".equals(tmp1[0])||"CRUD".equals(tmp1[0])){
                    //处理位置信息
                    String lat,lon;
                    if("A".equals(tmp1[4])){
                        lat = tmp1[5];
                        lon = tmp1[7];
                    }else{
                        lat = tmp1[4];
                        lon = tmp1[6];
        try {
            if(StringUtils.isBlank(instructions)){
                return;
            }
            String res = "";
            //位置[434036bb95761faaf8771d10029ae8eaIC*860314001160427*0113*UD,210826,093829,V,0.000000,N,0.000000,E,0.00,0.0,100.0,0,62,31,0,0,00000000,1,1,460,0,22831,259001902,62,6,wifi0,20:6b:e7:67:bf:1f,-63,wifi1,d4:9e:05:a7:60:a6,-65,wifi2,e0:d4:62:2d:67:9c,-71,wifi3,54:75:95:b9:4f:8e,-73,wifi4,e4:72:e2:aa:73:0c,-73,wifi5,e0:d4:62:2d:67:a1,-73]
            //报警[XT*334588000000156*00CD*AL,180916,064153,A,22.570512,N,113.8623267,E,0.00,154.8,0.0,11,10 0,100,0,0,00100018,7,0,460,1,9529,21809,155,9529,21242,132,9529,21405,131,9529,63554,131,9 529,63555,130,9529,63556,118,9529,21869,116,0,12.4]
            String instruct[] = instructions.split("]");
            for (int i=0;i<instruct.length;i++){
                String inst = instruct[i];
                String tmp[] = inst.split("\\*");
                String sn = tmp[1];
                String order = tmp[3];
                if(order.contains(",")){
                    String tmp1[] = order.split(",");
                    if("UD".equals(tmp1[0])||"CRUD".equals(tmp1[0])){
                        //处理位置信息
                        String lat,lon;
                        if("A".equals(tmp1[4])){
                            lat = tmp1[5];
                            lon = tmp1[7];
                            //判断是否超出围栏,
                        }else{
                            lat = tmp1[4];
                            lon = tmp1[6];
                        }
                        double dulat =Double.parseDouble(lat);
                        double dulon = Double.parseDouble(lon);
                        if (!(dulat==0.0&&dulon==0.0)){//判断是否触发工单
                            com.alibaba.fastjson.JSONObject position = gpsUtil.Gps84_To_bd09(dulat,dulon);
                            dulat = position.getDouble("lat");
                            dulon = position.getDouble("lon");
                            List<DevicePatientDevice> patientDeviceList = patientDeviceDao.findByDeviceSn(sn);
                            DevicePatientDevice patientDevice = null;
                            if (patientDeviceList.size()>0){
                                patientDevice = patientDeviceList.get(0);
//                                for (DevicePatientDevice pd2:patientDeviceList){
//                                    if (StringUtils.isNotBlank(pd2.getSafeAreaGz())){
//                                        patientDevice = pd2;
//                                        break;
//                                    }
//                                }
                            }
                            if (null!=patientDevice){//存在围栏地址
                                List<PatientSafeAreaDO> safeAreaDOS = safeAreaDao.findByPatient(patientDevice.getUser());
                                String safeArea=null;
                                if (safeAreaDOS.size()>0){
                                    safeArea = safeAreaDOS.get(0).getSafeAreaGz();
                                }
                                if (StringUtils.isNotBlank(safeArea)){
                                    String[] safeAreas = safeArea.split(";");
                                    JSONArray fenceLocation = new JSONArray();
                                    for (String area:safeAreas){
                                        String[] areaPoint = area.split(",");
                                        com.alibaba.fastjson.JSONObject positionTmp = new com.alibaba.fastjson.JSONObject();
                                        Double areaLon = Double.parseDouble( areaPoint[0]);
                                        Double areaLat = Double.parseDouble( areaPoint[1]);
//                                      com.alibaba.fastjson.JSONObject positionTmp = gpsUtil.gcj02_To_Bd09(lat,lon);
                                        positionTmp.put("lat",areaLat);
                                        positionTmp.put("lon",areaLon);
                                        fenceLocation.add(positionTmp);
                                    }
                                    if (!countDistance.isInPolygon(dulon,dulat,fenceLocation)){
                                        com.alibaba.fastjson.JSONObject addressInfo = new com.alibaba.fastjson.JSONObject();
                                        addressInfo.put("lat",dulat+"");
                                        addressInfo.put("lon",dulon+"");
                                        addressInfo.put("address",LatitudeUtils.getLocationAddress(dulat+"",dulon+""));
                                        orderUtil.createSecurityOrder(sn,null,null,addressInfo,8,"1","preventLost",null);
                                    }
                                }
                            }
                        }
                        BaseYxDeviceIndex deviceIndex = new BaseYxDeviceIndex();
                        deviceIndex.setSn(sn);
                        deviceIndex.setLat(dulat+"");
                        deviceIndex.setLon(dulon+"");
                        yxDeviceIndexDao.save(deviceIndex);
                        hvDeviceService.updContactStatus(sn,1);
                    }
                    if ("AL".equals(tmp1[0])){//触发报警
                        String lat,lon;
                        if("A".equals(tmp1[4])){
                            lat = tmp1[5];
                            lon = tmp1[7];
                            //判断是否超出围栏,
                        }else{
                            lat = tmp1[4];
                            lon = tmp1[6];
                        }
                        double dulat =Double.parseDouble(lat);
                        double dulon = Double.parseDouble(lon);
                        if ((dulat==0.0&&dulon==0.0)){
                            String sql=" SELECT * FROM base_yxdevice_index WHERE sn = '"+sn+"' " +
                                    "AND create_time LIKE '"+DateUtil.getStringDateShort()+"%' AND lon != 0 AND lat != 0 ORDER BY create_time DESC  ";
                            List<Map<String,Object>> result = jdbcTemplate.queryForList(sql);
                            if (result.size()>0);{
                                dulat = Double.parseDouble(result.get(0).get("lat").toString());
                                dulon = Double.parseDouble(result.get(0).get("lon").toString());
                            }
                        }
                        List<DevicePatientDevice> patientDeviceList = patientDeviceDao.findByDeviceSn(sn);
                        if (patientDeviceList.size()>0){
                            DevicePatientDevice deviceDO = patientDeviceList.get(0);
                            BasePatientDO patientDO = patientDao.findById(deviceDO.getUser());
                            //发起救助工单
                            //获取居民坐标
                            //如果没获取取居民坐标
                            if ((dulat==0.0&&dulon==0.0)){
                                String points = patientDO.getLatLon();
                                if (StringUtils.isNotBlank(points)){
                                    String[] pointss = points.split(",");
                                    if (2==pointss.length){
                                        if (StringUtils.isNotBlank(pointss[0])){
                                            dulat = Double.parseDouble(pointss[0]);
                                        }
                                        if (StringUtils.isNotBlank(pointss[1])){
                                            dulat = Double.parseDouble(pointss[1]);
                                        }
                                    }
                                }else {
                                    return;
                                }
                            }else {
                                com.alibaba.fastjson.JSONObject position = gpsUtil.Gps84_To_bd09(dulat,dulon);
                                dulat = position.getDouble("lat");
                                dulon = position.getDouble("lon");
                            }
                            if ((dulat==0.0&&dulon==0.0)){
                                return;
                            }
                            DeviceSosLogDO logDO = new DeviceSosLogDO();
                            logDO.setPatient(patientDO.getId());
                            logDO.setPatientName(patientDO.getName());
                            logDO.setIdcard(patientDO.getIdcard());
                            logDO.setCategoryCode(deviceDO.getCategoryCode());
                            logDO.setDeviceSn(deviceDO.getDeviceSn());
                            logDO.setCreateTime(new Date());
                            //坐标
                            logDO.setSosLat(dulat+"");
                            logDO.setSosLon(dulon+"");
                            logDO.setSosAddress(LatitudeUtils.getLocationAddress(dulat+"",dulon+""));
                            orderUtil.createEmeOrder(logDO,"4");
                        }
                        BaseYxDeviceIndex deviceIndex = new BaseYxDeviceIndex();
                        deviceIndex.setSn(sn);
                        deviceIndex.setLat(dulat+"");
                        deviceIndex.setLon(dulon+"");
                        yxDeviceIndexDao.save(deviceIndex);
                        hvDeviceService.updContactStatus(sn,1);
                    }
                    BaseYxDeviceIndex deviceIndex = new BaseYxDeviceIndex();
                    deviceIndex.setSn(sn);
                    deviceIndex.setLat(lat);
                    deviceIndex.setLon(lon);
                    yxDeviceIndexDao.save(deviceIndex);
                    hvDeviceService.updContactStatus(sn,1);
                }
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

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

@ -9,6 +9,7 @@ import com.yihu.jw.care.dao.device.DeviceHealthIndexDao;
import com.yihu.jw.care.dao.device.HvDeviceRecordDao;
import com.yihu.jw.care.dao.device.HvDeviceSosLogDao;
import com.yihu.jw.care.util.ArtemisPostTest;
import com.yihu.jw.care.util.SecurityOrderUtil;
import com.yihu.jw.entity.care.device.DeviceDetail;
import com.yihu.jw.entity.care.device.DeviceHealthIndex;
import com.yihu.jw.entity.care.device.HvDeviceRecord;
@ -36,7 +37,7 @@ public class HvDeviceService {
    @Autowired
    private DeviceHealthIndexDao deviceHealthIndexDao;
    @Autowired
    private YsDeviceService ysDeviceService;
    private SecurityOrderUtil orderUtil;
    @Autowired
    private HvDeviceSosLogDao hvdeviceSosLogDao;
    @Autowired
@ -108,14 +109,14 @@ public class HvDeviceService {
                //独立式可燃气体探测器(NB)
                JSONObject tmp = new JSONObject();
                tmp.put("gas",monitorValue);
                ysDeviceService.createOrder(resourceSerial,null,new JSONObject(),6,"11","preventGasLeakage",JSON.toJSONString(tmp, SerializerFeature.WriteMapNullValue));
                orderUtil.createSecurityOrder(resourceSerial,null,new JSONObject(),null,6,"11","preventGasLeakage",JSON.toJSONString(tmp, SerializerFeature.WriteMapNullValue));
            }
            if("600002".equals(deviceType)){
                //独立式光电感烟探测器(NB)
                JSONObject tmp = new JSONObject();
                tmp.put("smoke",monitorValue);
                ysDeviceService.createOrder(resourceSerial,null,new JSONObject(),7,"10","preventFire",JSON.toJSONString(tmp, SerializerFeature.WriteMapNullValue));
                orderUtil.createSecurityOrder(resourceSerial,null,new JSONObject(),null,7,"10","preventFire",JSON.toJSONString(tmp, SerializerFeature.WriteMapNullValue));
            }
        }

文件差異過大導致無法顯示
+ 135 - 108
svr/svr-cloud-device/src/main/java/com/yihu/jw/care/service/YsDeviceService.java


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

@ -0,0 +1,84 @@
package com.yihu.jw.care.util;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.springframework.stereotype.Component;
import java.awt.geom.Point2D;
import java.util.ArrayList;
import java.util.List;
@Component
public class CountDistance {
    private static double EARTH_RADIUS = 6378.137;// 6378.137赤道半径6378137
    private static double rad(double d) {
        return d * Math.PI / 180.0;
    }
    /**
     * 通过经纬度计算两点之间的距离(单位:千米)
     * @param latone
     * @param lngone
     * @param lattwo
     * @param lngtwo
     * @return
     */
    public  double getDistance(double latone, double lngone, double lattwo, double lngtwo) {
        double radlatone = rad(latone);
        double radlattwo = rad(lattwo);
        double a = radlatone - radlattwo;
        double b = rad(lngone) - rad(lngtwo);
        double s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2)
                + Math.cos(radlatone) * Math.cos(radlattwo)
                * Math.pow(Math.sin(b / 2), 2)));
        s = s * EARTH_RADIUS;
        s = Math.round(s * 10000d) / 10000d;
        return s;
    }
    /**
     * 判断坐标是否在多边形区域内
     * @param pointLon
     * @param pointLat
     * @param rangePositions 多边形坐标 [{"lon":118.19302036660137,"lat":24.494515439791996},{"lon":118.19401849369201,"lat":24.49606682685256}]
     * @return
     */
    public boolean isInPolygon(double pointLon, double pointLat, JSONArray rangePositions) {
        // 将要判断的横纵坐标组成一个点
        double[] lon =  rangePositions.stream().mapToDouble(item->((JSONObject)item).getDouble("lon")).toArray();
        double[] lat =  rangePositions.stream().mapToDouble(item->((JSONObject)item).getDouble("lat")).toArray();;
        Point2D.Double point = new Point2D.Double(pointLon, pointLat);
        // 将区域各顶点的横纵坐标放到一个点集合里面
        List<Point2D.Double> pointList = new ArrayList<Point2D.Double>();
        double polygonPoint_x = 0.0, polygonPoint_y = 0.0;
        for (int i = 0; i < lon.length; i++) {
            polygonPoint_x = lon[i];
            polygonPoint_y = lat[i];
            Point2D.Double polygonPoint = new Point2D.Double(polygonPoint_x, polygonPoint_y);
            pointList.add(polygonPoint);
        }
        return check(point, pointList);
    }
    private static boolean check(Point2D.Double point, List<Point2D.Double> polygon) {
        java.awt.geom.GeneralPath peneralPath = new java.awt.geom.GeneralPath();
        Point2D.Double first = polygon.get(0);
        // 通过移动到指定坐标(以双精度指定),将一个点添加到路径中
        peneralPath.moveTo(first.x, first.y);
        polygon.remove(0);
        for (Point2D.Double d : polygon) {
            // 通过绘制一条从当前坐标到新指定坐标(以双精度指定)的直线,将一个点添加到路径中。
            peneralPath.lineTo(d.x, d.y);
        }
        // 将几何多边形封闭
        peneralPath.lineTo(first.x, first.y);
        peneralPath.closePath();
        // 测试指定的 Point2D 是否在 Shape 的边界内。
        return peneralPath.contains(point);
    }
}

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

@ -0,0 +1,204 @@
package com.yihu.jw.care.util;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.yihu.fastdfs.FastDFSUtil;
import com.yihu.jw.care.dao.device.DeviceSosLogDao;
import com.yihu.jw.care.dao.device.PatientDeviceDao;
import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.entity.care.device.DevicePatientDevice;
import com.yihu.jw.entity.care.device.DeviceSosLogDO;
import com.yihu.jw.exception.business.file_upload.*;
import com.yihu.jw.patient.dao.BasePatientDao;
import com.yihu.jw.restmodel.iot.common.UploadVO;
import com.yihu.jw.util.common.LatitudeUtils;
import com.yihu.jw.util.http.HttpClientUtil;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.csource.common.MyException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.io.InputStream;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
 * Created by Bing on 2021/8/28.
 */
@Component
public class SecurityOrderUtil {
    @Value("${cloudCare.url}")
    private String cloudCareUrl;
    @Autowired
    private PatientDeviceDao patientDeviceDao;
    @Autowired
    private BasePatientDao patientDao;
    @Autowired
    private JdbcTemplate jdbcTemplate;
    @Autowired
    private HttpClientUtil httpClientUtil;
    @Autowired
    private FastDFSUtil fastDFSHelper;
    @Value("${fastDFS.fastdfs_file_url}")
    private String fastdfs_file_url;
    @Autowired
    private DeviceSosLogDao sosLogDao;
    /***创建安防工单***/
    public JSONObject createSecurityOrder(String deviceSN, String sceneUrl, JSONObject result,JSONObject addressInfo, Integer orderSource, String dictCode, String topicItem, String warnInfo){
        try {
            String lat = "";
            String lon = "";
            String address=" ";
            List<DevicePatientDevice> devicePatientDeviceDos = patientDeviceDao.findByDeviceSn(deviceSN);
            if (devicePatientDeviceDos.size()>0){
                DevicePatientDevice deviceDO = devicePatientDeviceDos.get(0);
                if (null!=addressInfo){
                    lat = addressInfo.getString("lat");
                    lon = addressInfo.getString("lon");
                    address = addressInfo.getString("address");
                }else {
                    Map<String, String> json = null;
                    if (org.apache.commons.lang.StringUtils.isNotBlank(deviceDO.getSosAddress())) {
                        json = LatitudeUtils.getGeocoderLatitude(deviceDO.getSosAddress().replace("G.", "").replace("(糖友网)", "").replace("(高友网)", ""));
                    }
                    if (json != null) {
                        lat = json.get("lat").toString();
                        lon = json.get("lng").toString();
                        address = deviceDO.getSosAddress();
                    }
                }
                BasePatientDO patientDO = patientDao.findById(deviceDO.getUser());
                String  url = cloudCareUrl+"/cloudCare/noLogin/security/createOrder";
                String hospital = "";
                String sql ="select DISTINCT pack.org_code,pack.org_name " +
                        " from base_service_package_sign_record sr,base_service_package_record pr,base_service_package_item item ,base_service_package pack " +
                        "where pr.patient = '"+patientDO.getId()+"' and sr.id = pr.sign_id and pr.service_package_id = item.service_package_id and  item.`code`='"+topicItem+"'  and item.service_package_id = pack.id " +
                        "  and pack.del=1";
                List<Map<String,Object>> sqlResult = jdbcTemplate.queryForList(sql);
                if(sqlResult.size()>0){
                    hospital = sqlResult.get(0).get("org_code")+"";
                }
                String serveDesc = "";
                String sqlDesc = "SELECT dict_value from wlyy_hospital_sys_dict WHERE dict_code = '"+dictCode+"' and dict_name = 'security_server_dict'";
                List<Map<String,Object>> listTmp = jdbcTemplate.queryForList(sqlDesc);
                if (listTmp!=null&&listTmp.size()>0){
                    serveDesc = listTmp.get(0).get("dict_value")+"";
                }
                JSONObject jsonObject = new JSONObject();
                jsonObject.put("patient",patientDO.getId());
                jsonObject.put("patientName",patientDO.getName());
                jsonObject.put("patientPhone",patientDO.getMobile());
                jsonObject.put("serveDesc",serveDesc);
                jsonObject.put("hospital",sqlResult.get(0).get("org_code"));
                jsonObject.put("serveAddress",address);
                jsonObject.put("serveLat",lat);
                jsonObject.put("serveLon",lon);
                jsonObject.put("topicItem",topicItem);
                jsonObject.put("deviceSn",deviceSN);
                jsonObject.put("warnInfo",warnInfo);
                if (StringUtils.isNotBlank(sceneUrl)){
                    jsonObject.put("sceneImg",sceneUrl);
                }
                JSONObject jsonObjectParam = new JSONObject();
                jsonObjectParam.put("order", jsonObject);
                List<NameValuePair> params = new ArrayList<>();
                params.add(new BasicNameValuePair("jsonData", jsonObjectParam.toJSONString()));
                params.add(new BasicNameValuePair("warnStr", serveDesc));
                params.add(new BasicNameValuePair("orderSource", orderSource+""));
                String response = httpClientUtil.post(url, params,"UTF-8");
                System.out.println(response);
            }
        }catch (Exception e){
            e.printStackTrace();
        }
        return result;
    }
    /***创建紧急工单****/
    public void createEmeOrder(DeviceSosLogDO logDO, String orderSource){
        String sql =" select Distinct pack.org_code,pack.org_name\n" +
                "from base_service_package_sign_record sr INNER JOIN base_service_package_record pr\n" +
                "on sr.id = pr.sign_id and sr.status=1 INNER JOIN base_service_package_item item on pr.service_package_id = item.service_package_id and item.del=1 \n" +
                "INNER JOIN base_service_package pack on pr.service_package_id = pack.id where item.code='emergencyAssistance' and sr.patient='"+logDO.getPatient()+"'";
        List<Map<String,Object>> sqlResult = jdbcTemplate.queryForList(sql);
        if (sqlResult.size()>0){
            JSONObject jsonObject = new JSONObject();
            jsonObject.put("serveAddress",logDO.getSosAddress());
            jsonObject.put("serveLon",logDO.getSosLon());
            jsonObject.put("serveLat",logDO.getSosLat());
            jsonObject.put("orgCode",sqlResult.get(0).get("org_code").toString());
            jsonObject.put("orgName",sqlResult.get(0).get("org_name").toString());
            jsonObject.put("patient",logDO.getPatient());
            jsonObject.put("patientName",logDO.getPatientName());
            jsonObject.put("deviceSn",logDO.getDeviceSn());
            String url = cloudCareUrl+"cloudCare/noLogin/emergency_assistance/newOrder";
            List<NameValuePair> params = new ArrayList<>();
            params.add(new BasicNameValuePair("jsonData", jsonObject.toJSONString()));
            params.add(new BasicNameValuePair("patientId", logDO.getPatient()));
            params.add(new BasicNameValuePair("orderSource", orderSource));//工单来源工单发起来源状态 1APP 2手环 3居家报警 4拐杖
            String response = httpClientUtil.post(url, params,"UTF-8");
            System.out.println(response);
        }
        sosLogDao.save(logDO);
    }
    public UploadVO uploadImg(MultipartFile file)throws Exception{
        String originalFilename = file.getOriginalFilename();
        InputStream inputStream = file.getInputStream();
        UploadVO uploadVO = uploadImg2(inputStream,originalFilename,file.getSize(),fastdfs_file_url);
        return uploadVO;
    }
    public UploadVO uploadImg2(InputStream inputStream, String originalFileName,long fileSize,String fastdfs_file_url) throws NoSuchAlgorithmException, IOException, MyException {
        // 得到文件的完整名称  xxx.txt
        if( null == inputStream){
            throw new FileInputStreamEmptyException("图片文件流不可为空!");
        }
        if(StringUtils.isBlank(originalFileName)){
            throw new FileNameEmptyException("图片文件名不可为空!");
        }
        if(StringUtils.isBlank(fastdfs_file_url)){
            throw new FastfdsFileURLEmptyException("fastdfs url不可为空!");
        }
        //得到文件类型
        String fileType = originalFileName.substring(originalFileName.lastIndexOf(".") + 1).toLowerCase();
        if(StringUtils.isBlank(fileType)||!"jpg,jpeg,png".contains(fileType)){
            throw new FileWrongFormatException("图片文件格式不正确,请上传jpg,jpeg,png等任一格式!");
        }
        long max = 5*1024*1024;
        if(fileSize > max){
            throw new FileTooLargeSizeException("图片文件过大,请不要超过5M!");
        }
        String fileName = originalFileName.substring(0, originalFileName.lastIndexOf("."));
        //上传到fastdfs
        ObjectNode objectNode = fastDFSHelper.upload(inputStream, fileType, "");
        //解析返回的objectNode
        UploadVO uploadVO = new UploadVO();
        uploadVO.setFileName(fileName);
        uploadVO.setFileType(fileType);
        uploadVO.setFullUri(objectNode.get("fileId").toString().replaceAll("\"", ""));
        uploadVO.setFullUrl(fastdfs_file_url + objectNode.get("fileId").toString().replaceAll("\"", ""));
        return uploadVO;
    }
}

+ 2 - 2
svr/svr-cloud-device/src/main/resources/application.yml

@ -169,7 +169,7 @@ baiduApi:
  AK: 0vjnCSReegE7A47a941ohjv9a07ONiMC
  url: http://api.map.baidu.com/
cloudCare:
  url: http://ehr.yihu.com/hlwyy/cloudCare/
  url: http://172.26.0.107:10301/
---
spring:
@ -269,7 +269,7 @@ baiduApi:
  url: http://api.map.baidu.com/
cloudCare:
  url: http://ehr.yihu.com/hlwyy/cloudCare/
  url: http://172.26.0.107:10301/
---
spring:
  profiles: hzprod

+ 10 - 0
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/event/ApplicationEvent.java

@ -1,5 +1,6 @@
package com.yihu.jw.care.event;
import com.yihu.jw.care.job.BirthdayReminderJob;
import com.yihu.jw.care.job.QuartzHelper;
import com.yihu.jw.care.job.consult.FinishConsultJob;
import com.yihu.jw.care.job.device.PatientSosContactsJob;
@ -56,6 +57,15 @@ public class ApplicationEvent implements ApplicationListener<ContextRefreshedEve
                logger.info("PATIENT_SEND_UNREAD_MES_JOB exist");
            }
            //#每天的早上9:00,生日祝福提醒短信
            if (!quartzHelper.isExistJob("BIRTHDAY_REMINDER_JOB")) {
                String trigger = SystemConf.getInstance().getSystemProperties().getProperty("BIRTHDAY_REMINDER_JOB");
                quartzHelper.addJob(BirthdayReminderJob.class, trigger, "BIRTHDAY_REMINDER_JOB", new HashMap<String, Object>());
                logger.info("BIRTHDAY_REMINDER_JOB success");
            } else {
                logger.info("BIRTHDAY_REMINDER_JOB exist");
            }
            //#取消订单支付超时的订单,每3分钟执行一次
            if (!quartzHelper.isExistJob("CANCEL_PAY_ORDER_OVERTIME_JOB")) {
                String trigger = SystemConf.getInstance().getSystemProperties().getProperty("CANCEL_PAY_ORDER_OVERTIME_JOB");

+ 31 - 0
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/job/BirthdayReminderJob.java

@ -0,0 +1,31 @@
package com.yihu.jw.care.job;
import com.yihu.jw.care.service.BirthdayReminderService;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
/**
 * Created by ysj on 2021.08.30
 */
public class BirthdayReminderJob implements Job {
    private static final Logger logger = LoggerFactory.getLogger(BirthdayReminderJob.class);
    @Autowired
    private BirthdayReminderService birthdayReminderService;
    @Override
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        logger.info("START========每天发送生日提醒JOB========");
        try {
            birthdayReminderService.sendMessage();
            logger.info("END========每天发送生日提醒JOB========");
        }catch (Exception e){
            e.printStackTrace();
            logger.info("END===ERROE===每天发送生日提醒JOB,message:"+e.getMessage());
        }
    }
}

+ 62 - 21
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/job/device/PatientSosContactsJob.java

@ -35,54 +35,95 @@ public class PatientSosContactsJob implements Job {
    private NetworkCardService cardService;
    @Autowired
    private PatientDeviceService deviceService;
    @Autowired
    private YunXunDeviceService yunXunDeviceService;
    @Override
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        logger.info("PATIENT_SOS_CONTACTS_JOB start");
        String sql = " select pd.device_sn,wd.sim,sc.* from  wlyy_patient_device pd inner join wlyy_devices wd " +
                " on pd.device_sn = wd.device_code and pd.del=0 and wd.sim is not null and pd.category_code in('7','4') " +
                "INNER JOIN base_patient_sos_contacts sc on sc.patient = pd.user and sc.del=1 and sc.success_flag=0 group by wd.sim";
        String sql = " select pd.device_sn,pd.category_code,wd.sim,sc.* from  wlyy_patient_device pd inner join wlyy_devices wd " +
                " on pd.device_sn = wd.device_code and pd.del=0 " +
                "INNER JOIN base_patient_sos_contacts sc on sc.patient = pd.user and sc.del=1 " +
                "where  sc.success_flag=0 and pd.category_code in('7','4','16')  group by wd.device_code ";
        List<Map<String,Object>> sims = jdbcTemplate.queryForList(sql);
        List<PatientSosContactsDO> modify = new ArrayList<>();
        for(Map<String,Object> tmp:sims){//添加白名单,添加设备联系人
            String sim = tmp.get("sim").toString() ;
            String sim = tmp.get("sim")==null?null:tmp.get("sim").toString() ;
            String patient = tmp.get("patient").toString() ;
            String device_sn = tmp.get("device_sn").toString() ;
            String category_code = tmp.get("category_code").toString() ;
            String id = tmp.get("id").toString() ;
            String sos_name = tmp.get("sos_name").toString() ;
            String sos_phone = tmp.get("sos_phone").toString() ;
            String phone_seqid = tmp.get("phone_seqid").toString() ;
            try {
                PatientSosContactsDO sosContactsDO = sosContactsDao.findOne(Long.parseLong(id));
                if (StringUtils.isBlank(sosContactsDO.getUpdateInfo())){
                    sosContactsDO.setUpdateInfo(" ");
                }
                if(null!=sosContactsDO){
                    JSONObject response = cardService.setPatientContacts(sim, null, null, "1", sos_phone, null);//移动白名单
                    //0成功 12102名单重复
                    if (response.getInteger("status")==0||response.getInteger("status")==12108){
                        sosContactsDO.setSuccessFlag(1);
                    }else {
                        sosContactsDO.setSuccessFlag(-1);
                        modify.add(sosContactsDO);
                    if (StringUtils.isNotBlank(sim)){
                        JSONObject response = cardService.setPatientContacts(sim, null, null, "1", sos_phone, null);//移动白名单
                        //0成功 12102名单重复
                        if (response.getInteger("status")==0||response.getInteger("status")==12108){
                            if (1==sosContactsDO.getSuccessFlag()||0==sosContactsDO.getSuccessFlag()){
                                sosContactsDO.setSuccessFlag(1);
                            }else {
                                sosContactsDO.setSuccessFlag(-1);
                            }
                            sosContactsDO.setUpdateInfo(sosContactsDO.getUpdateInfo()+",{sim:"+sim+":"+1+"}");
                        }else {
                            sosContactsDO.setSuccessFlag(-1);
                            sosContactsDO.setUpdateInfo(sosContactsDO.getUpdateInfo()+",{sim:"+sim+":"+-1+"}");
                        }
                    }
                    //设备修改
                    JSONObject response2 =  deviceService.updAqgDeviceSosInfo(device_sn,phone_seqid,sos_name,sos_phone,"1",null);
                    System.out.println(response2.toString());
                    if (response2.getBoolean("success")){
                        if (1==sosContactsDO.getSuccessFlag()){
                    if ("4".equals(category_code)||"7".equals(category_code)){
                        JSONObject response2 =  deviceService.updAqgDeviceSosInfo(device_sn,phone_seqid,sos_name,sos_phone,"1",null);
                        if (response2.getBoolean("success")){
                            if (1==sosContactsDO.getSuccessFlag()||0==sosContactsDO.getSuccessFlag()){
                                sosContactsDO.setSuccessFlag(1);
                            }else {
                                sosContactsDO.setSuccessFlag(-1);
                            }
                            sosContactsDO.setUpdateInfo(sosContactsDO.getUpdateInfo()+",{deviceSn:"+device_sn+":"+1+"}");
                        }else {
                            sosContactsDO.setSuccessFlag(-1);
                            sosContactsDO.setUpdateInfo(sosContactsDO.getUpdateInfo()+",{deviceSn:"+device_sn+":"+-1+"}");
                        }
                    }else if ("16".equals(category_code)){
                        sql =" select sos_phone from base_patient_sos_contacts where patient='"+patient+"' order by phone_seqid asc ";
                        List<String> nums = jdbcTemplate.queryForList(sql,String.class);
                        String phone1 = null;
                        String phone2 = null;
                        String phone3 = null;
                        for (int i=0;i<nums.size();i++){
                            if(i==0){
                                phone1 = nums.get(i);
                            }
                            if(i==2){
                                phone2 = nums.get(i);
                            }
                        }
                        yunXunDeviceService.setSos(device_sn,phone1,phone2,phone3);
                        if (!sosContactsDO.getUpdateInfo().contains(device_sn)){
                            sosContactsDO.setUpdateInfo(sosContactsDO.getUpdateInfo()+",{deviceSn:"+device_sn+":unknow}");
                        }
                        if (1==sosContactsDO.getSuccessFlag()||0==sosContactsDO.getSuccessFlag()){
                            sosContactsDO.setSuccessFlag(1);
                        }else {
                            sosContactsDO.setSuccessFlag(-1);
                        }
                        sosContactsDO.setSuccessFlag(-1);
                    }else {
                        sosContactsDO.setSuccessFlag(-1);
                    }
                    modify.add(sosContactsDO);
                    sosContactsDao.save(sosContactsDO);
                }
            }catch (Exception e){
                logger.info(sim+"--同步失败--"+sos_phone);
                e.printStackTrace();
            }
        }
        sosContactsDao.save(modify);
//        sosContactsDao.save(modify);
        logger.info("PATIENT_SOS_CONTACTS_JOB end");
    }
}

+ 71 - 0
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/job/device/YunXunDeviceService.java

@ -0,0 +1,71 @@
package com.yihu.jw.care.job.device;
import com.yihu.jw.util.http.HttpClientUtil;
import com.yihu.jw.utils.StringUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
 * Created with IntelliJ IDEA.
 * 云芯拐杖设备对接
 * @Author: yeshijie
 * @Date: 2021/8/27
 * @Description:
 */
@Service
public class YunXunDeviceService {
    private static Logger logger = LoggerFactory.getLogger(YunXunDeviceService.class);
    @Autowired
    private HttpClientUtil httpClientUtil;
    /**
     * 设置紧急联系人
     * @param sn
     * @param phone1
     * @param phone2
     * @param phone3
     */
    public void setSos(String sn,String phone1,String phone2,String phone3){
        if(StringUtil.isBlank(phone1)){
            return;
        }
        //[IC*334588000000156*0027*SOS,00000000000,00000000000]
        String order = "SOS,"+phone1;
        if(!StringUtil.isBlank(phone2)){
            order += ","+phone2;
        }
        if(!StringUtil.isBlank(phone3)){
            order += ","+phone3;
        }
        String instruction = "[IC*"+sn+"*"+hex10To16(order.length())+"]";
        sendInstruction(sn,instruction);
    }
    /**
     * 发送指令接口
     * @param instruction
     */
    public void sendInstruction(String sn,String instruction){
        try {
            String url = "http://117.24.13.79:43210/yunxin/sendMessage?deviceSN="+sn+"&message="+instruction;
            String response = httpClientUtil.get(url,"UTF-8");
            logger.info("sendInstruction="+response);
        }catch (Exception e){
            e.printStackTrace();
        }
    }
    /**
     * 保留4位 十进制转十六进制
     * @param ten
     * @return
     */
    public String hex10To16(int ten){
        return String.format("%04x",ten);
    }
}

+ 1 - 0
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/job/message/DoctorSendUnreadJob.java

@ -16,6 +16,7 @@ import java.util.List;
import java.util.Map;
/**
 * 未回复消息提醒
 * Created by Bing on 2021/5/29.
 */
public class DoctorSendUnreadJob implements Job {

+ 57 - 0
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/service/BirthdayReminderService.java

@ -0,0 +1,57 @@
package com.yihu.jw.care.service;
import com.yihu.jw.care.util.MessageUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
 * Created with IntelliJ IDEA.
 *
 * @Author: yeshijie
 * @Date: 2021/8/30
 * @Description:
 */
@Service
public class BirthdayReminderService {
    @Autowired
    private JdbcTemplate jdbcTemplate;
    @Autowired
    private MessageUtil messageUtil;
    public void sendMessage(){
        Date currentTime = new Date();
        SimpleDateFormat format = new SimpleDateFormat("MMdd");
        String dateString = format.format(currentTime);
        String sql = "SELECT d.id,d.name,d.mobile,COUNT(DISTINCT p.id) c " +
                " from base_service_package_sign_record sr,base_service_package_record r,  " +
                "  base_service_package_item i,base_team_member m,base_patient p ,base_doctor d " +
                "    WHERE sr.id = r.sign_id and sr.status=1 and r.service_package_id = i.service_package_id  " +
                "    and i.del = 1 and m.team_code = r.team_code and p.id = sr.patient and m.doctor_code = d.id " +
                "  and m.del = '1' and " +
                "CASE LENGTH(p.idcard) WHEN  18 then SUBSTR(p.idcard,11,4) when 15 then SUBSTR(p.idcard, 9,4) END = '"+dateString+"' " +
                "GROUP BY d.id";
        List<Map<String, Object>> docList = jdbcTemplate.queryForList(sql);
        for (Map<String, Object> map:docList){
            try {
                String doctorName = map.get("name")+"";
                String mobile = map.get("mobile")+"";
                Integer c = Integer.valueOf(map.get("c")+"");
                if (c>0&&mobile.length()==11){
                    messageUtil.sendTXYSJson("1099809",mobile,doctorName,c+"");
                }
            }catch (Exception e){
                e.printStackTrace();
            }
        }
    }
}

+ 29 - 2
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/web/JobController.java

@ -1,9 +1,11 @@
package com.yihu.jw.care.web;
import com.yihu.jw.care.job.BirthdayReminderJob;
import com.yihu.jw.care.job.QuartzHelper;
import com.yihu.jw.care.job.consult.FinishConsultJob;
import com.yihu.jw.care.job.message.DoctorSendUnreadJob;
import com.yihu.jw.care.job.message.PatientSendUnreadJob;
import com.yihu.jw.care.service.BirthdayReminderService;
import com.yihu.jw.care.service.JobService;
import com.yihu.jw.care.util.SystemConf;
import com.yihu.jw.restmodel.web.ObjEnvelop;
@ -32,6 +34,8 @@ public class JobController extends BaseController {
    private final JobService jobService;
    private final QuartzHelper quartzHelper;
    @Autowired
    private BirthdayReminderService birthdayReminderService;
    @Autowired
    public JobController(JobService jobService, QuartzHelper quartzHelper) {
@ -58,6 +62,22 @@ public class JobController extends BaseController {
       return success(quartzHelper.getCalendar());
    }
    @RequestMapping(value = "testJob", method = RequestMethod.GET)
    public String testJob(String taskId){
        try {
            switch(taskId){
                case "BIRTHDAY_REMINDER_JOB":
                    birthdayReminderService.sendMessage();
                    break;
                default:
                    break;
            }
            return success("成功");
        }catch (Exception e){
            error(e);
            return invalidUserException(e, -1, "执行失败:" + e.getMessage());
        }
    }
    @RequestMapping(value = "isExist", method = RequestMethod.GET)
@ -77,7 +97,6 @@ public class JobController extends BaseController {
    @RequestMapping(value = "reStartById", method = RequestMethod.GET)
    public String reStartById(String taskId) {
        try {
            if(quartzHelper.isExistJob(taskId)){
                quartzHelper.removeJob(taskId);
            }
@ -109,7 +128,15 @@ public class JobController extends BaseController {
                        logger.info("PATIENT_SEND_UNREAD_MES_JOB exist");
                    }
                    break;
                case "BIRTHDAY_REMINDER_JOB":
                    if (!quartzHelper.isExistJob("BIRTHDAY_REMINDER_JOB")) {
                        String trigger = SystemConf.getInstance().getSystemProperties().getProperty("BIRTHDAY_REMINDER_JOB");
                        quartzHelper.addJob(BirthdayReminderJob.class, trigger, "BIRTHDAY_REMINDER_JOB", new HashMap<String, Object>());
                        logger.info("BIRTHDAY_REMINDER_JOB success");
                    } else {
                        logger.info("BIRTHDAY_REMINDER_JOB exist");
                    }
                    break;
                default :
            }
            return success("启动成功!");

+ 3 - 0
svr/svr-cloud-job/src/main/resources/system.properties

@ -8,6 +8,9 @@ DOCTOR_SEND_UNREAD_MES_JOB=0 0 9 * * ?
#每天的早上9:00,给所有居民发送未读消息微信模板
PATIENT_SEND_UNREAD_MES_JOB=0 0 9 * * ?
#每天的早上9:00,生日祝福提醒短信
BIRTHDAY_REMINDER_JOB=0 0 9 * * ?
#取消订单支付超时的订单,每3分钟执行一次
CANCEL_PAY_ORDER_OVERTIME_JOB=0 0/3 * * * ?

+ 133 - 22
svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/thirdUpload/ThirdUploadEndpoint.java

@ -19,12 +19,13 @@ import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import com.yihu.jw.rm.regulatory.BaseRegulatoryRequestMapping;
import java.util.ArrayList;
import java.util.List;
@RestController
@RequestMapping("/monitoringPlatform")
@RequestMapping(value = BaseRegulatoryRequestMapping.UpWebTherapySupserviceInfo.PREFIX)     //请求地址前缀  /regulatory
@Api(value = "监管平台数据增删改查", description = "监管平台数据增删改查", tags = {"监管平台数据增删改查"})
public class ThirdUploadEndpoint extends EnvelopRestEndpoint {
    @Autowired
@ -41,25 +42,33 @@ public class ThirdUploadEndpoint extends EnvelopRestEndpoint {
    private UpnsDoctorScoreService upnsDoctorScoreService;
    @Autowired
    private UpnsOrganBaseService upnsOrganBaseService;
    @Autowired
    private BaseNsOnlineAskService baseNsOnlineAskService;
    @Autowired
    private BaseNsOlineMedService baseNsOlineMedService;
    @Autowired
    private BaseNsPrescriptionAService baseNsPrescriptionAService;
    @Autowired
    private BaseNsPrescriptionDrugService baseNsPrescriptionDrugService;
    @PostMapping("/saveAchns")
    @PostMapping(value = BaseRegulatoryRequestMapping.UpWebTherapySupserviceInfo.SAVEACHNS)     //请求地址  /saveAchns
    @ApiOperation(value = "保存医师唯一标识")
    public Envelop saveAchns(@ApiParam(name = "jsonData", value = "")
                               @RequestParam(name = "jsonData", required = true) String jsonData) throws Exception {
                             @RequestParam(name = "jsonData", required = true) String jsonData) throws Exception {
        try {
            List<AchnsDoctorRecordDO> dealList = objectMapper.readValue(jsonData, new TypeReference<List<AchnsDoctorRecordDO>>() {
        });
            });
            achnsDoctorRecordService.saveAchns(dealList);
            return success("操作成功");
        }catch (Exception e) {
            return failedObjEnvelopException(e);
        }
    }
    @GetMapping("/deleteAchns")
    @GetMapping(value = BaseRegulatoryRequestMapping.UpWebTherapySupserviceInfo.DELETEACHNS)    //请求地址  /deleteAchns
    @ApiOperation(value = "删除医师唯一标识")
    public Envelop deleteAchns(@ApiParam(name = "id", value = "")
                             @RequestParam(name = "id", required = true) String id) throws Exception {
                               @RequestParam(name = "id", required = true) String id) throws Exception {
        try {
            achnsDoctorRecordService.deleteById(id);
@ -69,10 +78,10 @@ public class ThirdUploadEndpoint extends EnvelopRestEndpoint {
        }
    }
    @GetMapping("/findAchnsByCreateTime")
    @GetMapping(value = BaseRegulatoryRequestMapping.UpWebTherapySupserviceInfo.FINDACHNSBYCREATETIME)
    @ApiOperation(value = "查询医师唯一标识")
    public Envelop findAchnsByCreateTime(@ApiParam(name = "date", value = "yyyy-mm-dd")
                               @RequestParam(name = "date", required = true) String date) throws Exception {
                                         @RequestParam(name = "date", required = true) String date) throws Exception {
        try {
@ -107,7 +116,7 @@ public class ThirdUploadEndpoint extends EnvelopRestEndpoint {
    @PostMapping("/saveUpApp")
    @ApiOperation(value = "保存网上预约挂号")
    public Envelop saveUpAppointmentOnline(@ApiParam(name = "jsonData", value = "")
                             @RequestParam(name = "jsonData", required = true) String jsonData) throws Exception {
                                           @RequestParam(name = "jsonData", required = true) String jsonData) throws Exception {
        try {
            List<UpAppointmentOnlineDO> dealList = objectMapper.readValue(jsonData, new TypeReference<List<UpAppointmentOnlineDO>>() {
@ -121,7 +130,7 @@ public class ThirdUploadEndpoint extends EnvelopRestEndpoint {
    @GetMapping("/deleteUpApp")
    @ApiOperation(value = "删除网上预约挂号")
    public Envelop deleteUpAppointmentOnline(@ApiParam(name = "id", value = "")
                               @RequestParam(name = "id", required = true) String id) throws Exception {
                                             @RequestParam(name = "id", required = true) String id) throws Exception {
        try {
            upAppointmentOnlineService.deleteById(id);
@ -168,7 +177,7 @@ public class ThirdUploadEndpoint extends EnvelopRestEndpoint {
    @PostMapping("/saveUpMedical")
    @ApiOperation(value = "保存在线医技预约")
    public Envelop saveUpMedical(@ApiParam(name = "jsonData", value = "")
                             @RequestParam(name = "jsonData", required = true) String jsonData) throws Exception {
                                 @RequestParam(name = "jsonData", required = true) String jsonData) throws Exception {
        try {
            List<UpMedicalOnlineDO> dealList = objectMapper.readValue(jsonData, new TypeReference<List<UpMedicalOnlineDO>>() {
@ -182,7 +191,7 @@ public class ThirdUploadEndpoint extends EnvelopRestEndpoint {
    @GetMapping("/deleteUpMedical")
    @ApiOperation(value = "删除在线医技预约")
    public Envelop deleteUpMedical(@ApiParam(name = "id", value = "")
                               @RequestParam(name = "id", required = true) String id) throws Exception {
                                   @RequestParam(name = "id", required = true) String id) throws Exception {
        try {
            upMedicalOnlineService.deleteById(id);
@ -195,7 +204,7 @@ public class ThirdUploadEndpoint extends EnvelopRestEndpoint {
    @GetMapping("/findUpMedicalByCreateTime")
    @ApiOperation(value = "查询在线医技预约")
    public Envelop findUpMedicalByCreateTime(@ApiParam(name = "date", value = "yyyy-mm-dd")
                                         @RequestParam(name = "date", required = true) String date) throws Exception {
                                             @RequestParam(name = "date", required = true) String date) throws Exception {
        try {
@ -229,7 +238,7 @@ public class ThirdUploadEndpoint extends EnvelopRestEndpoint {
    @PostMapping("/saveUpnsDr")
    @ApiOperation(value = "保存医师基本信息")
    public Envelop saveUpnsDr(@ApiParam(name = "jsonData", value = "")
                             @RequestParam(name = "jsonData", required = true) String jsonData) throws Exception {
                              @RequestParam(name = "jsonData", required = true) String jsonData) throws Exception {
        try {
            List<UpnsDoctorRecordDO> dealList = objectMapper.readValue(jsonData, new TypeReference<List<UpnsDoctorRecordDO>>() {
@ -243,7 +252,7 @@ public class ThirdUploadEndpoint extends EnvelopRestEndpoint {
    @GetMapping("/deleteUpnsDr")
    @ApiOperation(value = "删除医师基本信息")
    public Envelop deleteUpnsDr(@ApiParam(name = "id", value = "")
                               @RequestParam(name = "id", required = true) String id) throws Exception {
                                @RequestParam(name = "id", required = true) String id) throws Exception {
        try {
            upnsDoctorRecordService.deleteById(id);
@ -256,7 +265,7 @@ public class ThirdUploadEndpoint extends EnvelopRestEndpoint {
    @GetMapping("/findUpnsDrByCreateTime")
    @ApiOperation(value = "查询医师基本信息")
    public Envelop findUpnsDrByCreateTime(@ApiParam(name = "date", value = "yyyy-mm-dd")
                                         @RequestParam(name = "date", required = true) String date) throws Exception {
                                          @RequestParam(name = "date", required = true) String date) throws Exception {
        try {
@ -290,7 +299,7 @@ public class ThirdUploadEndpoint extends EnvelopRestEndpoint {
    @PostMapping("/saveUpnsDs")
    @ApiOperation(value = "保存医生评价信息")
    public Envelop saveUpnsDs(@ApiParam(name = "jsonData", value = "")
                             @RequestParam(name = "jsonData", required = true) String jsonData) throws Exception {
                              @RequestParam(name = "jsonData", required = true) String jsonData) throws Exception {
        try {
            List<UpnsDoctorScoreDO> dealList = objectMapper.readValue(jsonData, new TypeReference<List<UpnsDoctorScoreDO>>() {
@ -304,7 +313,7 @@ public class ThirdUploadEndpoint extends EnvelopRestEndpoint {
    @GetMapping("/deleteUpnsDs")
    @ApiOperation(value = "删除医生评价信息")
    public Envelop deleteUpnsDs(@ApiParam(name = "id", value = "")
                               @RequestParam(name = "id", required = true) String id) throws Exception {
                                @RequestParam(name = "id", required = true) String id) throws Exception {
        try {
            upnsDoctorScoreService.deleteById(id);
@ -317,7 +326,7 @@ public class ThirdUploadEndpoint extends EnvelopRestEndpoint {
    @GetMapping("/findUpnsDsByCreateTime")
    @ApiOperation(value = "查询医生评价信息")
    public Envelop findUpnsDsByCreateTime(@ApiParam(name = "date", value = "yyyy-mm-dd")
                                         @RequestParam(name = "date", required = true) String date) throws Exception {
                                          @RequestParam(name = "date", required = true) String date) throws Exception {
        try {
@ -351,7 +360,7 @@ public class ThirdUploadEndpoint extends EnvelopRestEndpoint {
    @PostMapping("/saveUpnsOrg")
    @ApiOperation(value = "保存医院基本信息")
    public Envelop saveUpnsOrg(@ApiParam(name = "jsonData", value = "")
                             @RequestParam(name = "jsonData", required = true) String jsonData) throws Exception {
                               @RequestParam(name = "jsonData", required = true) String jsonData) throws Exception {
        try {
            List<UpNsOrganBaseDO> dealList = objectMapper.readValue(jsonData, new TypeReference<List<UpNsOrganBaseDO>>() {
@ -365,7 +374,7 @@ public class ThirdUploadEndpoint extends EnvelopRestEndpoint {
    @GetMapping("/deleteUpnsOrg")
    @ApiOperation(value = "删除医院基本信息")
    public Envelop deleteUpnsOrg(@ApiParam(name = "id", value = "")
                               @RequestParam(name = "id", required = true) String id) throws Exception {
                                 @RequestParam(name = "id", required = true) String id) throws Exception {
        try {
            upnsOrganBaseService.deleteById(id);
@ -378,7 +387,7 @@ public class ThirdUploadEndpoint extends EnvelopRestEndpoint {
    @GetMapping("/findUpnsOrgByCreateTime")
    @ApiOperation(value = "查询医院基本信息")
    public Envelop findUpnsOrgByCreateTime(@ApiParam(name = "date", value = "yyyy-mm-dd")
                                         @RequestParam(name = "date", required = true) String date) throws Exception {
                                           @RequestParam(name = "date", required = true) String date) throws Exception {
        try {
@ -410,4 +419,106 @@ public class ThirdUploadEndpoint extends EnvelopRestEndpoint {
        }
    }
    @PostMapping(value = BaseRegulatoryRequestMapping.UpWebTherapySupserviceInfo.SAVENSOLINEASK)
    @ApiOperation(value = "保存网络咨询服务信息")
    public Envelop saveNsOlineAsk(@ApiParam(name = "jsonData", value = "")
                                  @RequestParam(name = "jsonData",required = true) String jsonData) throws Exception{
        try{
            List<BaseNsOnlineAskDO> dealList = objectMapper.readValue(jsonData, new TypeReference<List<BaseNsOnlineAskDO>>(){});
            baseNsOnlineAskService.saveNsOlineAsk(dealList);
            return success("success");
        }catch (Exception e){
            return failedObjEnvelopException(e);
        }
    }
    @GetMapping(value = BaseRegulatoryRequestMapping.UpWebTherapySupserviceInfo.DELETESOLINEASK)
    @ApiOperation(value = "删除网络咨询信息")
    public Envelop deleteNsOlineAsk(@ApiParam(name = "id", value = "")
                                    @RequestParam(name = "id", required = true) String id) throws Exception{
        try{
            baseNsOnlineAskService.deleteById(id);
            return success("success");
        }catch (Exception e){
            return failedObjEnvelopException(e);
        }
    }
    @PostMapping(value = BaseRegulatoryRequestMapping.UpWebTherapySupserviceInfo.SAVENSONLINEMED)
    @ApiOperation(value = "保存网络诊疗信息")
    public Envelop saveNsOnlinemed(@ApiParam(name = "jsonData", value = "")
                                   @RequestParam(name = "jsonData",required = true) String jsonData) throws Exception{
        try{
            List<BaseNsOnlineMedDO> dealList = objectMapper.readValue(jsonData, new TypeReference<List<BaseNsOnlineMedDO>>(){});
            baseNsOlineMedService.saveNsOnlinemed(dealList);
            return success("success");
        }catch (Exception e){
            return failedObjEnvelopException(e);
        }
    }
    @GetMapping(value = BaseRegulatoryRequestMapping.UpWebTherapySupserviceInfo.DELETENSONLINEMED)
    @ApiOperation(value = "删除网络咨询信息")
    public Envelop deleteNsonlinemed(@ApiParam(name = "id", value = "")
                                    @RequestParam(name = "id", required = true) String id) throws Exception{
        try{
            baseNsOlineMedService.deleteById(id);
            return success("success");
        }catch (Exception e){
            return failedObjEnvelopException(e);
        }
    }
    @PostMapping(value = BaseRegulatoryRequestMapping.UpWebTherapySupserviceInfo.SAVEPRESCRIPTION)
    @ApiOperation(value = "保存电子处方")
    public Envelop savePrescription(@ApiParam(name = "jsonData", value = "")
                                    @RequestParam(name = "jsonData",required = true) String jsonData)throws Exception{
        try{
            List<BaseNsPrescriptionDO> dealList = objectMapper.readValue(jsonData, new TypeReference<List<BaseNsPrescriptionDO>>(){});
            baseNsPrescriptionAService.savePrescription(dealList);
            return success("success");
        }catch (Exception e){
            return failedObjEnvelopException(e);
        }
    }
    @GetMapping(value = BaseRegulatoryRequestMapping.UpWebTherapySupserviceInfo.DELETEPRESCRIPTION)
    @ApiOperation(value = "删除电子处方")
    public Envelop deletePrescription(@ApiParam(name = "id", value = "")
                                     @RequestParam(name = "id", required = true) String id) throws Exception{
        try{
            baseNsPrescriptionAService.deleteById(id);
            return success("success");
        }catch (Exception e){
            return failedObjEnvelopException(e);
        }
    }
    @PostMapping(value = BaseRegulatoryRequestMapping.UpWebTherapySupserviceInfo.SAVEPRESCRIPTIONDRUG)
    @ApiOperation(value = "保存电子处方药品明细")
    public Envelop savePrescriptionDrug(@ApiParam(name = "jsonData", value = "")
                                        @RequestParam(name = "jsonData",required = true) String jsonData) throws Exception{
        try{
            List<BaseNsPrescriptionDrugDO> dealList = objectMapper.readValue(jsonData, new TypeReference<List<BaseNsPrescriptionDrugDO>>(){});
            baseNsPrescriptionDrugService.savePrescriptionDrug(dealList);
            return success("success");
        }catch (Exception e){
            return failedObjEnvelopException(e);
        }
    }
    @GetMapping(value = BaseRegulatoryRequestMapping.UpWebTherapySupserviceInfo.DELETEPRESCRIPTIONDRUG)
    @ApiOperation(value = "删除电子处方")
    public Envelop deletePrescriptionDrug(@ApiParam(name = "id", value = "")
                                      @RequestParam(name = "id", required = true) String id) throws Exception{
        try{
            baseNsPrescriptionDrugService.deleteById(id);
            return success("success");
        }catch (Exception e){
            return failedObjEnvelopException(e);
        }
    }
}

+ 1 - 1
svr/svr-iot/src/main/java/com/yihu/iot/service/monitorPlatform/MonitorPlatformService.java

@ -1601,7 +1601,7 @@ public class MonitorPlatformService  {
        String allCountSql = "SELECT COUNT(*) FROM device.wlyy_devices d where 1=1 ";
        int i = 0;
        if(org.apache.commons.lang3.StringUtils.isNoneBlank(deviceType)&&deviceType.contains("1")){
            allCountSql+= " and ( device_name like '%血糖仪%' ";
            allCountSql+= "   ";
            i = 1;
        }
        if(org.apache.commons.lang3.StringUtils.isNoneBlank(deviceType)&&deviceType.contains("2")){