Explorar o código

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

# Conflicts:
#	common/common-entity/src/main/java/com/yihu/jw/entity/base/patient/BasePatientDO.java
#	server/svr-authentication/src/main/java/com/yihu/jw/security/oauth2/provider/endpoint/WlyyLoginEndpoint.java
wangzhinan %!s(int64=3) %!d(string=hai) anos
pai
achega
81685ceca1
Modificáronse 100 ficheiros con 3454 adicións e 231 borrados
  1. 3 3
      business/im-service/src/main/java/com/yihu/jw/im/util/ImUtil.java
  2. 34 1
      common/common-entity/sql记录
  3. 2 1
      common/common-entity/src/main/java/com/yihu/jw/entity/base/doctor/BaseDoctorDO.java
  4. 20 0
      common/common-entity/src/main/java/com/yihu/jw/entity/base/gw/BaseWebInfoDO.java
  5. 10 0
      common/common-entity/src/main/java/com/yihu/jw/entity/base/login/BaseLoginLogDO.java
  6. 10 0
      common/common-entity/src/main/java/com/yihu/jw/entity/base/patient/BasePatientDO.java
  7. 61 0
      common/common-entity/src/main/java/com/yihu/jw/entity/base/servicePackage/BasePatientHelperDO.java
  8. 1 1
      common/common-entity/src/main/java/com/yihu/jw/entity/base/servicePackage/ServicePackageSignRecordDO.java
  9. 1 1
      common/common-entity/src/main/java/com/yihu/jw/entity/care/device/DeviceDetail.java
  10. 1 1
      common/common-entity/src/main/java/com/yihu/jw/entity/care/device/PatientSafeAreaConfirm.java
  11. 36 0
      common/common-entity/src/main/java/com/yihu/jw/entity/care/lifeCare/LifeCareItemDictDO.java
  12. 1 1
      common/common-entity/src/main/java/com/yihu/jw/entity/care/message/BaseServiceNews.java
  13. 1 1
      common/common-entity/src/main/java/com/yihu/jw/entity/care/securitymonitoring/BaseEmergencyWarnLogDO.java
  14. 27 0
      common/common-entity/src/main/java/com/yihu/jw/entity/care/visit/BaseVisitDO.java
  15. 7 0
      common/common-request-mapping/src/main/java/com/yihu/jw/rm/base/BaseRequestMapping.java
  16. 41 0
      common/common-util/src/main/java/com/yihu/jw/util/http/HttpClientUtil.java
  17. 5 0
      gateway/ag-basic/src/main/java/com/yihu/jw/gateway/filter/BasicZuulFilter.java
  18. 7 0
      gateway/ag-basic/src/main/resources/application.yml
  19. 3 3
      server/svr-authentication/src/main/java/com/yihu/jw/security/utils/ImUtil.java
  20. 1 1
      svr/svr-base/src/main/java/com/yihu/jw/base/dao/article/KnowledgeArticleDictDao.java
  21. 18 0
      svr/svr-base/src/main/java/com/yihu/jw/base/dao/lifeCare/LifeCareItemDictDao.java
  22. 3 1
      svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/article/ArticleEndpoint.java
  23. 9 1
      svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/common/FileUploadController.java
  24. 86 0
      svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/lifeCare/LifeCareEndpoint.java
  25. 87 0
      svr/svr-base/src/main/java/com/yihu/jw/base/service/lifeCare/LifeCareService.java
  26. 1 1
      svr/svr-base/src/main/java/com/yihu/jw/base/service/menu/BaseMenuManageService.java
  27. 4 2
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/dao/lifeCare/LifeCareItemDictDao.java
  28. 15 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/dao/sign/BasePatientHelperDao.java
  29. 49 1
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/assistance/EmergencyAssistanceEndpoint.java
  30. 26 2
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/doctor/DoctorEndpoint.java
  31. 19 2
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/doctor/DoctorToDoWorkEndpoint.java
  32. 36 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/label/PatientLabelEndpoint.java
  33. 3 2
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/lifeCare/PadLifeCareEndpoint.java
  34. 3 2
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/lifeCare/PatientLifeCareEndpoint.java
  35. 1 1
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/safeArea/DoctorSafeAreaController.java
  36. 1 1
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/security/SecurityMonitoringOrderEndpoint.java
  37. 84 1
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/sign/SignEndpoint.java
  38. 2 2
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/statistics/DetectionPlatformEndpoint.java
  39. 1 1
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/statistics/OpenStatisticsEndpoint.java
  40. 1 1
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/third/platForm/PatientInfoPlatFormEndpoint.java
  41. 8 3
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/visit/VisitEndpoint.java
  42. 1 1
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/activity/ChildActivityRegistrationService.java
  43. 2 2
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/apply/PatientBedApplyService.java
  44. 146 11
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/assistance/EmergencyAssistanceService.java
  45. 43 4
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/birthday/BirthdayWishesService.java
  46. 19 3
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/consult/ConsultTeamService.java
  47. 2 2
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/device/PatientDeviceService.java
  48. 55 5
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/doctor/CareDoctorService.java
  49. 15 13
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/family/PatientFamilyMemberService.java
  50. 68 4
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/label/PatientLableService.java
  51. 3 2
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/lifeCare/LifeCareOrderService.java
  52. 87 1
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/message/DoctorMessageService.java
  53. 2 2
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/patient/CarePatientService.java
  54. 2 2
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/patient/OnlineContactService.java
  55. 60 23
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/security/SecurityMonitoringOrderService.java
  56. 86 1
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/sign/ArchiveService.java
  57. 28 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/sign/CapacityAssessmentRecordService.java
  58. 102 11
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/sign/ServicePackageService.java
  59. 7 7
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/statistics/StatisticsService.java
  60. 4 1
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/visit/BaseVisitService.java
  61. 3 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/util/MessageUtil.java
  62. 6 0
      svr/svr-cloud-device/pom.xml
  63. 43 3
      svr/svr-cloud-device/src/main/java/com/yihu/jw/care/service/DeviceService.java
  64. 49 0
      svr/svr-cloud-device/src/main/java/com/yihu/jw/care/service/DeviceUploadService.java
  65. 32 0
      svr/svr-cloud-device/src/main/java/com/yihu/jw/care/service/PatientFamilyService.java
  66. 455 0
      svr/svr-cloud-device/src/main/java/com/yihu/jw/care/util/MessageUtil.java
  67. 9 7
      svr/svr-cloud-device/src/main/resources/application.yml
  68. 11 1
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/event/ApplicationEvent.java
  69. 196 26
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/job/data/SaveDataPushJob.java
  70. 27 8
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/job/device/PatientSosContactsJob.java
  71. 34 0
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/job/device/PressureGlucoseNotJob.java
  72. 16 6
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/job/device/YunXunDeviceService.java
  73. 6 2
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/job/sim/UpdateSimsJob.java
  74. 8 0
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/service/BirthdayReminderService.java
  75. 26 23
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/service/WlyysimFlowVoiceService.java
  76. 1 1
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/service/device/NetworkCardService.java
  77. 84 0
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/service/device/PressureGlucoseNotService.java
  78. 36 13
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/util/DeviceLostMessageUtil.java
  79. 3 0
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/util/MessageUtil.java
  80. 27 3
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/web/JobController.java
  81. 9 0
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/zhylyjkglxt/dao/ZhBaseDeviceHealthIndexDao.java
  82. 9 0
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/zhylyjkglxt/dao/ZhBaseInfantInfoDao.java
  83. 10 0
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/zhylyjkglxt/dao/ZhBaseServicePackageSignRecordDao.java
  84. 8 0
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/zhylyjkglxt/dao/ZhBaseSleepDeviceDao.java
  85. 9 0
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/zhylyjkglxt/dao/ZhBaseSleepX1deviceDao.java
  86. 9 0
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/zhylyjkglxt/dao/ZhBaseYxdeviceIndexDao.java
  87. 9 0
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/zhylyjkglxt/dao/ZhDeviceDataPushLogDao.java
  88. 9 0
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/zhylyjkglxt/dao/ZhWlyyPatientLabelDao.java
  89. 79 0
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/zhylyjkglxt/entity/ZhBaseDeviceHealthIndexDO.java
  90. 2 1
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/zhylyjkglxt/entity/ZhBaseDoorCoachFeeDetailDO.java
  91. 2 1
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/zhylyjkglxt/entity/ZhBaseDoorCoachOrderDO.java
  92. 107 0
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/zhylyjkglxt/entity/ZhBaseInfantInfoDO.java
  93. 2 2
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/zhylyjkglxt/entity/ZhBasePatientDO.java
  94. 136 0
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/zhylyjkglxt/entity/ZhBaseServicePackageSignRecordDO.java
  95. 221 0
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/zhylyjkglxt/entity/ZhBaseSleepDeviceDO.java
  96. 145 0
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/zhylyjkglxt/entity/ZhBaseSleepX1deviceDO.java
  97. 53 0
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/zhylyjkglxt/entity/ZhBaseYxdeviceIndexDO.java
  98. 100 0
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/zhylyjkglxt/entity/ZhDeviceDataPushLogDO.java
  99. 2 1
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/zhylyjkglxt/entity/ZhEmergencyAssistanceDO.java
  100. 0 0
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/zhylyjkglxt/entity/ZhLifeCareFeeDetailDO.java

+ 3 - 3
business/im-service/src/main/java/com/yihu/jw/im/util/ImUtil.java

@ -865,7 +865,7 @@ public class ImUtil {
	/**
	 * 获取在线人数
	 * helper 助老员,teacher 教师,child 幼儿,olderWx 老人公众号,olderPad 老人平板
	 * helper 社工,teacher 教师,child 幼儿,olderWx 老人公众号,olderPad 老人平板
	 */
	public String getOnlineCountByType(String type) {
		String url = im_host + "api/v2/sessions/getOnlineCountByType?type="+type;
@ -875,7 +875,7 @@ public class ImUtil {
	/**
	 * 获取在线人数列表
	 * helper 助老员,teacher 教师,child 幼儿,olderWx 老人公众号,olderPad 老人平板
	 * helper 社工,teacher 教师,child 幼儿,olderWx 老人公众号,olderPad 老人平板
	 */
	public String getOnlineListByType(String type) {
		String url = im_host + "api/v2/sessions/getOnlineListByType?type="+type;
@ -885,7 +885,7 @@ public class ImUtil {
	/**
	 * 获取在线状态
	 * helper 助老员,teacher 教师,child 幼儿,older 老人
	 * helper 社工,teacher 教师,child 幼儿,older 老人
	 * 返回 {"status":200,"data":1} data>0 说明在线 data =0 不在线
	 */
	public String findByUserIdAndType(String userId,String type) {

+ 34 - 1
common/common-entity/sql记录

@ -1663,4 +1663,37 @@ CREATE TABLE `wlyy_sims_voices` (
  `type` int(1) DEFAULT NULL COMMENT '1月统计 2日统计',
  `value` varchar(11) DEFAULT NULL COMMENT '使用量/分钟',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='物联网卡语音使用情况';
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='物联网卡语音使用情况';
-- 2022-03-09
ALTER table base_life_care_item_dict add COLUMN charge_standard VARCHAR(200) DEFAULT null COMMENT '收费标准';
ALTER table base_life_care_item_dict add COLUMN serve_standard VARCHAR(200) DEFAULT null COMMENT '收费标准';
ALTER table base_life_care_item_dict add COLUMN org_code varchar(50) DEFAULT NULL COMMENT '服务机构';
ALTER table base_life_care_item_dict add COLUMN org_name varchar(50) DEFAULT NULL COMMENT '服务机构名称';
ALTER table base_life_care_item_dict MODIFY COLUMN `code` varchar(10) DEFAULT NULL;
ALTER table base_patient add COLUMN `home_state` TINYINT(2) DEFAULT NULL COMMENT '居家状态:1居家0离家';
-- 2022-03-11
CREATE TABLE `base_patient_helper` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `patient` varchar(50) DEFAULT NULL,
  `patient_name` varchar(50) DEFAULT NULL,
  `doctor` varchar(50) DEFAULT NULL,
  `doctor_name` varchar(50) DEFAULT NULL,
   del varchar(1) DEFAULT NULL COMMENT '状态(1有效0无效)',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `create_user` varchar(50) DEFAULT NULL ,
  `create_user_name` varchar(50) DEFAULT NULL,
  `update_time` timestamp  DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
  `update_user` varchar(50) DEFAULT NULL ,
  `update_user_name` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='助老员老人关联表';
--
ALTER table base_visit add COLUMN `device_maintenance` VARCHAR(500) DEFAULT NULL COMMENT '设备维护';
ALTER table base_visit add COLUMN `health` VARCHAR(500) DEFAULT NULL COMMENT '健康情况';
ALTER table base_visit add COLUMN `life_consult` VARCHAR(500) DEFAULT NULL COMMENT '生活咨询';
-- 2022-03-14 ysj
ALTER TABLE base_login_log ADD token varchar(50) COMMENT '登录token 做权限验证用' ;

+ 2 - 1
common/common-entity/src/main/java/com/yihu/jw/entity/base/doctor/BaseDoctorDO.java

@ -285,7 +285,8 @@ public class BaseDoctorDO extends UuidIdentityEntityWithOperator {
    private String visitTime;
    /**
     * 类型 1社区医生,2助老员, 3教师
     *
     * 类型 1社区医生,2社工, 3教师,4助老员
     */
    private Integer level;
    private String doctorLat;//医生当前定位地址纬度

+ 20 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/base/gw/BaseWebInfoDO.java

@ -19,6 +19,8 @@ public class BaseWebInfoDO extends UuidIdentityEntityWithCreateTime {
    private String mobile;//联系方式
    private String recordNumber;//备案号
    private String qrcode;//二维码
    private String longitude;//经度
    private String latitude;//纬度
    @Column(name = "name")
    public String getName() {
@ -64,4 +66,22 @@ public class BaseWebInfoDO extends UuidIdentityEntityWithCreateTime {
    public void setQrcode(String qrcode) {
        this.qrcode = qrcode;
    }
    @Column(name = "longitude")
    public String getLongitude() {
        return longitude;
    }
    public void setLongitude(String longitude) {
        this.longitude = longitude;
    }
    @Column(name = "latitude")
    public String getLatitude() {
        return latitude;
    }
    public void setLatitude(String latitude) {
        this.latitude = latitude;
    }
}

+ 10 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/base/login/BaseLoginLogDO.java

@ -22,6 +22,7 @@ public class BaseLoginLogDO extends UuidIdentityEntity implements java.io.Serial
	private Date operateTime;
	private String name;//用户姓名
	private String clientType;//客服端类型app,wx,pad,pc
	private String token;//登录token 做权限验证用
	@Column(name="operate_time")
@ -96,4 +97,13 @@ public class BaseLoginLogDO extends UuidIdentityEntity implements java.io.Serial
	public void setClientType(String clientType) {
		this.clientType = clientType;
	}
	@Column(name="token")
	public String getToken() {
		return token;
	}
	public void setToken(String token) {
		this.token = token;
	}
}

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

@ -293,6 +293,7 @@ public class BasePatientDO extends UuidIdentityEntityWithOperator {
    private String medicalState;//医保授权状态
    private String homeLatLon;//家庭经纬度
    private Integer homeState;//居家状态 1居家0离家;
    private String verifyCode;//眼科token
@ -934,6 +935,15 @@ public class BasePatientDO extends UuidIdentityEntityWithOperator {
        this.homeLatLon = homeLatLon;
    }
    @Column(name = "home_state")
    public Integer getHomeState() {
        return homeState;
    }
    public void setHomeState(Integer homeState) {
        this.homeState = homeState;
    }
    @Column(name="verify_code")
    public String getVerifyCode() {
        return verifyCode;

+ 61 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/base/servicePackage/BasePatientHelperDO.java

@ -0,0 +1,61 @@
package com.yihu.jw.entity.base.servicePackage;
import com.yihu.jw.entity.IntegerIdentityEntityWithOperator;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
 * Created by Bing on 2022/3/11.
 * 老人助老员关联实体
 */
@Entity
@Table(name = "base_patient_helper")
public class BasePatientHelperDO extends IntegerIdentityEntityWithOperator {
    private String patient;
    private String patientName;
    private String doctor;
    private String doctorName;
    private String del;//状态(1有效0无效)
    public String getPatient() {
        return patient;
    }
    public void setPatient(String patient) {
        this.patient = patient;
    }
    public String getPatientName() {
        return patientName;
    }
    public void setPatientName(String patientName) {
        this.patientName = patientName;
    }
    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;
    }
    public String getDel() {
        return del;
    }
    public void setDel(String del) {
        this.del = del;
    }
}

+ 1 - 1
common/common-entity/src/main/java/com/yihu/jw/entity/base/servicePackage/ServicePackageSignRecordDO.java

@ -35,7 +35,7 @@ public class ServicePackageSignRecordDO extends UuidIdentityEntityWithCreateTime
    //社区医生
    private List<Map<String,Object>> doctorList;
    //助老员
    //社工
    private List<Map<String,Object>> helperList;
    //服务包
    private List<Map<String,Object>> packageList;

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

@ -169,7 +169,7 @@ public class DeviceDetail extends IdEntity {
        this.serverIp = serverIp;
    }
    @Column(name = "manufacturerCode")
    @Column(name = "manufacturer_code")
    public String getManufacturerCode() {
        return manufacturerCode;
    }

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

@ -16,7 +16,7 @@ import java.util.Date;
public class PatientSafeAreaConfirm extends IdEntity {
    private String patient;
    private String doctorCode;//助老员code
    private String doctorCode;//社工code
    private String safeId; //安全区域id 关联居民电子围栏id
    private String del;//作废标识,1正常,0作废
    private Integer manageStatus;//电子围栏确认情况 0待确认 1已确认

+ 36 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/care/lifeCare/LifeCareItemDictDO.java

@ -22,6 +22,10 @@ public class LifeCareItemDictDO extends UuidIdentityEntity{
    private Integer del;//删除标志 1正常,0删除
    private String lifeCareImg;//服务项目图片
    private String padIconImg;//pad图标
    private String chargeStandard;//收费标准
    private String serveStandard;//服务标准标准
    private String orgCode;//服务机构
    private String orgName;//服务机构名称
    public String getCode() {
        return code;
@ -87,4 +91,36 @@ public class LifeCareItemDictDO extends UuidIdentityEntity{
    public void setPadIconImg(String padIconImg) {
        this.padIconImg = padIconImg;
    }
    public String getChargeStandard() {
        return chargeStandard;
    }
    public void setChargeStandard(String chargeStandard) {
        this.chargeStandard = chargeStandard;
    }
    public String getServeStandard() {
        return serveStandard;
    }
    public void setServeStandard(String serveStandard) {
        this.serveStandard = serveStandard;
    }
    public String getOrgCode() {
        return orgCode;
    }
    public void setOrgCode(String orgCode) {
        this.orgCode = orgCode;
    }
    public String getOrgName() {
        return orgName;
    }
    public void setOrgName(String orgName) {
        this.orgName = orgName;
    }
}

+ 1 - 1
common/common-entity/src/main/java/com/yihu/jw/entity/care/message/BaseServiceNews.java

@ -25,7 +25,7 @@ public class BaseServiceNews extends UuidIdentityEntityWithCreateTime {
    //类型 1上门辅导、2发起咨询、3发起生活照料、4生活照料代预约
    private String type;
    private String relationCode;//type对应工单id 或咨询id
    private Integer userType;//用户类型 1居民 2助老员
    private Integer userType;//用户类型 1居民 2社工
    private Integer archiveType;//居民类型
    private String residentialArea;//居住小区;

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

@ -19,7 +19,7 @@ public class BaseEmergencyWarnLogDO extends IdEntity {
    public String orderId;
    public String userCode;
    public String userName;
    public Integer userType; //用户类型 1居民 2助老员
    public Integer userType; //用户类型 1居民 2社工
    public String content;
    public Date createTime;

+ 27 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/care/visit/BaseVisitDO.java

@ -24,6 +24,9 @@ public class BaseVisitDO extends UuidIdentityEntityWithCreateTime {
    private String doctorName;
    private String visitContent;//走访记录
    private String visitImg;//走访图片
    private String deviceMaintenance;//设备维护
    private String health;//健康情况
    private String lifeConsult;//生活咨询
    @Column(name = "patient")
    public String getPatient() {
@ -114,4 +117,28 @@ public class BaseVisitDO extends UuidIdentityEntityWithCreateTime {
    public void setVisitImg(String visitImg) {
        this.visitImg = visitImg;
    }
    public String getDeviceMaintenance() {
        return deviceMaintenance;
    }
    public void setDeviceMaintenance(String deviceMaintenance) {
        this.deviceMaintenance = deviceMaintenance;
    }
    public String getHealth() {
        return health;
    }
    public void setHealth(String health) {
        this.health = health;
    }
    public String getLifeConsult() {
        return lifeConsult;
    }
    public void setLifeConsult(String lifeConsult) {
        this.lifeConsult = lifeConsult;
    }
}

+ 7 - 0
common/common-request-mapping/src/main/java/com/yihu/jw/rm/base/BaseRequestMapping.java

@ -414,6 +414,13 @@ public class BaseRequestMapping {
        public static final String PREFIX  = "/service_package_normcat";
    }
    /**
     * 生活照料
     */
    public static class LifeCare extends Basic{
        public static final String PREFIX  = "/life_care";
    }
    /**
     * 康复计划
     */

+ 41 - 0
common/common-util/src/main/java/com/yihu/jw/util/http/HttpClientUtil.java

@ -117,6 +117,47 @@ public class HttpClientUtil {
    }
    public  String postWithTimeOUt(String url, List<NameValuePair> params, String chatSet,int outTime) {
        // 创建默认的httpClient实例.
        CloseableHttpClient httpclient = HttpClients.createDefault();
        // 创建httppost
        HttpPost httppost = new HttpPost(url);
        UrlEncodedFormEntity uefEntity;
        RequestConfig requestConfig = RequestConfig.custom()
                .setConnectTimeout(outTime)
                .setConnectionRequestTimeout(outTime)
                .setStaleConnectionCheckEnabled(true)
                .setSocketTimeout(outTime).build();
        httppost.setConfig(requestConfig);
        try {
            uefEntity = new UrlEncodedFormEntity(params, chatSet);
            httppost.setEntity(uefEntity);
            CloseableHttpResponse response = httpclient.execute(httppost);
            try {
                HttpEntity entity = response.getEntity();
                if (entity != null) {
                    return EntityUtils.toString(entity, chatSet);
                }
            } finally {
                response.close();
            }
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (UnsupportedEncodingException e1) {
            e1.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            // 关闭连接,释放资源
            try {
                httpclient.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return null;
    }
    /**
     * 发送get请求
     *

+ 5 - 0
gateway/ag-basic/src/main/java/com/yihu/jw/gateway/filter/BasicZuulFilter.java

@ -129,6 +129,7 @@ public class BasicZuulFilter extends ZuulFilter {
        //内部微服务有不需要认证的地址请在URL上追加/open/来进行过滤,如/api/v1.0/open/**,不要在此继续追加!!!
        if (url.contains("/auth/")//验证服务
                || url.contains("/authgw/")//验证服务
                || url.contains("/base/wechat")//微信
                || url.contains("/patient/wxBase/")//微信
                || url.contains("/patient/wx/")//微信页面不拦截
@ -250,6 +251,10 @@ public class BasicZuulFilter extends ZuulFilter {
        if(StringUtils.isEmpty(urls)){
            return this.forbidden(ctx, ResultStatus.NO_PERMI, "invalid token does not contain request resource " + path);
        }
        //官网服务-网关数据库不同,不验证数据库的token过期时间
        if (path.contains("/basegw/")) {
            return true;
        }
        //获取所有token资源
        String resourceIds[] = urls.split(",");
        String platform = request.getHeader("platform");

+ 7 - 0
gateway/ag-basic/src/main/resources/application.yml

@ -72,6 +72,13 @@ zuul:
    svr-authentication:
      path: /cityihealth/auth/**
      serviceId: svr-authentication
#公司官网
    svr-base-gw:
      path: /cityihealth/basegw/**
      serviceId: svr-base-gw
    svr-authentication-gw:
      path: /cityihealth/authgw/**
      serviceId: svr-authentication-gw
    svr-healthy-house:
      path: /cityihealth/healthyHouse/**
      serviceId: svr-healthy-house

+ 3 - 3
server/svr-authentication/src/main/java/com/yihu/jw/security/utils/ImUtil.java

@ -864,7 +864,7 @@ public class ImUtil {
	/**
	 * 获取在线人数
	 * helper 助老员,teacher 教师,child 幼儿,olderWx 老人公众号,olderPad 老人平板
	 * helper 社工,teacher 教师,child 幼儿,olderWx 老人公众号,olderPad 老人平板
	 */
	public String getOnlineCountByType(String type) {
		String url = im_host + "api/v2/sessions/getOnlineCountByType?type="+type;
@ -874,7 +874,7 @@ public class ImUtil {
	/**
	 * 获取在线人数列表
	 * helper 助老员,teacher 教师,child 幼儿,olderWx 老人公众号,olderPad 老人平板
	 * helper 社工,teacher 教师,child 幼儿,olderWx 老人公众号,olderPad 老人平板
	 */
	public String getOnlineListByType(String type) {
		String url = im_host + "api/v2/sessions/getOnlineListByType?type="+type;
@ -884,7 +884,7 @@ public class ImUtil {
	/**
	 * 获取在线状态
	 * helper 助老员,teacher 教师,child 幼儿,older 老人
	 * helper 社工,teacher 教师,child 幼儿,older 老人
	 * 返回 {"status":200,"data":1} data>0 说明在线 data =0 不在线
	 */
	public String findByUserIdAndType(String userId,String type) {

+ 1 - 1
svr/svr-base/src/main/java/com/yihu/jw/base/dao/article/KnowledgeArticleDictDao.java

@ -33,7 +33,7 @@ public interface KnowledgeArticleDictDao extends PagingAndSortingRepository<Know
	Integer getCountByCategoryFirst(String category);
	@Query(" select count(*) from KnowledgeArticleDictDO a where a.del=1 and  a.categorySecond IN (?1) and a.releaseStatus=1")
	Integer getCountByCategorySecond(List<String> category);
	@Query("select a from KnowledgeArticleDictDO a where a.del=1 and  a.categorySecond IN ( ?1 ) and a.releaseStatus=1 order by  a.releaseTime desc ")
	@Query("select a from KnowledgeArticleDictDO a where a.del=1 and  a.categorySecond IN ( ?1 ) and a.releaseStatus=1 order by  a.releaseTime desc,a.createTime desc ")
	List<KnowledgeArticleDictDO> findByCategorySecondAndPage(List<String> category,Pageable pageRequest);

+ 18 - 0
svr/svr-base/src/main/java/com/yihu/jw/base/dao/lifeCare/LifeCareItemDictDao.java

@ -0,0 +1,18 @@
package com.yihu.jw.base.dao.lifeCare;
import com.yihu.jw.entity.care.lifeCare.LifeCareItemDictDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
/**
 * Created by yeshijie on 2021/3/26.
 */
public interface LifeCareItemDictDao extends PagingAndSortingRepository<LifeCareItemDictDO, String>, JpaSpecificationExecutor<LifeCareItemDictDO> {
    @Query("from LifeCareItemDictDO w where  w.del=1 order by sort asc")
    List<LifeCareItemDictDO> findByAll();
}

+ 3 - 1
svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/article/ArticleEndpoint.java

@ -95,7 +95,9 @@ public class ArticleEndpoint extends EnvelopRestEndpoint {
			if (userDO!=null){
				RoleDO roleDO= roleDao.findOne(userDO.getRoleId());
				if (roleDO!=null){
					if ("admin".equalsIgnoreCase(roleDO.getCode())){
					if ("admin".equalsIgnoreCase(roleDO.getCode())
							||"hosAdmin".equalsIgnoreCase(roleDO.getCode())
							||"saasAdmin".equalsIgnoreCase(roleDO.getCode())){
						queryAll=true;
					}
				}

+ 9 - 1
svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/common/FileUploadController.java

@ -52,6 +52,8 @@ public class FileUploadController extends EnvelopRestEndpoint {
    private String fastdfs_file_url;
    @Autowired
    FileUploadService fileUploadService;
    @Autowired
    private FastDFSUtil fastDFSHelper;
    @Value("${testPattern.sign}")
    private String isClose;
@ -104,12 +106,18 @@ public class FileUploadController extends EnvelopRestEndpoint {
        // 得到文件的完整名称  xxx.txt
        String originalFilename = file.getOriginalFilename();
        //得到文件类型
        String fileName = originalFilename.substring(0, originalFilename.lastIndexOf("."));
        String fileType = originalFilename.substring(originalFilename.lastIndexOf(".") + 1).toLowerCase();
        if(StringUtils.isBlank(fileType)||!"doc、docx、pdf、xls、xlsx、ppt、pptx".contains(fileType)){
            return ObjEnvelop.getError("文件格式不支持");
        }
        InputStream inputStream = file.getInputStream();
        uploadVO = fileUploadService.uploadStream(inputStream,originalFilename,fastdfs_file_url);
        ObjectNode objectNode = fastDFSHelper.upload(inputStream, fileType, "");
        //解析返回的objectNode
        uploadVO.setFileName(fileName);
        uploadVO.setFileType(fileType);
        uploadVO.setFullUri(objectNode.get("fileId").toString().replaceAll("\"", ""));
        uploadVO.setFullUrl(fastdfs_file_url + objectNode.get("fileId").toString().replaceAll("\"", ""));
        return success("上传成功", uploadVO);
    }

+ 86 - 0
svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/lifeCare/LifeCareEndpoint.java

@ -0,0 +1,86 @@
package com.yihu.jw.base.endpoint.lifeCare;
import com.yihu.jw.base.service.lifeCare.LifeCareService;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.ObjEnvelop;
import com.yihu.jw.restmodel.web.PageEnvelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import com.yihu.jw.rm.base.BaseRequestMapping;
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.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Map;
/**
 * Created by Bing on 2022/3/9.
 */
@RestController
@RequestMapping(value = BaseRequestMapping.LifeCare.PREFIX, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@Api(value = "生活照料管理", description = "生活照料管理接口", tags = {"wlyy基础服务 - 生活照料管理接口"})
public class LifeCareEndpoint extends EnvelopRestEndpoint {
    @Autowired
    private LifeCareService lifeCareService;
    @ApiOperation("获取生活照料服务项目列表")
    @RequestMapping(value = "/getServeDictList",method = RequestMethod.GET)
    public PageEnvelop<List<Map<String,Object>>> getServeDictList(@ApiParam(name = "orgName",value = "机构名称",required = false)
                                        @RequestParam(value = "orgName",required = false)String orgName,
                                        @ApiParam(name = "itemName",value = "服务项目名称",required = false)
                                        @RequestParam(value = "itemName",required = false)String itemName,
                                        @ApiParam(name = "page", value = "分页大小", required = true, defaultValue = "1")
                                        @RequestParam(value = "page") Integer page,
                                        @ApiParam(name = "size", value = "页码", required = true, defaultValue = "15")
                                        @RequestParam(value = "size") Integer size){
        try {
            return lifeCareService.getServeDictList(orgName,itemName,page,size);
        }catch (Exception e){
            return failedPageEnvelopException2(e);
        }
    }
    @ApiOperation("编辑新增生活照料服务型")
    @RequestMapping(value = "/saveLifeItem",method = RequestMethod.POST)
    public Envelop saveLifeItem(@ApiParam(name = "json",value = "json数据",required = true)
                                @RequestParam(value = "json",required = false)String json){
        try {
            return success(lifeCareService.saveLifeItem(json));
        }catch (Exception e){
            return failedException2(e);
        }
    }
    @ApiOperation("删除生活照料服务项目")
    @RequestMapping(value = "/delLifeItem",method = RequestMethod.POST)
    public Envelop saveLifeItem(@ApiParam(name = "id",value = "机构名称",required = true)
                                @RequestParam(value = "id",required = false)String id,
                                @ApiParam(name = "status",value = "1有效 0无效",required = true)
                                @RequestParam(value = "status",required = false)Integer status){
        try {
            return success(lifeCareService.delLifeItem(id,status));
        }catch (Exception e){
            return failedException2(e);
        }
    }
    @ApiOperation("获取服务详情")
    @RequestMapping(value = "/getLifeItemDetail",method = RequestMethod.GET)
    public ObjEnvelop getLifeItemDetail(@ApiParam(name = "id",value = "机构名称",required = true)
                                    @RequestParam(value = "id",required = false)String id){
        try {
            return success(lifeCareService.getLifeItemDetail(id));
        }catch (Exception e){
            return failedObjEnvelopException2(e);
        }
    }
}

+ 87 - 0
svr/svr-base/src/main/java/com/yihu/jw/base/service/lifeCare/LifeCareService.java

@ -0,0 +1,87 @@
package com.yihu.jw.base.service.lifeCare;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.base.dao.lifeCare.LifeCareItemDictDao;
import com.yihu.jw.entity.care.lifeCare.LifeCareItemDictDO;
import com.yihu.jw.restmodel.web.PageEnvelop;
import org.apache.commons.lang3.RandomStringUtils;
import org.apache.commons.lang3.StringUtils;
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;
import java.util.Random;
/**
 * Created by Bing on 2022/3/9.
 */
@Service
public class LifeCareService {
    @Autowired
    private JdbcTemplate jdbcTemplate;
    @Autowired
    private LifeCareItemDictDao lifeCareItemDictDao;
    /**
     * 获取服务项目列表
     */
    public PageEnvelop<List<Map<String,Object>>> getServeDictList(String orgName, String itemName, Integer page, Integer size){
        String sql = " select dict.*,cast(dict.del as UNSIGNED INTEGER)as del,cast(org.name as char)as org_name  from base_life_care_item_dict dict INNER JOIN base_org org on dict.org_code = org.code  where dict.del=1 and org.del=1 ";
        String sqlCount = " select count(dict.id) from base_life_care_item_dict dict INNER JOIN base_org org on dict.org_code = org.code  where dict.del=1 and org.del=1  ";
        String filter = " ";
        if (StringUtils.isNotBlank(orgName)){
            filter +=" and org.name like '%"+orgName+"%' ";
        }
        if (StringUtils.isNotBlank(itemName)){
            filter +=" and dict.name like '%"+itemName+"%' ";
        }
        Long count = jdbcTemplate.queryForObject(sqlCount+filter,Long.class);
        filter += " order by dict.org_code,dict.sort asc ";
        filter += " limit "+(page-1)*size+","+size;
        List<Map<String,Object>> list = jdbcTemplate.queryForList(sql+filter);
        return PageEnvelop.getSuccessListWithPage("success",list,page,size,count);
    }
    public String saveLifeItem(String json){
        LifeCareItemDictDO lifeCareItemDictDO = JSONObject.parseObject(json,LifeCareItemDictDO.class);
        if (StringUtils.isBlank(lifeCareItemDictDO.getId())){
            lifeCareItemDictDO.setDel(1);
            String code =" ";
            Boolean notExist=true;
            while (notExist){
                code = RandomStringUtils.randomAlphanumeric(10);
                notExist = findServeItemByCode(code);
            }
            lifeCareItemDictDO.setCode(code);
        }
        lifeCareItemDictDao.save(lifeCareItemDictDO);
        return "success";
    }
    public String delLifeItem(String id,Integer status){
        LifeCareItemDictDO lifeCareItemDictDO = lifeCareItemDictDao.findOne(id);
        if(null == lifeCareItemDictDO){
            return " 未找到改服务项目 ";
        }
        lifeCareItemDictDO.setDel(status);
        lifeCareItemDictDao.save(lifeCareItemDictDO);
        return "success";
    }
    public LifeCareItemDictDO getLifeItemDetail(String id){
        return lifeCareItemDictDao.findOne(id);
    }
    public boolean findServeItemByCode(String code){
        String sql = " select count(id) from base_life_care_item_dict where code='"+code+"' " ;
        Integer exist = jdbcTemplate.queryForObject(sql,Integer.class);
        return exist>0?true:false;
    }
}

+ 1 - 1
svr/svr-base/src/main/java/com/yihu/jw/base/service/menu/BaseMenuManageService.java

@ -185,7 +185,7 @@ public class BaseMenuManageService {
                baseMenuDictDO.setFunctionName(menuFunction.getDictValue());
            }else {
                WlyyHospitalSysDictDO menuLocation = wlyyHospitalSysDictDao.findOneByDictNameAndDictCode("menuLocation",baseMenuDictDO.getMenuLocation());
                if (menuLocation.getDictValue() == null){
                if (menuLocation==null||menuLocation.getDictValue() == null){
                    baseMenuDictDO.setLocaTionName("无");
                }else {
                    baseMenuDictDO.setLocaTionName(menuLocation.getDictValue());

+ 4 - 2
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/dao/lifeCare/LifeCareItemDictDao.java

@ -1,6 +1,5 @@
package com.yihu.jw.care.dao.lifeCare;
import com.yihu.jw.entity.base.servicePackage.ServicePackageItemDO;
import com.yihu.jw.entity.care.lifeCare.LifeCareItemDictDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
@ -13,7 +12,10 @@ import java.util.List;
 */
public interface LifeCareItemDictDao  extends PagingAndSortingRepository<LifeCareItemDictDO, String>, JpaSpecificationExecutor<LifeCareItemDictDO> {
    @Query("from LifeCareItemDictDO w where  w.del=1 order by sort asc")
    @Query("from LifeCareItemDictDO w where  w.del=1 order by w.sort asc")
    List<LifeCareItemDictDO> findByAll();
    @Query("from LifeCareItemDictDO w where  w.del=1 and w.orgCode=?1 order by w.sort asc")
    List<LifeCareItemDictDO> findByOrgCode(String orgCode);
}

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

@ -0,0 +1,15 @@
package com.yihu.jw.care.dao.sign;
import com.yihu.jw.entity.base.servicePackage.BasePatientHelperDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
/**
 * Created by Bing on 2022/3/11.
 */
public interface BasePatientHelperDao extends PagingAndSortingRepository<BasePatientHelperDO,Long>,
        JpaSpecificationExecutor<BasePatientHelperDO> {
    @Query("select p from BasePatientHelperDO p where p.patient=?1 and p.doctor=?2 and p.del=1 ")
    BasePatientHelperDO findByPatientAndDoctor(String patient,String doctor);
}

+ 49 - 1
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/assistance/EmergencyAssistanceEndpoint.java

@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.care.aop.ObserverRequired;
import com.yihu.jw.care.aop.ServicesAuth;
import com.yihu.jw.care.service.assistance.EmergencyAssistanceService;
import com.yihu.jw.care.service.security.SecurityMonitoringOrderService;
import com.yihu.jw.restmodel.ResponseContant;
import com.yihu.jw.restmodel.web.ListEnvelop;
import com.yihu.jw.restmodel.web.ObjEnvelop;
@ -25,6 +26,8 @@ public class EmergencyAssistanceEndpoint extends EnvelopRestEndpoint {
    @Autowired
    private EmergencyAssistanceService assistanceService;
    @Autowired
    private SecurityMonitoringOrderService securityMonitoringOrderService;
    @PostMapping(value = "newOrder")
    @ApiOperation(value = "居民发起新的紧急救助")
@ -320,7 +323,7 @@ public class EmergencyAssistanceEndpoint extends EnvelopRestEndpoint {
    }
    @PostMapping("doctorSendMessageLog")
    @ApiOperation(value = "助老员紧急预警im发送消息日志")
    @ApiOperation(value = "社工紧急预警im发送消息日志")
    @ObserverRequired
    public ObjEnvelop doctorSendMessageLog(
            @ApiParam(name="doctor")@RequestParam(value = "doctor")String doctor,
@ -334,4 +337,49 @@ public class EmergencyAssistanceEndpoint extends EnvelopRestEndpoint {
        }
    }
    /******************************************助老员部分********************************************/
    @GetMapping(value = "helper/getEmeAndSecuOrderList")
    @ApiOperation(value = "助老员获取安防与紧急呼叫工单列总和")
    public ListEnvelop getEmeAndSecuOrderList(@ApiParam(name="patientId",value = "居民id")
                                    @RequestParam(value = "patientId",required = false) String patientId,
                                    @ApiParam(name="patientName",value = "患者姓名/身份证")
                                    @RequestParam(value = "patientName",required = false) String patientName,
                                    @ApiParam(name="doctor",value = "查看医生")
                                    @RequestParam(value = "doctor",required = true) String doctor,
                                    @ApiParam(name="status",value = "工单状态-2误报警-1已取消0已完成1申请中")
                                    @RequestParam(value = "status",required = false) String status,
                                    @ApiParam(name="svrDesc",value = "安防工单服务类型 关联security_server_dict字典")
                                    @RequestParam(value = "svrDesc",required = false)String svrDesc,
                                    @ApiParam(name="orderType",value = "工单类型,20紧急呼叫22安防工单")
                                    @RequestParam(value = "orderType",required = true)String orderType,
                                    @ApiParam(name="page",value = "page")
                                    @RequestParam(value = "page",required = true) Integer page,
                                    @ApiParam(name="pageSize",value = "pageSize")
                                    @RequestParam(value = "pageSize",required = true) Integer pageSize
    ){
        try {
            if (StringUtils.isBlank(patientId)&&StringUtils.isBlank(doctor)){
                return ListEnvelop.getError("请求参数错误");
            }
            return ListEnvelop.getSuccess( "查询成功",assistanceService.getEmeAndSecuOrderList(orderType,patientId,patientName,doctor,status,page,pageSize,svrDesc));
        }catch (Exception e){
            return failedListEnvelopException2(e);
        }
    }
    @GetMapping(value = "helper/getEmeAndSecuOrderTab")
    @ApiOperation(value = "助老员获取安防与紧急呼叫工单Tab")
    public ObjEnvelop getEmeAndSecuOrderTab(@ApiParam(name="orderType",value = "工单类型,20紧急呼叫22安防工单")
                                             @RequestParam(value = "orderType",required = true)String orderType,
                                             @ApiParam(name="doctor",value = "查看医生")
                                             @RequestParam(value = "doctor",required = true) String doctor){
        try {
            return ObjEnvelop.getSuccess( "查询成功",assistanceService.getEmeAndSecuOrderTab(orderType,doctor));
        }catch (Exception e){
            return failedObjEnvelopException2(e);
        }
    }
}

+ 26 - 2
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/doctor/DoctorEndpoint.java

@ -224,7 +224,7 @@ public class DoctorEndpoint extends EnvelopRestEndpoint {
    }
    @GetMapping(value = "getNotificationCount")
    @ApiOperation(value = "教师首页-上门辅导待完成工单、在线咨询未回复、消息列表未回复")
    @ApiOperation(value = "上门辅导待完成工单、在线咨询未回复、消息列表未回复")
    public ObjEnvelop getNotificationCount(
            @ApiParam(name = "doctor", value = "doctor", defaultValue = "4028030c796376b801796380a2b50003") @RequestParam(value = "doctor",required = true) String doctor
//            ,@ApiParam(name = "type", value = "type", defaultValue = "0") @RequestParam(value = "type",required = false) Integer type
@ -266,7 +266,7 @@ public class DoctorEndpoint extends EnvelopRestEndpoint {
    }
    @GetMapping(value = "/baseInfoCount")
    @ApiOperation(value = "医生首页服务数量获取")
    @ApiOperation(value = "首页养老服务数量获取")
    public ObjEnvelop baseInfoCount(@ApiParam(name="doctor")@RequestParam(value = "doctor")String doctor){
        try {
            return ObjEnvelop.getSuccess("查询成功",doctorService.baseInfoCount(doctor)) ;
@ -296,4 +296,28 @@ public class DoctorEndpoint extends EnvelopRestEndpoint {
            return failedException2(e);
        }
    }
    /*******************************助老员部分**********************************************/
    @GetMapping(value = "helper/baseInfoCount")
    @ApiOperation(value = "首页养老服务数量获取")
    public ObjEnvelop baseHelperInfoCount(@ApiParam(name="doctor")@RequestParam(value = "doctor")String doctor){
        try {
            return ObjEnvelop.getSuccess("查询成功",doctorService.baseHelperInfoCount(doctor)) ;
        }catch (Exception e){
            return failedObjEnvelopException2(e);
        }
    }
    @GetMapping(value = "helper/patientCount")
    @ApiOperation(value = "获取我的居民统计数量")
    public ObjEnvelop helperPatientCount (
            @ApiParam(name = "doctorId", value = "医生id", required = true)
            @RequestParam(value = "doctorId",required = true) String doctorId){
        try{
            return ObjEnvelop.getSuccess("查询成功",capacityAssessmentRecordService.getHelperPatientNum(doctorId));
        }catch (Exception e){
            return failedObjEnvelopException2(e);
        }
    }
}

+ 19 - 2
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/doctor/DoctorToDoWorkEndpoint.java

@ -15,13 +15,13 @@ import org.springframework.web.bind.annotation.RestController;
/***
 * @ClassName: DoctorToDoWorkEndpoint
 * @Description: 助老员 待办工作
 * @Description: 社工 待办工作
 * @Auther: shi kejing
 * @Date: 2021/5/8 17:42
 */
@RestController
@RequestMapping(value = "doctor/todowork")
@Api(description = "助老员 - 待办工作")
@Api(description = "社工 - 待办工作")
public class DoctorToDoWorkEndpoint extends EnvelopRestEndpoint {
    @Autowired
@ -67,4 +67,21 @@ public class DoctorToDoWorkEndpoint extends EnvelopRestEndpoint {
            return failedPageEnvelopException2(e);
        }
    }
    /*************************************助老员部分*************************************************/
    @GetMapping(value = "helper/todowork")
    @ApiOperation("待办工作")
    public ObjEnvelop helperMessages(@ApiParam(name = "serviceSype", value = "工作类型: 生活照料,安防监护=preventLost,紧急救助=emergencyAssistance,生活照料=fifeCare")
                               @RequestParam(value = "serviceSype", required = false) String serviceSype,
                               @ApiParam(name = "id", value = "查看详情需要传id")
                               @RequestParam(value = "id", required = false) String id,
                               @ApiParam(name = "doctor", value = "doctor")
                               @RequestParam(value = "doctor", required = true) String doctor){
        try {
            return ObjEnvelop.getSuccess("查询成功",doctorMessageService.getHelperPreventLost(doctor,id,serviceSype));
        }catch (Exception e){
            return failedObjEnvelopException2(e);
        }
    }
}

+ 36 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/label/PatientLabelEndpoint.java

@ -62,4 +62,40 @@ public class PatientLabelEndpoint extends EnvelopRestEndpoint {
        }
    }
    /**********************************助老员部分***************************************************/
    @GetMapping(value = "helper/findSignPatientLabelList")
    @ApiOperation(value = "助老员标签查找签约居民")
    public PageEnvelop<List<Map<String,Object>>> findSignPatientLabelList (
            @ApiParam(name = "doctor", value = "医生code", required = true)
            @RequestParam(value = "doctor",required = true) String doctor,
            @ApiParam(name = "labelCode", value = "标签", required = false)
            @RequestParam(value = "labelCode",required = false) String labelCode,
            @ApiParam(name = "name", value = "姓名或身份证", required = false)
            @RequestParam(value = "name",required = false) String name,
            @ApiParam(name = "topicItem", value = "专题code,关联security_topic_dict字典", required = false)//有绑定相关专题设备
            @RequestParam(value = "topicItem",required = false) String topicItem,
            @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) throws Exception {
        try{
            return patientLableService.findSignPatientLabelList(doctor,labelCode, name,topicItem, page, size);
        }catch (Exception e){
            return failedPageEnvelopException2(e);
        }
    }
    @GetMapping(value = "helper/findSignPatientLabelNum")
    @ApiOperation(value = "助老员查找签约居民的标签统计")
    public ListEnvelop findSignPatientLabelNum (
            @ApiParam(name = "doctor", value = "医生code", required = true)
            @RequestParam(value = "doctor",required = true) String doctor) {
        try{
            return ListEnvelop.getSuccess("查询成功",patientLableService.findSignPatientLabelNum(doctor));
        }catch (Exception e){
            return failedListEnvelopException2(e);
        }
    }
}

+ 3 - 2
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/lifeCare/PadLifeCareEndpoint.java

@ -102,9 +102,10 @@ public class PadLifeCareEndpoint extends EnvelopRestEndpoint {
    @GetMapping(value = "findItemDict")
    @ApiOperation(value = "查找服务项字典")
    public ListEnvelop findItemDict() {
    public ListEnvelop findItemDict(@ApiParam(value = "orgCode", name = "orgCode")
                                    @RequestParam(value = "orgCode", required = true) String orgCode) {
        try {
            return ListEnvelop.getSuccess("查询成功",lifeCareOrderService.findItemDict());
            return ListEnvelop.getSuccess("查询成功",lifeCareOrderService.findItemDict(orgCode));
        }catch (Exception e){
            return failedListEnvelopException2(e);
        }

+ 3 - 2
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/lifeCare/PatientLifeCareEndpoint.java

@ -131,9 +131,10 @@ public class PatientLifeCareEndpoint  extends EnvelopRestEndpoint {
    @GetMapping(value = "findItemDict")
    @ApiOperation(value = "查找服务项字典")
    public ListEnvelop findItemDict() {
    public ListEnvelop findItemDict(@ApiParam(value = "orgCode", name = "orgCode")
                                   @RequestParam(value = "orgCode", required = true) String orgCode) {
        try {
            return ListEnvelop.getSuccess("查询成功",lifeCareOrderService.findItemDict());
            return ListEnvelop.getSuccess("查询成功",lifeCareOrderService.findItemDict(orgCode));
        }catch (Exception e){
            return failedListEnvelopException2(e);
        }

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

@ -30,7 +30,7 @@ public class DoctorSafeAreaController extends EnvelopRestEndpoint {
    @Autowired
    private SafeAreaService safeAreaService;
    @ApiOperation("助老员新增电子围栏记录")
    @ApiOperation("社工新增电子围栏记录")
    @ObserverRequired
    @RequestMapping(value = "doctorNewSafeArea",method = RequestMethod.GET)
    public ObjEnvelop doctorNewSafeArea(@ApiParam(name = "doctor",value = "doctor")

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

@ -363,7 +363,7 @@ public class SecurityMonitoringOrderEndpoint extends EnvelopRestEndpoint {
        }
    }
    @ApiOperation("助老员端获取日常监护居民")
    @ApiOperation("社工端获取日常监护居民")
    @GetMapping(value = "findMonitorPatientsByDoctor")
    @ResponseBody
    public ObjEnvelop findMonitorPatientsByDoctor(@ApiParam(name = "doctor",  required = true)@RequestParam(value = "doctor")String doctor,

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

@ -32,7 +32,7 @@ import java.util.Map;
 */
@RestController
@RequestMapping(value = "sign")
@Api(value = "签约相关", description = "签约相关", tags = {"签约相关"})
@Api(value = "社工签约相关", description = "签约相关", tags = {"签约相关"})
public class SignEndpoint extends EnvelopRestEndpoint {
    @Autowired
@ -667,4 +667,87 @@ public class SignEndpoint extends EnvelopRestEndpoint {
        }
    }
    /****************************助老员部分*******************************************/
    @PostMapping(value = "helper/addPatient")
    @ApiOperation(value = "助老员添加监护居民")
    public Envelop helperAddPatient(
            @ApiParam(name = "patient",value = "添加居民id",required = true)
            @RequestParam(value = "patient")String patient,
            @ApiParam(name = "doctor",value = "当前操作助老员id",required = true)
            @RequestParam(value = "doctor")String doctor
            ){
        try {
            JSONObject result = servicePackageService.helperAddPatient(patient,doctor);
            return success(result.getString(ResponseContant.resultMsg),result.getIntValue(ResponseContant.resultFlag));
        }catch (Exception e){
           return failedException2(e);
        }
    }
    @PostMapping(value = "helper/delPatient")
    @ApiOperation(value = "助老员删除监护居民")
    public Envelop helperDelPatient(
            @ApiParam(name = "patient",value = "添加居民id",required = true)
            @RequestParam(value = "patient")String patient,
            @ApiParam(name = "doctor",value = "当前操作助老员id",required = true)
            @RequestParam(value = "doctor")String doctor
    ){
        try {
            JSONObject result = servicePackageService.helperDelPatient(patient,doctor);
            return success(result.getString(ResponseContant.resultMsg),result.getIntValue(ResponseContant.resultFlag));
        }catch (Exception e){
            return failedException2(e);
        }
    }
    @GetMapping(value = "helper/patientList")
    @ApiOperation(value = "助老员获取监护居民列表")
    public PageEnvelop<List<Map<String,Object>>> helperArchiveList(
            @ApiParam(name = "doctorId", value = "医生id", required = false)
            @RequestParam(value = "doctorId",required = false) String doctorId,
            @ApiParam(name = "userRole", value = "管理员权限,没有传空", required = false)
            @RequestParam(value = "userRole",required = false) String userRole,
            @ApiParam(name = "name", value = "居民姓名", required = false)
            @RequestParam(value = "name",required = false) String name,
            @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) throws Exception {
        try{
            if (StringUtils.isBlank(doctorId)&&StringUtils.isBlank(name)){
                return PageEnvelop.getError("请求参数错误");
            }
            return archiveService.helperArchiveList(doctorId,userRole,page,size,name);
        }catch (Exception e){
            return failedPageEnvelopException2(e);
        }
    }
    @GetMapping(value = "helper/archiveList")
    @ApiOperation(value = "助老员获取社工签约居民列表")
    public PageEnvelop<List<Map<String,Object>>> helperArchiveList (
            @ApiParam(name = "doctorId", value = "医生id", required = true)
            @RequestParam(value = "doctorId",required = true) String doctorId,
            @ApiParam(name = "hospital", value = "签约机构", required = false)
            @RequestParam(value = "hospital",required = false) String hospital,
            @ApiParam(name = "signStatus", value = "签约状态", required = false)
            @RequestParam(value = "signStatus",required = false) Integer signStatus,
            @ApiParam(name = "name", value = "居民姓名", required = false)
            @RequestParam(value = "name",required = false) String name,
            @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) throws Exception {
        try{
            if (StringUtils.isBlank(doctorId)&&StringUtils.isBlank(name)){
                return PageEnvelop.getError("请求参数错误");
            }
            return archiveService.helperArchiveList(doctorId,hospital,page,size,signStatus,name);
        }catch (Exception e){
            return failedPageEnvelopException2(e);
        }
    }
}

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

@ -296,7 +296,7 @@ public class DetectionPlatformEndpoint extends EnvelopRestEndpoint {
        }
    }
    @ApiOperation("助老员端获取日常监护居民")
    @ApiOperation("社工端获取日常监护居民")
    @GetMapping(value = "findMonitorPatientsByDoctor")
    @ResponseBody
    public ObjEnvelop findMonitorPatientsByDoctor(
@ -317,7 +317,7 @@ public class DetectionPlatformEndpoint extends EnvelopRestEndpoint {
        }
    }
    @ApiOperation("助老员端获取日常监护居民")
    @ApiOperation("社工端获取日常监护居民")
    @GetMapping(value = "findSignOlder")
    @ResponseBody
    public ObjEnvelop findSignOlder(

+ 1 - 1
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/statistics/OpenStatisticsEndpoint.java

@ -210,7 +210,7 @@ public class OpenStatisticsEndpoint extends EnvelopRestEndpoint {
    @GetMapping(value = "findUserByType")
    @ApiOperation(value = "人员实时动态搜索")
    public Envelop findUserByType(@ApiParam(name = "type", value = "类型:1幼儿,2老人,3助老员,4医生,5老人家属。不传返回四个类型的数据")
    public Envelop findUserByType(@ApiParam(name = "type", value = "类型:1幼儿,2老人,3社工,4医生,5老人家属。不传返回四个类型的数据")
                                  @RequestParam(value = "type", required = false) String type,
                                  @ApiParam(name = "name", value = "姓名")
                                  @RequestParam(value = "name", required = false) String name,

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

@ -82,7 +82,7 @@ public class PatientInfoPlatFormEndpoint extends EnvelopRestEndpoint {
    }
    @GetMapping(value = "getLatLon")
    @ApiOperation("查询所有助老员坐标")
    @ApiOperation("查询所有社工坐标")
    public ListEnvelop getLatLon(){
        try {
            return ListEnvelop.getSuccess("查询成功",baseServiceNewsService.getLatLon());

+ 8 - 3
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/visit/VisitEndpoint.java

@ -119,9 +119,15 @@ public class VisitEndpoint extends EnvelopRestEndpoint {
                            @ApiParam(name = "visitContent", value = "走访记录")
                            @RequestParam(value = "visitContent", required = true) String visitContent,
                            @ApiParam(name = "visitImg", value = "走访图片")
                            @RequestParam(value = "visitImg", required = true) String visitImg) {
                            @RequestParam(value = "visitImg", required = true) String visitImg,
                            @ApiParam(name = "deviceMaintenance", value = "设备维护")
                            @RequestParam(value = "deviceMaintenance", required = false) String deviceMaintenance,
                            @ApiParam(name = "health", value = "健康情况")
                            @RequestParam(value = "health", required = false) String health,
                            @ApiParam(name = "lifeConsult", value = "生活咨询")
                            @RequestParam(value = "lifeConsult", required = false) String lifeConsult) {
        try {
            String result = baseVisitService.completeVisit(id,visitContent,visitImg);
            String result = baseVisitService.completeVisit(id,visitContent,visitImg,deviceMaintenance,health,lifeConsult);
            if(StringUtils.isNotBlank(result)){
                return Envelop.getError("操作失败:"+result,-1);
            }
@ -148,5 +154,4 @@ public class VisitEndpoint extends EnvelopRestEndpoint {
            return failedException2(e);
        }
    }
}

+ 1 - 1
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/activity/ChildActivityRegistrationService.java

@ -73,7 +73,7 @@ public class ChildActivityRegistrationService {
     * @param size
     */
    public PageEnvelop childActivityRegistrationList(String patient,String activityType,String orgCode, int page, int size){
        String sql = "SELECT a.id,a.activity_type activityType,a.patient,p.name,p.sex,p.idcard,p.photo,org.code,org.name orgName,DATE_FORMAT(a.create_time,'%Y-%m-%d %H:%i:%S') create_time from base_child_activity_registration a " +
        String sql = "SELECT a.id,a.activity_type activityType,a.patient,p.name,p.sex,p.idcard,p.archive_type archiveType,p.photo,org.code,org.name orgName,DATE_FORMAT(a.create_time,'%Y-%m-%d %H:%i:%S') create_time from base_child_activity_registration a " +
                "LEFT JOIN base_org org on a.org_code = org.code ,base_patient p " +
                "WHERE a.patient = p.id";

+ 2 - 2
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/apply/PatientBedApplyService.java

@ -70,7 +70,7 @@ public class PatientBedApplyService extends BaseJpaService<PatientBedApplyDo, Pa
        else {
            //
            String sql = " select count(*) from base_patient p,base_service_package_sign_record sr, base_service_package_record pr,base_service_package pack\n" +
                    "where p.idcard = '"+idcard+"' and p.id = sr.patient and sr.id = pr.sign_id and pr.service_package_id = pack.id and sr.`status`=1 and pack.del=1 ";
                    "where p.idcard = '"+idcard+"' and p.id = sr.patient and sr.id = pr.sign_id and pr.service_package_id = pack.id and sr.`status`=1 and p.del=1 and pack.del=1 ";
            Integer count = jdbcTemplate.queryForObject(sql,Integer.class);
            if (count>0){
                String failMsg = "居民已签约,无法进行床位申请";
@ -113,7 +113,7 @@ public class PatientBedApplyService extends BaseJpaService<PatientBedApplyDo, Pa
    public List<Map<String,Object>> getApplyList(String doctor){
        List<Map<String,Object>> result = new ArrayList<>();
        BaseDoctorDO doctorDO = baseDoctorDao.findById(doctor);
        if (doctorDO.getLevel()!=null&&doctorDO.getLevel()==2){//助老员
        if (doctorDO.getLevel()!=null&&doctorDO.getLevel()==2){//社工
            List<BaseDoctorHospitalDO> hospitalDOS = baseDoctorHospitalDao.findDistinctOrgByDoctorCode(doctor);
            for (BaseDoctorHospitalDO obj:hospitalDOS){
                String sql="select ap.id,p.id patientCode,ap.patient_name name,p.sex,ap.idcard,p.photo,ap.status,DATE_FORMAT(ap.create_time,'%Y-%m-%d %H:%i:%S') create_time " +

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

@ -670,12 +670,22 @@ public class EmergencyAssistanceService extends BaseJpaService<EmergencyAssistan
        if (StringUtils.isNotBlank(patient)){
            sql.append( " and (ord.patient='"+patient+"' or ord.proxy_patient='"+patient+"' ) group by ord.status  ");
        }
        else if (StringUtils.isNotBlank(doctor))    {
            sql.append(" AND EXISTS (" +
                    "SELECT sr.patient from base_service_package_sign_record sr,base_service_package_record r, base_service_package_item i ," +
                    "base_team_member m " +
                    "where ord.patient = CONVERT(sr.patient USING utf8) and  sr.id = r.sign_id and sr.status=1 and r.service_package_id = i.service_package_id and  m.team_code = r.team_code " +
                    " and i.del = 1 and sr.`status`=1  and i.code='emergencyAssistance' and m.doctor_code = '"+doctor+"' and m.del = '1') group by ord.status");
        else if (StringUtils.isNotBlank(doctor)){
            BaseDoctorDO doctorDO = doctorDao.findById(doctor);
            if (null!=doctorDO){
                if (2==doctorDO.getLevel()){//社工
                    sql.append(" AND EXISTS (" +
                            "SELECT sr.patient from base_service_package_sign_record sr,base_service_package_record r, base_service_package_item i ," +
                            "base_team_member m " +
                            "where ord.patient = CONVERT(sr.patient USING utf8) and  sr.id = r.sign_id and sr.status=1 and r.service_package_id = i.service_package_id and  m.team_code = r.team_code " +
                            " and i.del = 1 and sr.`status`=1  and i.code='emergencyAssistance' and m.doctor_code = '"+doctor+"' and m.del = '1') group by ord.status");
                }
                if (4==doctorDO.getLevel()){//助老员
                    sql.append(" and EXISTS (" +
                            "SELECT 1 from base_patient_helper ph INNER JOIN base_patient p on ph.patient = p.id and p.del=1 " +
                            " where ord.patient = ph.patient and ph.doctor='"+doctor+"' and ph.del=1) group by ord.status  ");
                }
            }
        }
        List<Map<String,Object>> sqlResult = jdbcTemplate.queryForList(sql.toString());
        for (Map<String,Object> map:sqlResult){
@ -721,11 +731,21 @@ public class EmergencyAssistanceService extends BaseJpaService<EmergencyAssistan
    public List<EmergencyAssistanceDO> getOrderList(String patient,String patientName,String doctor,String status,Integer page,Integer pageSize,String sort){
        StringBuilder sql = new StringBuilder(" select ord.* from base_emergency_assistance_order ord inner join base_patient pa on pa.id = ord.patient and pa.del=1  where 1=1 ");
        if (StringUtils.isNotBlank(doctor)){
            sql.append(" AND EXISTS (" +
                    "SELECT sr.patient from base_service_package_sign_record sr,base_service_package_record r, base_service_package_item i ," +
                    "base_team_member m " +
                    "where ord.patient = CONVERT(sr.patient USING utf8) and  sr.id = r.sign_id and sr.status=1 and r.service_package_id = i.service_package_id and  m.team_code = r.team_code " +
                    " and i.del = 1 and sr.`status`=1  and i.code='emergencyAssistance' and m.doctor_code = '"+doctor+"' and m.del = '1') ");
            BaseDoctorDO doctorDO = doctorDao.findById(doctor);
            if (null!=doctorDO){
                if (2==doctorDO.getLevel()){//社工
                    sql.append(" AND EXISTS (" +
                            "SELECT sr.patient from base_service_package_sign_record sr,base_service_package_record r, base_service_package_item i ," +
                            "base_team_member m " +
                            "where ord.patient = CONVERT(sr.patient USING utf8) and  sr.id = r.sign_id and sr.status=1 and r.service_package_id = i.service_package_id and  m.team_code = r.team_code " +
                            " and i.del = 1 and sr.`status`=1  and i.code='emergencyAssistance' and m.doctor_code = '"+doctor+"' and m.del = '1') ");
                }
                if (4==doctorDO.getLevel()){//助老员
                    sql.append(" and EXISTS (" +
                            "SELECT 1 from base_patient_helper ph INNER JOIN base_patient p on ph.patient = p.id and p.del=1 " +
                            " where ord.patient = ph.patient and ph.doctor='"+doctor+"' and ph.del=1) ");
                }
            }
        }
        if (StringUtils.isNotBlank(patient)){
            sql.append(" and ( ord.patient  = '"+patient+"' or ord.proxy_patient='"+patient+"' )");
@ -1206,4 +1226,119 @@ public class EmergencyAssistanceService extends BaseJpaService<EmergencyAssistan
        return logDO;
    }
    /****************************************助老员部分*************************************************************************/
    /**
     * 查看居民救助历史记录
     * @param patient
     * @param doctor
     * @return
     */
    public List<Map<String,Object>> getEmeAndSecuOrderList(String orderType,String patient,String patientName,String doctor,String status,Integer page,Integer pageSize,String svrDesc){
        page = page>0?page-1:0;
        List<Map<String,Object>> result = new ArrayList<>();
        String filter = " ";
        if (StringUtils.isNotBlank(patient)){
            filter += " and ord.patient ='"+patient+"' ";
        }
        if (StringUtils.isNotBlank(patientName)){
            filter += " and ord.patient_name like'%"+patientName+"%' ";
        }
        if (StringUtils.isNotBlank(status)){
            filter += " and ord.status ='"+status+"' ";
        }
        String sql = " ";
        if (StringUtils.isNotBlank(orderType)){
            List<String> orderTypes = Arrays.asList(orderType.split(",").clone());
            if (orderTypes.contains("20")){
                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 ,case p.sex when 1 then '男' when 2 then '女' else p.sex end as sex," +
                        " TIMESTAMPDIFF(YEAR,p.birthday,now()) as age " +
                        "from base_emergency_assistance_order ord  INNER JOIN base_patient p on ord.patient = p.id  INNER JOIN base_patient_helper ph on p.id = ph.patient and ph.del=1  " +
                        " where ph.doctor='"+doctor+"' "+filter;
            }
            if (orderTypes.contains("20")&&orderTypes.contains("22")){
                sql += " UNION ";
            }
            if (orderTypes.contains("22")){
                sql += " 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 ,case p.sex when 1 then '男' when 2 then '女' else p.sex end as sex, " +
                        "TIMESTAMPDIFF(YEAR,p.birthday,now()) as age from base_security_monitoring_order ord " +
                        " INNER JOIN base_patient p on ord.patient = p.id INNER JOIN base_patient_helper ph on p.id = ph.patient and ph.del=1 " +
                        " where ph.doctor='"+doctor+"'  "+filter;
                if(StringUtils.isNotBlank(svrDesc)){
                    sql += " and ord.service = '"+svrDesc+"' ";
                }
            }
            sql += "order by create_time desc limit "+page*pageSize+","+pageSize;
            result =   jdbcTemplate.queryForList(sql);
        }
        return result;
    }
    public JSONObject getEmeAndSecuOrderTab(String orderType,String doctor){
        JSONObject result = new JSONObject();
        if ("20".equals(orderType)){
            result.put("status_-2",0);//误报警
            result.put("status_-1",0);//已取消
            result.put("status_0",0);//已完成
            result.put("status_1",0);//预警中
            String sql = " select ord.status,count(ord.id) count from base_emergency_assistance_order ord INNER JOIN base_patient_helper ph on ord.patient = ph.patient and ph.del=1 " +
                    "  where ph.doctor='"+doctor+"'  " ;
            List<Map<String,Object>> sqlResult = jdbcTemplate.queryForList(sql);
            for (Map<String,Object> map:sqlResult){
                result.put("status_"+map.get("status"),map.get("count"));
            }
            Integer All = 0;
            Set<String> keySet = result.keySet();
            for (String key : keySet){
                All+=result.getInteger(key);
            }
            result.put("all",All);
        }
        else if("22".equals(orderType)){
            result.put("status_-2", 0);//误报警
            result.put("status_-1", 0);//已取消
            result.put("status_0", 0);//已完成
            result.put("status_1", 0);//预警中
            result.put("status_all", 0);//
            result.put("svr_all", 0);//
            Map<String, String> serverTmp = new HashMap<>();
            String sql = " select py_code,dict_value from wlyy_hospital_sys_dict where dict_name='security_server_dict' ";
            List<Map<String, Object>> servers = jdbcTemplate.queryForList(sql);
            for (Map<String, Object> server : servers) {
                result.put("svr_" + server.get("py_code").toString(), 0);
                serverTmp.put(server.get("dict_value").toString(), server.get("py_code").toString());
            }
            sql = "select ord.status,ord.serve_desc,count(ord.id) count from base_security_monitoring_order ord INNER JOIN base_patient p on p.id = ord.patient " +
                    " INNER JOIN base_patient_helper ph on ord.patient = ph.patient and ph.del=1  where ph.doctor='"+doctor+"'  ";
            String fliter = "  ";
            fliter += " group by ord.status,ord.serve_desc ";
            List<Map<String, Object>> sqlResult = jdbcTemplate.queryForList(sql + fliter);
            String pyCode = "";
            for (Map<String, Object> map : sqlResult) {
                result.put("status_" + map.get("status"), result.getInteger("status_" + map.get("status")) + Integer.parseInt(map.get("count").toString()));
                pyCode = serverTmp.get(map.get("serve_desc")) == null ? null : serverTmp.get(map.get("serve_desc")).toString();
                if (StringUtils.isNotBlank(pyCode)) {
                    result.put("svr_" + pyCode, result.getInteger("svr_" + pyCode) + Integer.parseInt(map.get("count").toString()));
                    result.put("status_all", result.getInteger("status_all") + Integer.parseInt(map.get("count").toString()));
                    result.put("svr_all", result.getInteger("svr_all") + Integer.parseInt(map.get("count").toString()));
                }
            }
            return result;
        }else {
            String sql = " select count(ord.id)  from base_emergency_assistance_order ord INNER JOIN base_patient_helper ph on ord.patient = ph.patient and ph.del=1 " +
                    "  where ph.doctor='"+doctor+"' " ;
            Long emeCount = jdbcTemplate.queryForObject(sql,Long.class);
            result.put("emeAll",emeCount);
            sql = "select count(ord.id) count from base_security_monitoring_order ord INNER JOIN base_patient p on ord.patient = ord.patient " +
                    " INNER JOIN base_patient_helper ph on p.id = ph.patient and ph.del=1  where ph.doctor='"+doctor+"'  ";
            String fliter = "  ";
            Long secuCount = jdbcTemplate.queryForObject(sql,Long.class);
            result.put("secuAll",secuCount);
        }
        return result;
    }
}

+ 43 - 4
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/birthday/BirthdayWishesService.java

@ -176,7 +176,7 @@ public class BirthdayWishesService {
                "CASE p.sex WHEN 1 THEN '男' WHEN 2 THEN '女' END sex," +
                "p.idcard, p.photo," +
                " CASE LENGTH(p.idcard) WHEN  18 then SUBSTR(p.idcard,11,4) when 15 then SUBSTR(p.idcard, 9,4) END date " +
                "from wlyy_archive a,base_patient p WHERE  a.patient = p.id and a.sign_status = 1 and EXISTS( " +
                "from wlyy_archive a,base_patient p WHERE  a.patient = p.id and a.sign_status = 1 and p.del=1 and EXISTS( " +
                "SELECT DISTINCT sr.patient from base_service_package_sign_record sr,base_service_package_record r,base_service_package pack, " +
                "base_team_member m " +
                "WHERE  sr.id = r.sign_id and sr.patient = a.patient and r.service_package_id = pack.id  " +
@ -222,7 +222,7 @@ public class BirthdayWishesService {
        SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd 00:00:00");
        String now = f.format(new Date());
        String sql = "SELECT DISTINCT p.id " +
                "from wlyy_archive a,base_patient p WHERE  a.patient = p.id and a.sign_status = 1 and EXISTS( " +
                "from wlyy_archive a,base_patient p WHERE  a.patient = p.id and p.del=1 and a.sign_status = 1 and EXISTS( " +
                "SELECT DISTINCT sr.patient from base_service_package_sign_record sr,base_service_package_record r, " +
                "base_team_member m " +
                "WHERE  sr.id = r.sign_id and sr.patient = a.patient and sr.id = r.sign_id " +
@ -252,12 +252,12 @@ public class BirthdayWishesService {
        List<Map<String, Object>> resultList = new ArrayList();
        Long allCount = 0l;
        //判断是否筛选推送条件,若未筛选则从数据库直接查生日居民,再进行匹配是否推送,若选择已推送则从推送记录查,若未发送则从未推送表查
        //助老员签约患者
        //社工签约患者
        String sql = " SELECT Distinct p.id patient,p.idcard,p.mobile,p.name,p.sex,p.id,p.photo," +
                "CASE LENGTH(p.idcard) WHEN 18 THEN SUBSTR(p.idcard, 11, 4) WHEN 15 THEN SUBSTR(p.idcard, 9, 4) END birthday  " ;
        String sqlCount = "SELECT count(distinct p.idcard) ";
        String whereSql = "from wlyy_archive a,base_patient p WHERE  a.patient = p.id and a.sign_status = 1 and EXISTS( " +
        String whereSql = "from wlyy_archive a,base_patient p WHERE  a.patient = p.id and a.sign_status = 1 and p.del=1 and EXISTS( " +
                "SELECT DISTINCT sr.patient from base_service_package_sign_record sr,base_service_package_record r,base_service_package pack , " +
                "base_team_member m " +
                "WHERE  sr.id = r.sign_id and sr.patient = a.patient and  r.service_package_id = pack.id " +
@ -514,4 +514,43 @@ public class BirthdayWishesService {
        BirthDayWishesToPatient tmp = bwToPatientDao.findOne(id);
        return tmp;
    }
    /************************************助老员部分****************************************************************/
    /**
     * 获取助老员当天未发送生日祝福居民数量
     * @param doctor
     * @return
     */
    public Integer getHelperPatientByDoctorCount(String doctor) throws Exception{
        //es日期格式
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        String createTime = sdf.format(new Date()) + " 00:00:00";
        //今日推送的居民
        Set<String> sendPatients = (Set<String>) redisTemplate.opsForValue().get("birthday:wish:sendPatient");
        Date currentTime = new Date();
        SimpleDateFormat format = new SimpleDateFormat("MMdd");
        String dateString = format.format(currentTime);
        //获取当天0点
        SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd 00:00:00");
        String now = f.format(new Date());
        String sql = "SELECT DISTINCT p.id from  base_patient p INNER JOIN base_patient_helper ph on p.id = ph.patient and ph.del=1 " +
                " WHERE ph.doctor='"+doctor+"' " +
                "AND CASE LENGTH(p.idcard) WHEN  18 then SUBSTR(p.idcard,11,4) when 15 then SUBSTR(p.idcard, 9,4) END =  '" + dateString + "'  " ;
        List<String> patientInfos =  jdbcTemplate.queryForList(sql,String.class);
        Integer count=0;
        for (String tmp:patientInfos){
            if (null == sendPatients){
                count = patientInfos.size();
                break;
            }
            if (!sendPatients.contains(tmp)){
                count++;
            }
        }
        return count;
    }
}

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

@ -30,6 +30,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
@ -206,6 +207,7 @@ public class ConsultTeamService {
        templateJson.put("id",orderId);
        templateJson.put("OrderType",20);
        List<String> familyArchiveType3 = new ArrayList<>();
        for (int i=0;i<familyArr.size();i++){
            JSONObject tmp = familyArr.getJSONObject(i);
            String patientId = tmp.getString("id");
@ -215,6 +217,10 @@ public class ConsultTeamService {
            participants.put(patientId, 0);//家庭成员拉入会话
            String archiveType = tmp.getString("archiveType");
            if ("3".equals(archiveType)){
                if (familyArchiveType3.contains(patientId)){//避免重复发送
                    continue;
                }
                familyArchiveType3.add(patientId);
                String name = tmp.getString("name");
                //创建家属系统消息
                SystemMessageDO messageDO = new SystemMessageDO();
@ -239,8 +245,10 @@ public class ConsultTeamService {
            }
        }
        //加入团队医生
        //加入签约社工
        List<Map<String,Object>> doctorList = servicePackageService.fingdDoctorByPaitenId(patient,2);
        //加入助老员
        doctorList.addAll(servicePackageService.findHelperByPatientId(patient));
        for(Map<String,Object> map:doctorList){
            participants.put(String.valueOf(map.get("id")), 0);
        }
@ -414,7 +422,7 @@ public class ConsultTeamService {
        //(im创建咨询) 安防警报咨询的sessionid为居民code+咨询类型
        String sessionId = patient + "_" + consultTeam.getType();
        //4、安防警报咨询-参与者  提供服务的助老员 老人本人 家属
        //4、安防警报咨询-参与者  提供服务的社工 老人本人 家属
        JSONObject participants = new JSONObject();
        participants.put(patient, 0);
        //家属
@ -422,6 +430,8 @@ public class ConsultTeamService {
        JSONObject templateJson = new JSONObject();
        templateJson.put("id",orderId);
        templateJson.put("OrderType",22);
        List<String> familyArchiveType3 = new ArrayList<>();
        for (int i=0;i<familyArr.size();i++){
            JSONObject tmp = familyArr.getJSONObject(i);
            String patientId = tmp.getString("id");
@ -432,6 +442,10 @@ public class ConsultTeamService {
            participants.put(patientId, 0);
            String archiveType = tmp.getString("archiveType");
            if ("3".equals(archiveType)){
                if (familyArchiveType3.contains(patientId)){//避免重复发送
                    continue;
                }
                familyArchiveType3.add(patientId);
                String name = tmp.getString("name");
                //创建家属系统消息
                SystemMessageDO messageDO = new SystemMessageDO();
@ -456,8 +470,10 @@ public class ConsultTeamService {
            }
        }
        //加入团队医生
        //加入签约社工
        List<Map<String,Object>> doctorList = servicePackageService.fingdDoctorByPaitenId(patient,2);
        //加入助老员
        doctorList.addAll(servicePackageService.findHelperByPatientId(patient));
        for(Map<String,Object> map:doctorList){
            participants.put(String.valueOf(map.get("id")), 0);
        }

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

@ -413,7 +413,7 @@ public class PatientDeviceService extends BaseJpaService<DevicePatientDevice, Pa
        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 " +
                " and pd.device_sn = wd.device_code and pd.category_code = dd.category_code and dd.model = wd.device_model";
                " and pd.device_sn = wd.device_code and pd.category_code = dd.category_code and dd.model = wd.device_model and p.del=1 ";
        if (StringUtils.isNotBlank(patientName)){
            sql += " AND (p.`name` LIKE '%" + patientName +"%' or  p.idcard LIKE '%" + patientName + "%') ";
        }
@ -1916,7 +1916,7 @@ public class PatientDeviceService extends BaseJpaService<DevicePatientDevice, Pa
    /**
     * 助老员新增电子围栏记录
     * 社工新增电子围栏记录
     */
    public com.alibaba.fastjson.JSONObject doctorNewSafeArea(String doctor,String patient,String safe_area) throws Exception{

+ 55 - 5
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/doctor/CareDoctorService.java

@ -137,7 +137,7 @@ public class CareDoctorService extends BaseJpaService<BaseDoctorDO, BaseDoctorDa
     * @return
     */
    public PageEnvelop<List<Map<String,Object>>> doctorPage(String name,String orgCode,int page, int size){
        String sql = "SELECT d.id,d.name,d.photo,d.mobile,d.idcard,d.sex,h.dept_code deptCode,h.dept_name deptName,d.job_title_code jobTitleCode,d.job_title_name jobTitleName ";
        String sql = "SELECT d.id,d.name,d.photo,d.doctor_level level,d.mobile,d.idcard,d.sex,h.dept_code deptCode,h.dept_name deptName,d.job_title_code jobTitleCode,d.job_title_name jobTitleName ";
        String countSql = "SELECT count(d.id) ";
        String filters = "from base_doctor d,base_doctor_hospital h " +
@ -203,7 +203,7 @@ public class CareDoctorService extends BaseJpaService<BaseDoctorDO, BaseDoctorDa
                isSearchDoctorOrgType=true;
            }
        }
        if (2==doctorLevel) {//助老员
        if (2==doctorLevel||4==doctorLevel) {//社工或助老员
            doctorOrgType=3;
            if ("3".equals(orgType)){
                isSearchDoctorOrgType=true;
@ -262,7 +262,7 @@ public class CareDoctorService extends BaseJpaService<BaseDoctorDO, BaseDoctorDa
        if (StringUtils.isNotBlank(doctor)){
            BaseDoctorDO doctorDO = baseDoctorDao.findById(doctor);
            //教师角色登录时为本机构科室列表,点击展开人员列表
            //助老员角色登录时为本机构科室列表,点击展开人员列表
            //社工角色登录时为本机构科室列表,点击展开人员列表
            Integer doctorLevel = doctorDO.getLevel();
            Integer doctorOrgType =0 ;
            boolean isSearchDoctorOrgType=false;
@ -272,7 +272,7 @@ public class CareDoctorService extends BaseJpaService<BaseDoctorDO, BaseDoctorDa
                    isSearchDoctorOrgType=true;
                }
            }
            if (2==doctorLevel) {//助老员
            if (2==doctorLevel) {//社工
                doctorOrgType=3;
                if ("3".equals(orgType)){
                    isSearchDoctorOrgType=true;
@ -332,7 +332,7 @@ public class CareDoctorService extends BaseJpaService<BaseDoctorDO, BaseDoctorDa
        if (StringUtils.isNotBlank(deptCode)){
            count+=" and dict.code='"+deptCode+"' ";
        }
        String sql = "select dh.org_code,dh.org_name,doc.id,doc.name,doc.mobile,doc.photo,dict.code deptCode,dict.name deptName,dh.doctor_duty_code job,dh.doctor_duty_name jobName\n" +
        String sql = "select dh.org_code,dh.org_name,doc.id,doc.name,doc.mobile,doc.photo,doc.doctor_level as level,dict.code deptCode,dict.name deptName,dh.doctor_duty_code job,dh.doctor_duty_name jobName\n" +
                " from base_doctor_hospital dh INNER JOIN base_doctor doc on dh.doctor_code = doc.id  " +
                " and dh.del=1 LEFT JOIN " +
                " dict_hospital_dept dict on dh.dept_code = dict.`code` and dh.org_code = dict.org_code where dh.org_code='"+orgCode+"' ";
@ -557,6 +557,7 @@ public class CareDoctorService extends BaseJpaService<BaseDoctorDO, BaseDoctorDa
    }
    //首页养老服务数量获取
    public JSONObject baseInfoCount(String doctor){
        JSONObject result = new JSONObject();
        result.put("lifeCare",0);
@ -610,4 +611,53 @@ public class CareDoctorService extends BaseJpaService<BaseDoctorDO, BaseDoctorDa
        return result;
    }
    /******************************************助老员部分*************************************************/
    //首页养老服务数量获取
    public JSONObject baseHelperInfoCount(String doctor){
        JSONObject result = new JSONObject();
        result.put("lifeCare",0);
        result.put("emergencyAssistance",0);
        result.put("patientCare",0);//人文关怀
        result.put("security",0);
        List<BaseDoctorHospitalDO> doctorHospitalDOs = doctorHospitalDao.findByDoctorCode(doctor);
        String hospital = doctorHospitalDOs.get(0).getOrgCode();
        //生活照料
        String countSql = "SELECT  " +
                "   count(o.id)  " +
                " FROM  " +
                "   base_life_care_order o  " +
                " LEFT JOIN base_patient p ON o.patient = p.id " +
                " WHERE  " +
                "  o.hospital = 'hospital' "+
                " AND o.status = 1 and o.pay_status>0  ";
        Long count = jdbcTemplate.queryForObject(countSql,Long.class);
        if (count>0){
            result.put("lifeCare",count);
        }
        //紧急救助
        countSql = " select count(ord.id) count from base_emergency_assistance_order ord where ord.status=1 " +
                "AND EXISTS ( SELECT 1 from base_patient_helper ph inner join base_patient p on ph.patient = p.id and p.del=1 where ord.patient = ph.patient and ph.doctor='"+doctor+"' and ph.del=1 ) ";
        count = jdbcTemplate.queryForObject(countSql,Long.class);
        if (count>0){
            result.put("emergencyAssistance",count);
        }
        //安防工单
        countSql = " select count(ord.id) count from base_security_monitoring_order ord where ord.status=1 " +
                "AND EXISTS ( SELECT 1 from base_patient_helper ph inner join base_patient p on ph.patient = p.id and p.del=1 where ord.patient = ph.patient and ph.doctor='"+doctor+"' and ph.del=1 ) ";
        count = jdbcTemplate.queryForObject(countSql,Long.class);
        if (count>0){
            result.put("security",count);
        }
        //人文关怀
        try {
            Integer counts = birthdayWishesService.getHelperPatientByDoctorCount(doctor);
            if (counts>0){
                result.put("patientCare",counts);
            }
        }catch (Exception e){
            e.printStackTrace();
        }
        return result;
    }
}

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

@ -627,19 +627,21 @@ public class PatientFamilyMemberService extends BaseJpaService<BasePatientFamily
                }
                obj.put("state", "1");//0 :未处理;1:已同意;2:已拒绝
                Integer onLineFlag =0;
                switch (map.get("archive_type").toString()){
                    case "1":
                        //老人
                        if(map.get("openid")!=null||"1".equals(map.get("on_line")+"")){
                            onLineFlag=1;
                        }
                        break;
                    case "2":
                        //新生儿
                        if(map.get("openid")!=null){
                            onLineFlag=1;
                        }
                        break;
                if (null!=map.get("archive_type")&&!StringUtils.isNotBlank(map.get("archive_type").toString())){
                    switch (map.get("archive_type").toString()){
                        case "1":
                            //老人
                            if(map.get("openid")!=null||"1".equals(map.get("on_line")+"")){
                                onLineFlag=1;
                            }
                            break;
                        case "2":
                            //新生儿
                            if(map.get("openid")!=null){
                                onLineFlag=1;
                            }
                            break;
                    }
                }
                obj.put("onLineFlag", onLineFlag);
                resultArray.add(obj);

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

@ -63,7 +63,7 @@ public class PatientLableService extends BaseJpaService<WlyyPatientLabelDO, Wlyy
     * @return
     */
    public PageEnvelop<List<Map<String,Object>>> findSignPatientLabelListByTeamCode(String teamCode, String labelCode, String name,String topicItem, int page, int size){
        String sql = "SELECT DISTINCT p.id,p.name,p.photo,p.idcard,p.mobile,p.openid,p.sex,p.pad_imei padImei " ;
        String sql = "SELECT DISTINCT p.id,p.name,p.photo,p.sex,p.archive_type as archiveType,p.idcard,p.mobile,p.openid,p.pad_imei padImei " ;
        sql +=",(select COUNT(*) from wlyy_patient_device a where a.`user` = p.id and a.del=0) deviceFlag ";
        String countSql = "SELECT count(DISTINCT p.id) ";
        String filters ="";
@ -71,13 +71,13 @@ public class PatientLableService extends BaseJpaService<WlyyPatientLabelDO, Wlyy
             filters = "from base_service_package_sign_record sr,base_service_package_record r,  " +
                    "                base_patient p,wlyy_patient_label l " +
                    "                WHERE sr.id = r.sign_id and sr.status=1  " +
                    "                and r.team_code =  '"+teamCode+"' " +
                    "                and  p.del=1 and r.team_code =  '"+teamCode+"' " +
                    "                and sr.patient = p.id and p.id = l.patient and l.label_type = 1 and l.label_code =  '"+labelCode+"' ";
        }else {
            filters = "from base_service_package_sign_record sr,base_service_package_record r,  " +
                    "                base_patient p,wlyy_patient_label l " +
                    "                WHERE sr.id = r.sign_id and sr.status=1  " +
                    "                and r.team_code =  '"+teamCode+"' " +
                    "                and p.del=1 and r.team_code =  '"+teamCode+"' " +
                    "                and sr.patient = p.id and p.id = l.patient and l.label_type = 1  ";
        }
        if(StringUtils.isNotBlank(name)){
@ -88,7 +88,7 @@ public class PatientLableService extends BaseJpaService<WlyyPatientLabelDO, Wlyy
                    "where  pd.user = sr.patient and  FIND_IN_SET('"+topicItem+"',dd.service_topic)) ";
        }
        String orderBy = " ORDER BY sr.create_time DESC " +
        String orderBy = " ORDER BY sr.create_time,p.id DESC " +
                "LIMIT "+ (page - 1) * size + "," + size;
        List<Map<String,Object>> list = jdbcTemplate.queryForList(sql+filters+orderBy);
        for (Map<String,Object> map : list){
@ -105,5 +105,69 @@ public class PatientLableService extends BaseJpaService<WlyyPatientLabelDO, Wlyy
        return PageEnvelop.getSuccessListWithPage("success",list,page,size,count);
    }
    /**************************************助老员部分***************************************************************************/
    /**
     * 按团队和标签查找签约居民
     */
    public PageEnvelop<List<Map<String,Object>>> findSignPatientLabelList(String doctor,String labelCode, String name,String topicItem, int page, int size){
        String sql = "SELECT DISTINCT p.id,p.name,p.photo,p.sex,p.archive_type as archiveType,p.idcard,p.mobile,p.openid,p.pad_imei padImei " ;
        sql +=",(select COUNT(*) from wlyy_patient_device a where a.`user` = p.id and a.del=0) deviceFlag ";
        String countSql = "SELECT count(DISTINCT p.id) ";
        String filters ="";
        if(StringUtils.isNotBlank(labelCode)){
            filters = " from base_patient_helper ph, base_patient p,wlyy_patient_label l " +
                    "   WHERE ph.patient = p.id and ph.doctor='"+doctor+"' and p.del=1 and p.id = l.patient and l.label_type = 1 " +
                    " and l.label_code =  '"+labelCode+"' ";
        }else {
            filters = " from base_patient_helper ph, base_patient p,wlyy_patient_label l " +
                    "   WHERE ph.patient = p.id and ph.doctor='"+doctor+"' and p.del=1 and p.id = l.patient and l.label_type = 1 ";
        }
        if(StringUtils.isNotBlank(name)){
            filters += " and (p.name like '%"+name+"%' or p.idcard like '%"+name+"%') ";
        }
        if (StringUtils.isNotBlank(topicItem)){
            filters += " and EXISTS (select 1 from wlyy_patient_device pd INNER JOIN dm_device dd on pd.device_id = dd.id " +
                    "where  pd.user = sr.patient and  FIND_IN_SET('"+topicItem+"',dd.service_topic)) ";
        }
        String orderBy = " ORDER BY ph.create_time,p.id DESC " +
                "LIMIT "+ (page - 1) * size + "," + size;
        List<Map<String,Object>> list = jdbcTemplate.queryForList(sql+filters+orderBy);
        for (Map<String,Object> map : list){
            String idcard = map.get("idcard").toString();
            map.put("age", IdCardUtil.getAgeForIdcard(idcard));
            map.put("deviceType",deviceService.getPatientDeviceCategoryCode(map.get("id").toString()));
            //签约医生标识
            List<Map<String,Object>> doctorList = servicePackageService.getServerDoctorAll(map.get("id").toString(),"0","1");
            List<Map<String,Object>> helperList = servicePackageService.getServerDoctorAll(map.get("id").toString(),"0","2");
            map.put("helper", helperList.size()>0?1:0);
            map.put("doctor", doctorList.size()>0?1:0);
        }
        Long count = jdbcTemplate.queryForObject(countSql+filters,Long.class);
        return PageEnvelop.getSuccessListWithPage("success",list,page,size,count);
    }
    /**
     * 查找签约居民的标签统计
     * @return
     */
    public List<Map<String,Object>> findSignPatientLabelNum(String doctor){
        String sql = " SELECT COUNT(a.id) num,dict.dict_code labelCode,dict.dict_value labelName  " +
                " from wlyy_hospital_sys_dict dict  " +
                " LEFT JOIN (SELECT DISTINCT l.id,l.label_code  " +
                " from base_patient_helper ph, base_patient p,wlyy_patient_label l  " +
                " WHERE p.id = ph.patient and ph.doctor='"+doctor+"' and ph.del=1 and p.id = l.patient and l.label_type = 1)a  " +
                "  on dict.dict_code = a.label_code  " +
                " where dict.dict_name = '"+ConstantUtil.DICT_SERVICE_TYPE+"' and dict_code<>5   " +
                " GROUP BY labelCode,labelName ";
        List<Map<String,Object>> list = jdbcTemplate.queryForList(sql);
        for (Map<String,Object> map:list){
            if(map.get("labelCode")==null){
                list.remove(map);
                break;
            }
        }
        return list;
    }
}

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

@ -347,10 +347,11 @@ public class LifeCareOrderService extends BaseJpaService<LifeCareOrderDO, LifeCa
    /**
     * 查找服务项字典
     *   v1.7.1 机构的生活照料服务项目必须配置才有返回
     * @return
     */
    public List<LifeCareItemDictDO> findItemDict(){
        return lifeCareItemDictDao.findByAll();
    public List<LifeCareItemDictDO> findItemDict(String orgCode){
        return lifeCareItemDictDao.findByOrgCode(orgCode);
    }
    /**

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

@ -339,7 +339,7 @@ public class DoctorMessageService {
                        " m.team_code = r.team_code  and m.doctor_code = '"+doctor+"'  and a.status = 1 ";
                total += jdbcTemplate.queryForObject(sql,Integer.class);
            }
            if (2==doctorDO.getLevel()){//助老员
            if (2==doctorDO.getLevel()){//社工
                //紧急救助、安防、生活
                if(doctorServicePermissionsService.isPermission(doctor,8)==1){
                    sql = " select count(ord.id) from base_emergency_assistance_order ord where 1=1  AND EXISTS (SELECT sr.patient from " +
@ -382,8 +382,94 @@ public class DoctorMessageService {
                        " and h.del=1 where 1=1  and o.status in (3,4,5)and o.doctor= '"+doctor+"' ";
                total += jdbcTemplate.queryForObject(sql,Integer.class);
            }
            if (4==doctorDO.getLevel()){//助老员
                if(doctorServicePermissionsService.isPermission(doctor,8)==1){
                    sql = " select count(ord.id) from base_emergency_assistance_order ord where 1=1  AND EXISTS ( " +
                            " SELECT 1 from base_patient_helper ph inner join base_patient p on ph.patient = p.id and p.del=1  where ord.patient = ph.patient and ph.doctor='"+doctor+"' and ph.del=1 ) " +
                            " and ord.status in ('1') ";
                    total += jdbcTemplate.queryForObject(sql,Integer.class);
                }
                if(doctorServicePermissionsService.isPermission(doctor,10)==1){
                    sql = " select count(ord.id) from base_security_monitoring_order ord INNER JOIN base_patient p on p.id = ord.patient " +
                            " where 1=1    and  EXISTS ( SELECT 1 from base_patient_helper ph inner join base_patient p on ph.patient = p.id and p.del=1 where ord.patient = ph.patient and ph.doctor='"+doctor+"' and ph.del=1  ) " +
                            "  and ord.status='1'  ";
                    total += jdbcTemplate.queryForObject(sql,Integer.class);
                }
                if(doctorServicePermissionsService.isPermission(doctor,7)==1){
                    List<BaseDoctorHospitalDO> doctorHospitalDOs = doctorHospitalDao.findByDoctorCode(doctor);
                    if (doctorHospitalDOs.size()>0){
                        String hospital = doctorHospitalDOs.get(0).getOrgCode();
                        sql =" SELECT count(o.id)   FROM  base_life_care_order o LEFT JOIN base_patient p ON o.patient = p.id  " +
                                "WHERE  o.hospital = '"+hospital+"'  AND (o.`status` = 1 or -100 = 1) and o.pay_status>0 and o.status<>0 ";
                        total += jdbcTemplate.queryForObject(sql,Integer.class);
                    }
                }
            }
        }
        return total;
    }
    //助老员
    public JSONObject getHelperPreventLost(String doctor,String id,String type){
        JSONObject result = new JSONObject();
        boolean typeNull = StringUtils.isBlank(type);
        if (typeNull||type.equals("preventLost")){//安全监护
            String sql ="select id,patient_name,DATE_FORMAT(create_time,'%Y-%m-%d %H:%i:%S') create_time,'preventLost' as service_type " +
                    " from base_security_monitoring_order ord where 1=1  " +
                    "and status ='1'   " +
                    "and  EXISTS ( SELECT 1 from base_patient_helper ph inner join base_patient p on ph.patient = p.id and p.del=1 where ord.patient = ph.patient and ph.doctor='"+doctor+"' and ph.del=1 ) " +
                    "order by create_time DESC ";
            if (StringUtils.isNotBlank(id)){
                sql = "select * from base_security_monitoring_order ord where 1=1 \n" +
                        "AND id = '"+id+"'\n" +
                        "and status ='1' \n" +
                        "and  EXISTS (SELECT 1 from base_patient_helper ph inner join base_patient p on ph.patient = p.id and p.del=1 where ord.patient = ph.patient and ph.doctor='"+doctor+"' and ph.del=1) ";
            }
            List<Map<String,Object>> sqlResult  = jdbcTemplate.queryForList(sql);
            result.put("preventLost",sqlResult);
        }
        if (typeNull||type.equals("emergencyAssistance")){//紧急救助
            String sql ="select id,patient_name,DATE_FORMAT(create_time,'%Y-%m-%d %H:%i:%S') create_time,'emergencyAssistance' as service_type from base_emergency_assistance_order ord where 1=1\n" +
                    "and status =1  " +
                    "and EXISTS (  " +
                    "SELECT 1 from base_patient_helper ph inner join base_patient p on ph.patient = p.id and p.del=1 where ord.patient = ph.patient and ph.doctor='"+doctor+"' and ph.del=1 ) " +
                    "order by create_time DESC ";
            if (StringUtils.isNotBlank(id)){
                sql = "select * from base_emergency_assistance_order ord where 1=1 "+
                        " AND id = '"+id+"' and status =1  " +
                        " and EXISTS (SELECT 1 from base_patient_helper ph inner join base_patient p on ph.patient = p.id and p.del=1 where ord.patient = ph.patient and ph.doctor='"+doctor+"' and ph.del=1 ) ";
            }
            List<Map<String,Object>> sqlResult  = jdbcTemplate.queryForList(sql);
            result.put("emergencyAssistance",sqlResult);
        }
        if (typeNull||type.equals("fifeCare")){//生活照料
            String sql ="select id,patient_name,DATE_FORMAT(create_time,'%Y-%m-%d %H:%i:%S') create_time,'fifeCare' as service_type from base_life_care_order lco where 1=1 " +
                    "and status =1  " +
                    "and EXISTS (SELECT 1 from base_patient_helper ph inner join base_patient p on ph.patient = p.id and p.del=1 where lco.patient = ph.patient and ph.doctor='"+doctor+"' and ph.del=1  ) " +
                    "order by create_time DESC ";
            if (StringUtils.isNotBlank(id)){
                sql = "select * from base_life_care_order lco where 1=1 " +
                        "AND id = '"+id+"' " +
                        "and status =1  " +
                        "and EXISTS (SELECT 1 from base_patient_helper ph inner join base_patient p on ph.patient = p.id and p.del=1 where lco.patient = ph.patient and ph.doctor='"+doctor+"' and ph.del=1 )";
            }
            List<Map<String,Object>> sqlResult  = jdbcTemplate.queryForList(sql);
            result.put("fifeCare",sqlResult);
        }
        return result;
    }
}

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

@ -501,7 +501,7 @@ public class CarePatientService extends BaseJpaService<BasePatientDO, BasePatien
    /**
     *
     * @param type 类型:1幼儿,2老人,3助老员,4医生。不传返回四个类型的数据
     * @param type 类型:1幼儿,2老人,3社工,4医生。不传返回四个类型的数据
     * @param name 姓名
     * @param residentialArea 居住小区
     * @return
@ -693,7 +693,7 @@ public class CarePatientService extends BaseJpaService<BasePatientDO, BasePatien
    }
    /**
     * 查找助老员
     * 查找社工
     * @param name
     * @param limit
     * @return

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

@ -71,11 +71,11 @@ public class OnlineContactService extends BaseJpaService<BasePatientDO, BasePati
                }
                helperObj.put("onLineFlag", onLineFlag);
                list.add(helperObj);
                obj.put("helperObj",list);///助老员
                obj.put("helperObj",list);///社工
            }
        } else {
            List list = new ArrayList();
            obj.put("helperObj",list);///助老员
            obj.put("helperObj",list);///社工
        }
        if (jsList.size() > 0){

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

@ -715,14 +715,22 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
                    break;
            }
            if (StringUtils.isNotBlank(doctor)) {//日常监护医生必传
                fliter += " and EXISTS( SELECT 1 " +
                        " from  base_service_package_sign_record sr,base_service_package_record r,base_team_member m  " +
                        " WHERE ord.patient = CONVERT(sr.patient USING utf8) and sr.status=1 and m.team_code = r.team_code and sr.id=r.sign_id  " +
                        " and m.doctor_code = '" + doctor + "' and m.del = '1' ) ";
                fliter += " and EXISTS (select 1 from wlyy_patient_device pd INNER JOIN dm_device dd on pd.device_id = dd.id  " +
                        " where  pd.user = p.id and pd.del=0 and pd.category_code in (" + categoryCode + ") and FIND_IN_SET('" + topicItem + "',dd.service_topic)) ";
                BaseDoctorDO doctorDO = baseDoctorDao.findById(doctor);
                if (null!=doctorDO){
                    if (2==doctorDO.getLevel()) {//社工
                        fliter += " and EXISTS( SELECT 1 " +
                                " from  base_service_package_sign_record sr,base_service_package_record r,base_team_member m  " +
                                " WHERE ord.patient = CONVERT(sr.patient USING utf8) 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' ) ";
                    }
                    if (4==doctorDO.getLevel()){//助老员
                        fliter+= " and EXISTS (" +
                                "SELECT 1 from base_patient_helper ph INNER JOIN base_patient p on ph.patient = p.id and p.del=1 " +
                                " where ord.patient = ph.patient and ph.doctor='"+doctor+"' and ph.del=1) ";
                    }
                    fliter += " and EXISTS (select 1 from wlyy_patient_device pd INNER JOIN dm_device dd on pd.device_id = dd.id  " +
                            " where  pd.user = p.id and pd.del=0 and pd.category_code in (" + categoryCode + ") and FIND_IN_SET('" + topicItem + "',dd.service_topic)) ";
                }
                if ("preventLost".equals(topicItem)) {//有绑定围栏的居民
                    fliter += " and EXISTS (select 1 from wlyy_patient_safe_area sf where sf.patient = p.id and sf.del=1 and sf.manage_status=1) ";
                }
@ -730,10 +738,20 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
        } else {
            if (StringUtils.isNotBlank(doctor)) {
                fliter += " and  EXISTS ( SELECT 1 from base_service_package_sign_record sr,base_service_package_record r, base_service_package_item i ," +
                        "base_team_member m " +
                        "where ord.patient = CONVERT(sr.patient USING utf8) and  sr.id = r.sign_id and sr.status=1 and " +
                        " r.service_package_id = i.service_package_id and  m.team_code = r.team_code  and i.del = 1 and sr.`status`=1  and m.doctor_code = '" + doctor + "' and m.del = '1') ";
                BaseDoctorDO doctorDO = baseDoctorDao.findById(doctor);
                if (null!=doctorDO) {
                    if (2 == doctorDO.getLevel()){//社工
                        fliter += " and  EXISTS ( SELECT 1 from base_service_package_sign_record sr,base_service_package_record r, base_service_package_item i ," +
                                "base_team_member m " +
                                "where ord.patient = CONVERT(sr.patient USING utf8) and  sr.id = r.sign_id and sr.status=1 and " +
                                " r.service_package_id = i.service_package_id and  m.team_code = r.team_code  and i.del = 1 and sr.`status`=1  and m.doctor_code = '" + doctor + "' and m.del = '1') ";
                    }
                    if (4==doctorDO.getLevel()){//助老员
                        fliter+= " and EXISTS (" +
                                "SELECT 1 from base_patient_helper ph INNER JOIN base_patient p on ph.patient = p.id and p.del=1 " +
                                " where ord.patient = ph.patient and ph.doctor='"+doctor+"' and ph.del=1) ";
                    }
                }
            }
        }
@ -866,13 +884,22 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
                    break;
            }
            if (StringUtils.isNotBlank(doctor)) {//日常监护医生必传
                fliter += " and EXISTS( SELECT 1" +
                        " from base_service_package_sign_record sr,base_service_package_record r,base_team_member m  " +
                        " WHERE ord.patient = CONVERT(sr.patient USING utf8) and sr.status=1 and m.team_code = r.team_code and sr.id=r.sign_id  " +
                        " and m.doctor_code = '" + doctor + "' and m.del = '1' ) ";
                fliter += " and EXISTS (select 1 from wlyy_patient_device pd INNER JOIN dm_device dd on pd.device_id = dd.id  " +
                        " where  pd.user = p.id and pd.del=0 and pd.category_code in (" + categoryCode + ") and FIND_IN_SET('" + topicItem + "',dd.service_topic)) ";
                BaseDoctorDO doctorDO = baseDoctorDao.findById(doctor);
                if (null!=doctorDO) {
                    if (2==doctorDO.getLevel()){//社工
                        fliter += " and EXISTS( SELECT 1" +
                                " from base_service_package_sign_record sr,base_service_package_record r,base_team_member m  " +
                                " WHERE ord.patient = CONVERT(sr.patient USING utf8) 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' ) ";
                    }
                    if (4==doctorDO.getLevel()){//助老员
                        fliter+= " and EXISTS (" +
                                "SELECT 1 from base_patient_helper ph INNER JOIN base_patient p on ph.patient = p.id and p.del=1 " +
                                " where ord.patient = ph.patient and ph.doctor='"+doctor+"' and ph.del=1) ";
                    }
                    fliter += " and EXISTS (select 1 from wlyy_patient_device pd INNER JOIN dm_device dd on pd.device_id = dd.id  " +
                            " where  pd.user = p.id and pd.del=0 and pd.category_code in (" + categoryCode + ") and FIND_IN_SET('" + topicItem + "',dd.service_topic)) ";
                }
                if ("preventLost".equals(topicItem)) {//有绑定围栏的居民
                    fliter += " and EXISTS (select 1 from wlyy_patient_safe_area sf where sf.patient = p.id and sf.del=1 and sf.manage_status=1) ";
@ -880,10 +907,20 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
            }
        } else {
            if (StringUtils.isNotBlank(doctor)) {
                fliter += " and  EXISTS ( SELECT 1 from base_service_package_sign_record sr,base_service_package_record r, base_service_package_item i ," +
                        "base_team_member m " +
                        "where ord.patient = CONVERT(sr.patient USING utf8) and  sr.id = r.sign_id and sr.status=1 and " +
                        " r.service_package_id = i.service_package_id and  m.team_code = r.team_code  and i.del = 1 and sr.`status`=1  and m.doctor_code = '" + doctor + "' and m.del = '1') ";
                BaseDoctorDO doctorDO = baseDoctorDao.findById(doctor);
                if (null!=doctorDO){
                    if (2==doctorDO.getLevel()){//社工
                        fliter += " and  EXISTS ( SELECT 1 from base_service_package_sign_record sr,base_service_package_record r, base_service_package_item i ," +
                                "base_team_member m " +
                                "where ord.patient = CONVERT(sr.patient USING utf8) and  sr.id = r.sign_id and sr.status=1 and " +
                                " r.service_package_id = i.service_package_id and  m.team_code = r.team_code  and i.del = 1 and sr.`status`=1  and m.doctor_code = '" + doctor + "' and m.del = '1') ";
                    }
                    if (4==doctorDO.getLevel()){//助老员
                        fliter+= " and EXISTS (" +
                                "SELECT 1 from base_patient_helper ph INNER JOIN base_patient p on ph.patient = p.id and p.del=1 " +
                                " where ord.patient = ph.patient and ph.doctor='"+doctor+"' and ph.del=1) ";
                    }
                }
            }
        }
        if (StringUtils.isNotBlank(patient)) {

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

@ -105,7 +105,7 @@ public class ArchiveService extends BaseJpaService<ArchiveDO, ArchiveDao> {
        if (signStatus!=null&&signStatus==1){//已签约不按建档查询,只要该居民服务医生就在列表中
            filters+=" UNION " +
                    " SELECT a.create_time,p.openid,p.pad_imei padImei,p.idcard,p.mobile,p.name,p.sex,p.id,p.photo,CAST(a.sign_status AS char) sign_status \n" +
                    "from wlyy_archive a,base_patient p WHERE  a.patient = p.id and a.sign_status = 1 and EXISTS( " +
                    "from wlyy_archive a,base_patient p WHERE  a.patient = p.id and a.sign_status = 1 and p.del=1 and EXISTS( " +
                    "SELECT DISTINCT sr.patient from base_service_package_sign_record sr,base_service_package_record r, " +
                    "base_service_package_item i,base_team_member m " +
                    "WHERE  sr.id = r.sign_id and sr.patient = a.patient and sr.status=1 and r.service_package_id = i.service_package_id " +
@ -206,4 +206,89 @@ public class ArchiveService extends BaseJpaService<ArchiveDO, ArchiveDao> {
    }
    /************************************助老员部分************************************************************/
    /**
     *助老员获取监护居民列表
     */
    public PageEnvelop<List<Map<String,Object>>> helperArchiveList(String doctorId,String admin,int page, int size,String name){
        String sql = " SELECT ph.create_time,p.openid,p.pad_imei padImei,p.idcard,p.mobile,p.name,p.sex,p.id,p.photo,'1' sign_status ";
        String countSql = "SELECT count(distinct p.id)  ";
        String filters = " from base_patient p INNER JOIN base_patient_helper ph on p.id = ph.patient where ph.del=1 ";
        if (StringUtils.isNotBlank(admin)){//管理员展示所有档案
        }else if(StringUtils.isNotBlank(doctorId)){
            filters += " and ph.doctor='"+doctorId+"' ";
        }
        if(StringUtils.isNotBlank(name)){
            filters += " and p.name like '%"+name+"%' ";
        }
        filters+= " GROUP BY p.id ";
        String orderBy = "  ORDER BY ph.create_time DESC " +
                "LIMIT "+ (page - 1) * size + "," + size;
        List<Map<String,Object>> list = jdbcTemplate.queryForList(sql+filters+orderBy);
        for (Map<String,Object> map :list){
            String idcard = map.get("idcard").toString();
            String patientId = map.get("id").toString();
            String sign_status = map.get("sign_status").toString();
            map.put("createTime", map.get("create_time").toString().substring(0,19));
            map.put("age", IdCardUtil.getAgeForIdcard(idcard));
            if("1".endsWith(sign_status)){
                map.put("servicePackageList",servicePackageService.getServicePackageListByPatient(patientId,null));
            }
            map.put("deviceType",deviceService.getPatientDeviceCategoryCode(map.get("id").toString()));
            List<Map<String,Object>> doctorList = servicePackageService.getServerDoctorAll(map.get("id").toString(),"0","1");
            List<Map<String,Object>> helperList = servicePackageService.getServerDoctorAll(map.get("id").toString(),"0","2");
            map.put("helper", helperList.size()>0?1:0);
            map.put("doctor", doctorList.size()>0?1:0);
        }
        Long count = jdbcTemplate.queryForObject(countSql+filters,Long.class);
        return PageEnvelop.getSuccessListWithPage("success",list,page,size,count);
    }
    public PageEnvelop<List<Map<String,Object>>> helperArchiveList(String doctorId,String hospital, int page, int size,Integer signStatus,String name){
        BaseDoctorDO doctorDO = doctorDao.findById(doctorId);
        if (null==doctorDO){
            return null;
        }
        if (4!=doctorDO.getLevel()){
            return null;
        }
        String countSql = " select count(distinct p.id)  ";
        String  sql = " SELECT a.create_time,p.openid,p.pad_imei padImei,p.idcard,p.mobile,p.name,p.sex,p.id,p.photo,CAST(a.sign_status AS char) sign_status  " ;
        String filter = "from wlyy_archive a,base_patient p WHERE  a.patient = p.id and a.sign_status = 1 and p.del=1 and EXISTS( " +
                    "SELECT DISTINCT sr.patient from base_service_package_sign_record sr,base_service_package_record r, " +
                    "base_service_package_item i,base_team_member m " +
                    "WHERE  sr.id = r.sign_id and sr.patient = a.patient and sr.status=1 and r.service_package_id = i.service_package_id " +
                    "and i.del = 1 and m.team_code = r.team_code " ;
        if (StringUtils.isNotBlank(hospital)){//
            filter += " and m.org_code='"+hospital+"'   ";
        }
        if(StringUtils.isNotBlank(name)){
            filter += " and p.name like '%"+name+"%'";
        }
        filter+= " and m.del = '1' and sr.`status`=1 ) ";
        sql= sql+filter+ " group by p.id   "+"LIMIT "+ (page - 1) * size + "," + size ;
        List<Map<String,Object>> list = jdbcTemplate.queryForList(sql);
        for (Map<String,Object> map :list){
            String idcard = map.get("idcard").toString();
            String patientId = map.get("id").toString();
            String sign_status = map.get("sign_status").toString();
            map.put("createTime", map.get("create_time").toString().substring(0,19));
            map.put("age", IdCardUtil.getAgeForIdcard(idcard));
            if("1".endsWith(sign_status)){
                map.put("servicePackageList",servicePackageService.getServicePackageListByPatient(patientId,null));
            }
            map.put("deviceType",deviceService.getPatientDeviceCategoryCode(map.get("id").toString()));
            List<Map<String,Object>> doctorList = servicePackageService.getServerDoctorAll(map.get("id").toString(),"0","1");
            List<Map<String,Object>> helperList = servicePackageService.getServerDoctorAll(map.get("id").toString(),"0","2");
            map.put("helper", helperList.size()>0?1:0);
            map.put("doctor", doctorList.size()>0?1:0);
        }
        Long count = jdbcTemplate.queryForObject(countSql+filter,Long.class);
        return PageEnvelop.getSuccessListWithPage("success",list,page,size,count);
    }
}

+ 28 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/sign/CapacityAssessmentRecordService.java

@ -604,4 +604,32 @@ public class CapacityAssessmentRecordService extends BaseJpaService<CapacityAsse
       }
       return result;
    }
    /**********************************************助老员部分********************************************************************/
    /**
     * 获取居民统计
     * @param doctorId
     * @return
     */
    public Map<String,Object> getHelperPatientNum(String doctorId){
        Map<String,Object> res = new HashedMap();
        //能力完好(0级) 轻度失能(1级) 中度失能(2级) 重度失能(3级) 新生儿 10
        res.put("0",0);
        res.put("1",0);
        res.put("2",0);
        res.put("3",0);
        String sql = " SELECT COUNT(DISTINCT A.patient) count,A.level_conclusion \n" +
                " from ( select ar.patient,ar.label_code as level_conclusion from  wlyy_patient_label ar, " +
                "  base_patient_helper ph where  ar.patient = ph.patient and  ph.doctor='"+doctorId+"' and ph.del=1  " +
                " GROUP BY ar.patient ORDER BY ar.czrq desc)A " +
                " GROUP BY a.level_conclusion " ;
        List<Map<String,Object>> countMapList = jdbcTemplate.queryForList(sql);
        for(Map<String,Object> map:countMapList){
            int c = Integer.valueOf(map.get("count").toString());
            res.put(String.valueOf(map.get("level_conclusion")),c);
        }
        return res;
    }
}

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

@ -12,10 +12,7 @@ import com.yihu.jw.doctor.dao.BaseDoctorDao;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
import com.yihu.jw.entity.base.org.BaseOrgDO;
import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.entity.base.servicePackage.ServicePackageDO;
import com.yihu.jw.entity.base.servicePackage.ServicePackageItemDO;
import com.yihu.jw.entity.base.servicePackage.ServicePackageRecordDO;
import com.yihu.jw.entity.base.servicePackage.ServicePackageSignRecordDO;
import com.yihu.jw.entity.base.servicePackage.*;
import com.yihu.jw.entity.care.apply.PatientBedApplyDo;
import com.yihu.jw.entity.care.archive.ArchiveDO;
import com.yihu.jw.entity.care.label.WlyyPatientLabelDO;
@ -84,6 +81,8 @@ public class ServicePackageService extends BaseJpaService<ServicePackageDO, Serv
    private DictService dictService;
    @Autowired
    private DeviceService deviceService;
    @Autowired
    private BasePatientHelperDao patientHelperDao;
    public void addPatientSignList(){
@ -218,7 +217,6 @@ public class ServicePackageService extends BaseJpaService<ServicePackageDO, Serv
        if (StringUtils.isNotBlank(name)){
            sql += " and o.name like '%"+name+"%' ";
        }
        //type =4 新生儿
        List<BaseOrgDO> list = jdbcTemplate.query(sql,new BeanPropertyRowMapper(BaseOrgDO.class));
        return list;
@ -294,7 +292,7 @@ public class ServicePackageService extends BaseJpaService<ServicePackageDO, Serv
    }
    /**
     * 根据签约记录查找医生/助老员
     * 根据签约记录查找医生/社工
     * @param signId
     */
    public List<Map<String,Object>> fingdDoctorBySignId(String signId,Integer level){
@ -395,7 +393,7 @@ public class ServicePackageService extends BaseJpaService<ServicePackageDO, Serv
    }
    /**
     * 获取医生签约总数
     * 获取社工签约总数
     * @param doctorId
     * @return
     */
@ -664,8 +662,8 @@ public class ServicePackageService extends BaseJpaService<ServicePackageDO, Serv
    }
    public List<Map<String,Object>> getServerDoctorAll(String patient,String onlineFlag,String doctorLevel){
        String sql="SELECT DISTINCT doc.id doctor,doc.name as doctorName,CONCAT(doc.`name`,CASE WHEN doc.doctor_level=1 " +
                " THEN '(社区医生)' ELSE '(社工)' END) as name,doc.photo,doc.mobile,doc.job_title_name as jobName,doc.job_title_code as job, " +
        String sql="SELECT DISTINCT doc.id doctor,doc.name as doctorName,doc.sex,CONCAT(doc.`name`,CASE WHEN doc.doctor_level=1 " +
                " THEN '(社区医生)' ELSE '(社工)' END) as name,doc.photo,doc.doctor_level as level,doc.mobile,doc.job_title_name as jobName,doc.job_title_code as job, " +
                " 0 as onLineFlag,org.code,org.name as orgName ,doc.doctor_level doctorLevel " +
                "from base_service_package_sign_record sr,base_service_package_record r,base_team_member m,base_doctor doc, " +
                "base_service_package pack,base_org org " +
@ -744,7 +742,7 @@ public class ServicePackageService extends BaseJpaService<ServicePackageDO, Serv
                " base_service_package p " +
                "WHERE " +
                " sr.id = r.sign_id and r.service_package_id = p.id " +
                "AND sr.patient = '"+patient+"' ORDER BY sr.create_time desc";
                "AND sr.patient = '"+patient+"' ORDER BY sr.create_time,p.id desc";
        List<Map<String,Object>> list = jdbcTemplate.queryForList(sql);
        String doctorSql = "SELECT d.name from base_team_member t,base_doctor d WHERE t.team_code = ? and t.doctor_code = d.id and d.del = 1 and t.del =1";
        for(Map<String,Object> map:list){
@ -830,7 +828,7 @@ public class ServicePackageService extends BaseJpaService<ServicePackageDO, Serv
            filters += " and (p.name like '%"+name+"%' or p.idcard like '%"+name+"%') ";
        }
        filters += paitentFilter;
        String orderBy = " ORDER BY sr.create_time DESC " +
        String orderBy = " ORDER BY sr.create_time,p.id DESC " +
                "LIMIT "+ (page - 1) * size + "," + size;
        List<Map<String,Object>> list = jdbcTemplate.queryForList(sql+filters+orderBy);
        for (Map<String,Object> map : list){
@ -846,4 +844,97 @@ public class ServicePackageService extends BaseJpaService<ServicePackageDO, Serv
        Long count = jdbcTemplate.queryForObject(countSql+filters,Long.class);
        return PageEnvelop.getSuccessListWithPage("success",list,page,size,count);
    }
    /****************************************助老员部分***************************************************************/
    /**
     *助老员添加监护角色
     */
    public JSONObject helperAddPatient(String patient,String doctor){
        JSONObject result = new JSONObject();
        BasePatientHelperDO patientHelperDO =  patientHelperDao.findByPatientAndDoctor(patient,doctor);
        if (null!=patientHelperDO){
            result.put(ResponseContant.resultFlag,-1);
            result.put(ResponseContant.resultMsg,"居民已存在,无需重复添加");
            return result;
        }
        BasePatientDO patientDO = patientDao.findById(patient);
        if (null==patientDO){
            result.put(ResponseContant.resultFlag,-1);
            result.put(ResponseContant.resultMsg,"添加居民不存在,无法操作");
            return result;
        }
        BaseDoctorDO doctorDO = doctorDao.findById(doctor);
        if (null==doctorDO){
            result.put(ResponseContant.resultFlag,-1);
            result.put(ResponseContant.resultMsg,"助老员不存在,无法操作");
            return result;
        }
        //只有存在签约的居民才可被助老员关联
        String sql = " SELECT count(DISTINCT p.id)  " +
                "from wlyy_archive a,base_patient p WHERE  a.patient = p.id and a.sign_status = 1 and EXISTS(  " +
                "SELECT DISTINCT sr.patient from base_service_package_sign_record sr,base_service_package_record r,  " +
                "base_service_package_item i,base_team_member m  " +
                "WHERE  sr.id = r.sign_id and sr.patient = a.patient 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='"+patient+"' ) ";
        Integer signFlag = jdbcTemplate.queryForObject(sql,Integer.class);
        if (signFlag==0){
            result.put(ResponseContant.resultFlag,-1);
            result.put(ResponseContant.resultMsg,"当前居民未与社工签约,无法添加");
            return result;
        }
        patientHelperDO = new BasePatientHelperDO();
        patientHelperDO.setPatient(patient);
        patientHelperDO.setPatientName(patientDO.getName());
        patientHelperDO.setDoctor(doctor);
        patientHelperDO.setDoctorName(doctorDO.getName());
        patientHelperDO.setCreateTime(new Date());
        patientHelperDO.setCreateUser(doctor);
        patientHelperDO.setDel("1");
        patientHelperDO.setCreateUserName(doctorDO.getName());
        patientHelperDao.save(patientHelperDO);
        result.put(ResponseContant.resultFlag,200);
        result.put(ResponseContant.resultMsg,"添加成功");
        return result;
    }
    /**
     * 助老员删除监护老人
     */
    public JSONObject helperDelPatient(String patient,String doctor){
        JSONObject result = new JSONObject();
        BasePatientHelperDO patientHelperDO =  patientHelperDao.findByPatientAndDoctor(patient,doctor);
        if (null==patientHelperDO){
            result.put(ResponseContant.resultFlag,-1);
            result.put(ResponseContant.resultMsg,"居民已不在你的列表中");
            return result;
        }
        BaseDoctorDO doctorDO = doctorDao.findById(doctor);
        if (null==doctorDO){
            result.put(ResponseContant.resultFlag,-1);
            result.put(ResponseContant.resultMsg,"助老员不存在,无法操作");
            return result;
        }
        patientHelperDO.setDel("0");
        patientHelperDO.setUpdateTime(new Date());
        patientHelperDO.setUpdateUser(doctorDO.getId());
        patientHelperDO.setUpdateUserName(doctorDO.getName());
        result.put(ResponseContant.resultFlag,200);
        result.put(ResponseContant.resultMsg,"删除成功");
        return result;
    }
    /**********************************助老员部分******************************************************/
    /**
     * 根据居民和服务项查找医生
     * @param patientId
     */
    public List<Map<String,Object>> findHelperByPatientId(String patientId){
        String sql = " select distinct doc.id,doc.name from base_patient_helper ph INNER JOIN base_doctor doc " +
                " on ph.doctor = doc.id where ph.del=1 and ph.patient='"+patientId+"' and doc.del=1 " ;
        return jdbcTemplate.queryForList(sql);
    }
}

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

@ -138,7 +138,7 @@ public class StatisticsService {
            filter2 = " and org_code not in ('" + orgCodes + "') ";
        }
        String emergencyCallSql = "SELECT COUNT(1) FROM base_emergency_assistance_order WHERE status >= 0 " + filter2;
        String emergencyCallSql = "SELECT COUNT(1) FROM base_emergency_assistance_order WHERE status <> -1 " + filter2;
        Integer emergencyCallNum = jdbcTemplate.queryForObject(emergencyCallSql, Integer.class);
        String securityMonitoringSql = "SELECT COUNT(1) FROM base_security_monitoring_order where 1=1 " + filter;
        Integer securityMonitoringNum = jdbcTemplate.queryForObject(securityMonitoringSql, Integer.class);
@ -288,7 +288,7 @@ public class StatisticsService {
                filter2 = " and org_code not in ('" + orgCodes + "') ";
            }
            String emergencyCallSql = "SELECT COUNT(1) FROM base_emergency_assistance_order WHERE status >= 0 "+filter2;
            String emergencyCallSql = "SELECT COUNT(1) FROM base_emergency_assistance_order WHERE status <> -1 "+filter2;
            Integer emergencyCallNum = jdbcTemplate.queryForObject(emergencyCallSql, Integer.class);
            String securityMonitoringSql = "SELECT COUNT(1) FROM base_security_monitoring_order where 1=1 "+filter;
            Integer securityMonitoringNum = jdbcTemplate.queryForObject(securityMonitoringSql, Integer.class);
@ -337,7 +337,7 @@ public class StatisticsService {
        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;
@ -368,7 +368,7 @@ public class StatisticsService {
        res.put("elderlyCarServiceNum", elderlyCarServiceNum);               //养老机构
        res.put("childcareInstitutionsssNum", childcareInstitutionsssNum);   //托育机构
        res.put("doctorNum", doctorNum);     //医生
        res.put("helperNum", helperNum);     //助老员
        res.put("helperNum", helperNum);     //社工
        res.put("teacherNum", teacherNum);   //教师
        return res;
    }
@ -420,7 +420,7 @@ public class StatisticsService {
            filter = " and hospital not in ('" + orgCodes + "') ";
            filter2 = " and org_code not in ('" + orgCodes + "') ";
        }
        String emergencyCallSql = "SELECT COUNT(1) FROM base_emergency_assistance_order WHERE status >= 0" + filter2;
        String emergencyCallSql = "SELECT COUNT(1) FROM base_emergency_assistance_order WHERE status <> -1 " + filter2;
        Integer emergencyCallNum = jdbcTemplate.queryForObject(emergencyCallSql, Integer.class);
        String securityMonitoringSql = "SELECT COUNT(1) FROM base_security_monitoring_order where 1=1 " + filter;
        Integer securityMonitoringNum = jdbcTemplate.queryForObject(securityMonitoringSql, Integer.class);
@ -707,7 +707,7 @@ public class StatisticsService {
        olderTotal = olderOff + olderOn;
        childTotal = childOff + childOn;
        //助老员和教师注册人数
        //社工和教师注册人数
        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'  " +
@ -765,7 +765,7 @@ public class StatisticsService {
        olderFamilyBinding = jdbcTemplate.queryForObject(sql2,Integer.class);
        //helper 助老员,teacher 教师,child 幼儿,olderWx 老人公众号,olderPad 老人平板
        //helper 社工,teacher 教师,child 幼儿,olderWx 老人公众号,olderPad 老人平板
        result.put("olderTotal", olderTotal);
        result.put("childTotal", childTotal);
        result.put("helperTotal", helperTotal);

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

@ -163,7 +163,7 @@ public class BaseVisitService {
     * @param id
     * @return
     */
    public String completeVisit(String id,String visitContent,String visitImg){
    public String completeVisit(String id,String visitContent,String visitImg,String deviceMaintenance,String health,String lifeConsult){
        BaseVisitDO visitDO = baseVisitDao.findOne(id);
        if("1".equals(visitDO.getStatus())){
            return "走访已完成,请勿重复操作";
@ -172,6 +172,9 @@ public class BaseVisitService {
        visitDO.setStatus("1");
        visitDO.setVisitContent(visitContent);
        visitDO.setVisitImg(visitImg);
        visitDO.setDeviceMaintenance(deviceMaintenance);
        visitDO.setHealth(health);
        visitDO.setLifeConsult(visitImg);
        baseVisitDao.save(visitDO);
        return null;
    }

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

@ -279,6 +279,9 @@ public class MessageUtil {
            case 36://安防、救助工单详情地址
                wxTemplateConfigDO.setUrl(wxTemplateConfigDO.getUrl()+"?openid=" + openid+"&id="+json.getString("id")+"&OrderType="+json.getString("OrderType"));
                break;
            case 37://居民血压血糖列表详情
                wxTemplateConfigDO.setUrl(wxTemplateConfigDO.getUrl()+"?openid=" + openid+"&patientId="+json.getString("patientId")+"&type="+json.getString("type"));
                break;
        }
        return wxTemplateConfigDO;
    }

+ 6 - 0
svr/svr-cloud-device/pom.xml

@ -144,6 +144,12 @@
            <version>2.7.3</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>com.yihu.jw</groupId>
            <artifactId>push-service</artifactId>
            <version>2.0.0</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>

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

@ -6,9 +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.DeviceDataPushLogUtil;
import com.yihu.jw.care.util.DeviceLostMessageUtil;
import com.yihu.jw.care.util.SecurityOrderUtil;
import com.yihu.jw.care.util.*;
import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.entity.care.device.*;
import com.yihu.jw.entity.hospital.message.SystemMessageDO;
@ -103,6 +101,14 @@ public class DeviceService {
    private BasePatientStepDao stepDao;
    @Autowired
    private BaseSleepX1deviceDao baseSleepX1deviceDao;
    @Autowired
    private CountDistance countDistance;
    @Autowired
    private MessageUtil messageUtil;
    @Value("${wechat.id}")
    private String wxId;
    @Autowired
    private PatientFamilyService patientFamilyService;
    /**
     * 获取爱牵挂管理员cookie
@ -376,6 +382,40 @@ public class DeviceService {
                    BasePatientDO patientDO = patientDao.findById(deviceDO.getUser());
                    JSONObject position = gpsUtil.gcj02_To_Bd09(lat,lon);
                    patientDO.setLatLon(position.getDouble("lat")+","+position.getDouble("lon"));
                    if (StringUtils.isNotBlank(patientDO.getHomeLatLon())){
                        String homeLatLon = patientDO.getHomeLatLon();
                        double homeLat = Double.parseDouble(homeLatLon.split(",")[0]);
                        double homeLon = Double.parseDouble(homeLatLon.split(",")[1]);
                        double homeDistance = countDistance.getDistance(homeLat,homeLon,position.getDouble("lat"), position.getDouble("lon"));
                        Integer homeStateNow = 0;
                        String first = "";
                        String keyword2="";
                        String keyword3="";
                        if (homeDistance * 1000 > 50) {
                            homeStateNow=0;
                            first=patientDO.getName()+"已离家";
                            keyword2="【离家提醒】";
                            keyword3 = patientDO.getName()+"已离家,请及时跟进";
                        } else {
                            homeStateNow=1;
                            first=patientDO.getName()+"已到家";
                            keyword2="【到家提醒】";
                            keyword3 = patientDO.getName()+"已到家,请知悉";
                        }
                        if (null!=patientDO.getHomeState()){
                            if (homeStateNow!=patientDO.getHomeState()){//居民离家/回家
                                List<Map<String,Object>> families = patientFamilyService.getPatientFamilyList(patientDO.getId(),"3");
                                for (Map<String,Object>tmp:families){
                                    if (null!=tmp.get("openid")){
                                        if (StringUtils.isNotBlank(tmp.get("openid").toString())){
                                            boolean success = messageUtil.putTemplateWxMessage(wxId,"template_error_notice","lrjjztgxtz",tmp.get("openid").toString(),first,null,null,null,null,DateUtil.getStringDate(),keyword2,keyword3);
                                        }
                                    }
                                }
                            }
                        }
                        patientDO.setHomeState(homeStateNow);
                    }
                    patientDao.save(patientDO);
                }
            }

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

@ -8,6 +8,7 @@ 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.DeviceDataPushLogUtil;
import com.yihu.jw.care.util.MessageUtil;
import com.yihu.jw.care.util.SecurityOrderUtil;
import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.entity.care.device.*;
@ -25,6 +26,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.beans.factory.annotation.Value;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
@ -76,6 +78,12 @@ public class DeviceUploadService {
    private PatientSafeAreaDao safeAreaDao;
    @Autowired
    private DeviceDataPushLogUtil dataPushLogUtil;
    @Autowired
    private MessageUtil messageUtil;
    @Value("${wechat.id}")
    private String wxId;
    @Autowired
    private PatientFamilyService patientFamilyService;
    public Result uploadDevicesData(String dataJson, HttpServletRequest request)throws Exception {
        try {
@ -199,6 +207,47 @@ public class DeviceUploadService {
                    patientHealthIndexDao.save(result);
                    systemMessageDao.save(messageDO);
                    imUtil.sendPatientSystemMessage(messageDO.getReceiver(),JSON.toJSONString(message,SerializerFeature.WriteMapNullValue));
                    //发送模板消息通知家属
                    List<Map<String,Object>> families = patientFamilyService.getPatientFamilyList(patientDO.getId(),"3");
                    if (families.size()>0){
                        String keyword1 = "";
                        String first ="";
                        com.alibaba.fastjson.JSONObject jsonObject = new com.alibaba.fastjson.JSONObject();
                        jsonObject.put("patientId",patientDO.getId());
                        jsonObject.put("type",result.getType()+"");
                        if ("1".equals(result.getType())){//血糖
                            first = patientDO.getName()+"最新测量血糖值反馈";
                            keyword1 = "【{key1}:"+result.getValue1()+"mmol/L】";
                            String value2 = null==result.getValue2()?"1":result.getValue2();
                            switch (value2){
                                case "1":keyword1 = keyword1.replace("{key1}","早餐前血糖"); break;
                                case "2":keyword1 = keyword1.replace("{key1}","早餐后血糖"); break;
                                case "3":keyword1 = keyword1.replace("{key1}","午餐前血糖"); break;
                                case "4":keyword1 = keyword1.replace("{key1}","午餐后血糖"); break;
                                case "5":keyword1 = keyword1.replace("{key1}","晚餐前血糖"); break;
                                case "6":keyword1 = keyword1.replace("{key1}","晚餐后血糖"); break;
                                case "7":keyword1 = keyword1.replace("{key1}","睡前血糖"); break;
                            }
                            for (Map<String,Object>tmp:families){
                                if (null!=tmp.get("openid")){
                                    if (org.apache.commons.lang.StringUtils.isNotBlank(tmp.get("openid").toString())){
                                        boolean success = messageUtil.putTemplateWxMessage(wxId,"template_measure_result_notice","jktzcljgtz",patientDO.getOpenid(),first,null,null,37,jsonObject,keyword1,"请注意日常饮食");
                                    }
                                }
                            }
                        }
                        if ("2".equals(result.getType())){//血压
                            first= patientDO.getName()+" 最新测量血压值反馈";
                            keyword1 = "【收缩压:"+result.getValue1()+"mmgh 舒张压:"+result.getValue2()+"mmgh】";
                            for (Map<String,Object>tmp:families){
                                if (null!=tmp.get("openid")){
                                    if (org.apache.commons.lang.StringUtils.isNotBlank(tmp.get("openid").toString())){
                                        boolean success = messageUtil.putTemplateWxMessage(wxId,"template_measure_result_notice","jktzcljgtz",patientDO.getOpenid(),first,null,null,37,jsonObject,keyword1,"请注意日常饮食");
                                    }
                                }
                            }
                        }
                    }
                }
            }
        } catch (Exception e) {

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

@ -0,0 +1,32 @@
package com.yihu.jw.care.service;
import org.apache.commons.lang3.StringUtils;
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;
/**
 * Created by Bing on 2022/3/10.
 */
@Service
public class PatientFamilyService {
    @Autowired
    private JdbcTemplate jdbcTemplate;
    public List<Map<String,Object>> getPatientFamilyList(String patient,String archive_type){
        String sql = "select t2.* " +
                "from base_patient t2 INNER JOIN base_patient_family_member t1 on t1.family_member = t2.id " +
                "where t1.patient = ? and t2.del=1  ";
        if (StringUtils.isNotBlank(archive_type)){
            sql += " and t2.archive_type in ('"+archive_type.replace(",","','")+"') ";
        }
        sql += " group by t2.id ";
        List<Map<String, Object>> result = jdbcTemplate.queryForList(sql, new Object[]{patient});
        return result;
    }
}

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

@ -0,0 +1,455 @@
package com.yihu.jw.care.util;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.doctor.dao.BaseDoctorDao;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
import com.yihu.jw.entity.base.org.BaseOrgDO;
import com.yihu.jw.entity.base.wx.WxAccessTokenDO;
import com.yihu.jw.entity.base.wx.WxTemplateConfigDO;
import com.yihu.jw.entity.care.common.GetuiClientDO;
import com.yihu.jw.entity.care.doorCoach.BaseDoorCoachOrderDO;
import com.yihu.jw.entity.care.lifeCare.LifeCareOrderDO;
import com.yihu.jw.entity.care.securitymonitoring.SecurityMonitoringOrderDO;
import com.yihu.jw.entity.hospital.message.SystemMessageDO;
import com.yihu.jw.hospital.message.dao.SystemMessageDao;
import com.yihu.jw.org.dao.BaseOrgDao;
import com.yihu.jw.patient.dao.BasePatientDao;
import com.yihu.jw.push.dao.GetuiClientDao;
import com.yihu.jw.push.service.GetuiService;
import com.yihu.jw.sms.service.TXYSmsService;
import com.yihu.jw.util.wechat.WeixinMessagePushUtils;
import com.yihu.jw.wechat.dao.WxAccessTokenDao;
import com.yihu.jw.wechat.dao.WxTemplateConfigDao;
import com.yihu.jw.wechat.service.WxAccessTokenService;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import java.util.Date;
import java.util.List;
import java.util.UUID;
/**
 * Created by liub on 2020/12/28.
 */
@Component
public class MessageUtil {
    private static Logger logger = LoggerFactory.getLogger(MessageUtil.class);
    @Autowired
    private WxAccessTokenService wxAccessTokenService;
    @Value("${hospital.url}")
    private String serverUrl;
    @Autowired
    private WeixinMessagePushUtils weixinMessagePushUtils;
    @Autowired
    private WxTemplateConfigDao wxTemplateConfigDao;
    @Autowired
    private JdbcTemplate jdbcTemplate;
    @Autowired
    private SystemMessageDao systemMessageDao;
    @Autowired
    private WxAccessTokenDao wxAccessTokenDao;
    @Autowired
    private BaseDoctorDao baseDoctorDao;
    @Autowired
    private BasePatientDao basePatientDao;
    @Autowired
    private BaseOrgDao orgDao;
    @Autowired
    private TXYSmsService txySmsService;
    @Autowired
    private GetuiService getuiService;
    @Autowired
    private GetuiClientDao getuiClientDao;
    /**
     * 您好{1}有一条新的在线报名申请,请及时前往APP消息应用进行处理。
     * @param orgCode
     */
    @Async
    public void sendOnlineRegistSms(String orgCode){
        BaseOrgDO orgDO = orgDao.findByCode(orgCode);
        if(StringUtils.isNotBlank(orgDO.getMobile())){
            sendTXYSJson("976005",orgDO.getMobile(),orgDO.getName());
        }
    }
    /**
     * 发送医生个推推送消息
     * type 1 安防紧急预警 2紧急呼叫 4im 5生日祝福
     */
    public void sendDoctorGetuiMessage(String doctorCode,String type,String url,String title,String body){
        try {
            List<GetuiClientDO> clientDOS = getuiClientDao.findByUser(doctorCode,2);
            JSONObject payload = new JSONObject();
            payload.put("title",title);
            payload.put("body",body);
            payload.put("url",url);
            JSONObject json = new JSONObject();
            json.put("title",title);
            json.put("body",body);
            json.put("url",url);
//        json.put("clickType","url");
            json.put("platform",getuiService.cloudCareDoctor);
            json.put("payload",payload.toString());
            for(GetuiClientDO clientDO:clientDOS){
                getuiService.push2(clientDO.getClientId(),Integer.valueOf(clientDO.getClientType()),json);
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }
    /**
     *
     * @param wechatId
     * @param templateName
     * @param scene
     * @param openId
     * @param first
     * @param url 跳转链接
     * @param remark
     * @param type  模板通知类型
     * @param json 用于对跳转连接的修改,
     * @param keywords
     */
    public boolean putTemplateWxMessage(String wechatId, String templateName, String scene, String openId, String first
            ,String url, String remark, Integer type,JSONObject json,String ...keywords) {
        try {
            System.out.println(wechatId);
            WxAccessTokenDO wxAccessTokenDO = wxAccessTokenService.getWxAccessTokenById(wechatId);
            if (wxAccessTokenDO == null) {
                logger.info("wx_access_token表获取为空,wechatId" + wechatId);
                return false;
            }
            WxTemplateConfigDO templateConfig = wxTemplateConfigDao.findByWechatIdAndTemplateNameAndSceneAndStatus(wechatId, templateName, scene, 1);
            WxTemplateConfigDO newConfig = new WxTemplateConfigDO();
            BeanUtils.copyProperties(templateConfig,newConfig);
            if (newConfig == null) {
                logger.info("微信模板不存在!请确认wechatId:" + wechatId + ",templateName:" + templateName + ",scene:" + scene);
                return false;
            }
            logger.info("微信模板推送前");
            if (StringUtils.isNoneBlank(first)){
                newConfig.setFirst(first);
            }
            if (StringUtils.isNoneBlank(url)){
                newConfig.setUrl(url);
            }
            if (StringUtils.isNoneBlank(remark)){
                newConfig.setRemark(remark);
            }
            newConfig = setTemPlateUrl(newConfig,type,openId,json);
            int keyLength = keywords.length;
            if (keyLength >= 1) {
               if(StringUtils.isNoneBlank(keywords[0])){
                   newConfig.setKeyword1(keywords[0]);
                }
            }
            if (keyLength >= 2) {
                if(StringUtils.isNoneBlank(keywords[1])){
                    newConfig.setKeyword2(keywords[1]);
                }
            }
            if (keyLength >= 3) {
                if(StringUtils.isNoneBlank(keywords[2])){
                    newConfig.setKeyword3(keywords[2]);
                }
            }
            if (keyLength >= 4) {
                if(StringUtils.isNoneBlank(keywords[3])){
                    newConfig.setKeyword4(keywords[3]);
                }
            }
            if (keyLength >= 5) {
                if(StringUtils.isNoneBlank(keywords[4])){
                    newConfig.setKeyword5(keywords[4]);
                }
            }
            if (keyLength >= 6) {
                if(StringUtils.isNoneBlank(keywords[5])){
                    newConfig.setKeyword6(keywords[5]);
                }
            }
            if (keyLength >= 7) {
                if(StringUtils.isNoneBlank(keywords[6])){
                    newConfig.setKeyword7(keywords[6]);
                }
            }
            //发起微信消息模板推送
            weixinMessagePushUtils.putWxMsg(wxAccessTokenDO.getAccessToken(), openId, newConfig);
            logger.info("微信模板消息推送后");
            return true;
        } catch (Exception e) {
            logger.info("微信模板推送异常");
            e.printStackTrace();
            return false;
        }
    }
    @Async
    public String sendTXYSJson(String templateCode,String mobile,String ...params){
        JSONObject sendObj = new JSONObject();
        sendObj.put("templateCode",templateCode);
        if (params.length>0){
            JSONArray paramArr =JSONArray.parseArray(JSON.toJSONString(params));
            sendObj.put("templateParamArr",paramArr);
        }else {
            JSONArray paramArr =new JSONArray();
            sendObj.put("templateParamArr",paramArr);
        }
        return txySmsService.sendMessageJson(mobile,sendObj);
    }
    public WxTemplateConfigDO setTemPlateUrl(WxTemplateConfigDO wxTemplateConfigDO,Integer type,String openid,JSONObject json){
        String url =  "taian-wx/html/";
        if (json==null){
            return wxTemplateConfigDO;
        }
        switch (type){
            case 1:
                //咨询回复
                wxTemplateConfigDO.setUrl(wxTemplateConfigDO.getUrl() + "?sessionId=" + json.getString("sessionId")
                        +"&type="+json.getString("consultType")+"&orgCode="+json.getString("orgCode")+"&openid="+openid);
                break;
            case 2:
                wxTemplateConfigDO.setUrl(wxTemplateConfigDO.getUrl() + "?openid=" + openid+"&id="+json.getString("id"));
                break;
            case 3:
                wxTemplateConfigDO.setUrl(wxTemplateConfigDO.getUrl() + "?openid=" + openid);
                break;
            case 19:
                String urlStr= wxTemplateConfigDO.getUrl();
                boolean status = urlStr.contains("openid=");
                if(!status){
                    urlStr=json.getString("url")+"?openid=" + openid;
                }
                wxTemplateConfigDO.setUrl(url + urlStr );
                break;
            case 26://生日祝福
                wxTemplateConfigDO.setUrl(wxTemplateConfigDO.getUrl()+"?openid=" + openid + "&id=" + json.getString("id"));
                break;
            case 28://视频请求
                //?channelName="'&nickName=''&token=' '
                wxTemplateConfigDO.setUrl(wxTemplateConfigDO.getUrl()+"?openid=" + openid + "&channelName=" + json.getString("channelName")
                        + "&nickName=" + json.getString("nickName")+ "&token=" + json.getString("token")
                        + "&userId=" + json.getString("userId")+ "&userName=" + json.getString("userName")
                        + "&sessionId=" + json.getString("sessionId"));
                break;
            case 30:
                //反馈通知 测试 TPbq9m0SAiVfRhXtXq17SDmYIfrJ8Whp2NpSrq9wlfI
                if(json.containsKey("consult")) {
                    wxTemplateConfigDO.setUrl(url + wxTemplateConfigDO.getUrl() + "?openid=" + openid + "&consult=" + json.getString("consult"));
                }else if (json.containsKey("id")){
                    wxTemplateConfigDO.setUrl(url + wxTemplateConfigDO.getUrl() + "?openid=" + openid + "&id=" + json.getString("id"));
                }else if(json.containsKey("relationCode")){
                    wxTemplateConfigDO.setUrl(url + wxTemplateConfigDO.getUrl() + "?openid=" + openid );
                }else if(json.containsKey("resultCode")){
                    wxTemplateConfigDO.setUrl(url + wxTemplateConfigDO.getUrl() + "?resultCode=" + json.getString("resultCode"));
                }
                break;
            case 31:
                //上门服务医生评分
                wxTemplateConfigDO.setUrl(url + wxTemplateConfigDO.getUrl()+"?openid=" + openid + "&id=" + json.getString("id")+ "&finish=" + json.getString("finish"));
                break;
            case 32:
                String url1 = "wx/common/";
                wxTemplateConfigDO.setUrl(url1 + wxTemplateConfigDO.getUrl()+"?openid=" + openid + "&consult=" + json.getString("consult") + "&status=" + json.getInteger("status"));
                break;
            case 34:
                wxTemplateConfigDO.setUrl(url + wxTemplateConfigDO.getUrl() + "?openid=" + openid + "&orderId=" + json.getString("orderId")+ "&authorizeImage=" + json.getString("authorizeImage"));
                break;
            case 35:
                wxTemplateConfigDO.setUrl(url + wxTemplateConfigDO.getUrl()+json.getString("orderId")+"&isMask=1");
                break;
            case 36://安防、救助工单详情地址
                wxTemplateConfigDO.setUrl(wxTemplateConfigDO.getUrl()+"?openid=" + openid+"&id="+json.getString("id")+"&OrderType="+json.getString("OrderType"));
                break;
            case 37://居民血压血糖列表详情
                wxTemplateConfigDO.setUrl(wxTemplateConfigDO.getUrl()+"?openid=" + openid+"&patientId="+json.getString("patientId")+"&type="+json.getString("type"));
                break;
        }
        return wxTemplateConfigDO;
    }
    /**
     *
     */
    public SystemMessageDO saveSystemMessage(String messageId, String relationCode, String title, String type, String sender, String senderName, String receiver, String receiverName, String idCard, String msg, String over) {
        SystemMessageDO messageDO = new SystemMessageDO();
        if (StringUtils.isBlank(messageId)) {
            messageDO.setId(UUID.randomUUID().toString().replace("-", ""));
        }
        messageDO.setTitle(title);
        messageDO.setType(type);
        messageDO.setSender(sender);
        messageDO.setSenderName(senderName);
        messageDO.setRelationCode(relationCode);
        messageDO.setReceiver(receiver);
        messageDO.setReceiverName(receiverName);
        messageDO.setData(msg);
        messageDO.setDel("1");
        messageDO.setOver(over);
        messageDO.setCreateTime(new Date());
        systemMessageDao.save(messageDO);
        return messageDO;
    }
    public void createMessage(String title,String type,String sender,String senderName,String relationCode,String Receiver,String ReceiverName,String idCard,String msg){
        SystemMessageDO messageDO = new SystemMessageDO();
        messageDO.setTitle(title);
        messageDO.setType(type);//401为资质申请审核
        messageDO.setSender(sender);
        messageDO.setSenderName(senderName);
        messageDO.setRelationCode(relationCode);
        messageDO.setReceiver(Receiver);
        messageDO.setReceiverName(ReceiverName);
        messageDO.setOver("1");
        messageDO.setData(msg);
        messageDO.setDel("1");
        messageDO.setCreateTime(new Date());
        systemMessageDao.save(messageDO);
    }
    public void updateLifeCareMessage(LifeCareOrderDO orderDO, String[] type, String toType){
        String orderId=orderDO.getId();
        List<SystemMessageDO> messages = systemMessageDao.queryByRelationCodeAndTypeIn(orderId,type);
        if (toType.equals("patientCancel")){//居民取消 消息列表也应该不显示
            if(CollectionUtils.isEmpty(messages)){
                logger.error("当前工单没有系统消息!!orderId:" + orderId);
            } else {
                messages.forEach(
                        message -> {
                            message.setOver("0");
                            systemMessageDao.save(message);
                        }
                );
            }
        }
    }
    public void updateSecurityMonitoringOrderMessage(SecurityMonitoringOrderDO orderDO, String[] type, String toType){
        String orderId=orderDO.getId();
        List<SystemMessageDO> messages = systemMessageDao.queryByRelationCodeAndTypeIn(orderId,type);
        if (toType.equals("patientCancel")){//居民取消 消息列表也应该不显示
            if(CollectionUtils.isEmpty(messages)){
                logger.error("当前安防工单没有系统消息!!orderId:" + orderId);
            } else {
                messages.forEach(
                        message -> {
                            message.setOver("0");
                            systemMessageDao.save(message);
                        }
                );
            }
        }
    }
    //上门辅导消息更新
    public void updateDoorCoachMessage(BaseDoorCoachOrderDO doorServiceOrder, String[] type, String toType, String sender, String receiver){
        String orderId=doorServiceOrder.getId();
        List<SystemMessageDO> messages = systemMessageDao.queryByRelationCodeAndTypeIn(orderId,type);
        if (toType.equals("734")){//医生接单
            if (CollectionUtils.isEmpty(messages)){
                logger.error("当前工单没有医生待接单消息!orderId:" + orderId);
            }else {
                messages.forEach(message->{
                    if (message.getType().equals("703") ) {
                        BaseDoctorDO baseDoctorDO = baseDoctorDao.findById(doorServiceOrder.getDispatcher());//·
                        String msg=doorServiceOrder.getDispatcherName() + "接受了服务工单"+ doorServiceOrder.getNumber();
                        saveSystemMessage(message.getId(),message.getRelationCode(),"医生接单","734",doorServiceOrder.getDoctor(),doorServiceOrder.getDoctorName(),
                                doorServiceOrder.getDispatcher(),doorServiceOrder.getDispatcherName(),null,msg,message.getOver());
                    }
                    else{
                        message.setOver("0");
                        systemMessageDao.save(message);
                    }
                });
            }
        }
        if (toType.equals("735")) {//医生拒单
            if (CollectionUtils.isEmpty(messages)) {
                logger.error("当前工单没有医生待接单消息!orderId:" + orderId);
            } else {
                SystemMessageDO message = messages.get(0);
                BaseDoctorDO baseDoctorDO = baseDoctorDao.findById(doorServiceOrder.getDispatcher());
                String msg=doorServiceOrder.getDoctorName() + "拒绝了服务工单" + doorServiceOrder.getNumber() + ", 请重新派单";
                saveSystemMessage(message.getId(),message.getRelationCode(),"医生拒单","735",doorServiceOrder.getDoctor(),doorServiceOrder.getDoctorName(),
                        doorServiceOrder.getDispatcher(),doorServiceOrder.getDispatcherName(),null,msg,message.getOver());
            }
        }
        if (toType.equals("731")) {//调度员派单(派给本社区医生)
            if(CollectionUtils.isEmpty(messages)){
                logger.error("当前工单没有 居民新增预约 消息!!orderId:" + orderId);
            }else{
                // 设置消息处理完毕
                messages.forEach(
                        message -> {
                            String title = "调度员派单(派给本社区医生)";
                            if("system".equals(doorServiceOrder.getUpdateUser())){
                                title = "系统派单(派给服务医生)";
                            }
                            if (message.getType() .equals("730")) {
                                message.setTitle(title);
                                String msg = doorServiceOrder.getDispatcherName() + "已将服务工单" + doorServiceOrder.getNumber() + "指派给" + doorServiceOrder.getDoctorName() + "医生";
                                saveSystemMessage(message.getId(),message.getRelationCode(),title,"731",doorServiceOrder.getUpdateUser(),doorServiceOrder.getUpdateUserName(),
                                        doorServiceOrder.getUpdateUser(),doorServiceOrder.getUpdateUserName(),null,msg,message.getOver());
                            }else{
                                message.setOver("0");
                                systemMessageDao.save(message);
                            }
                        }
                );
            }
        }
        if (toType.equals("732")){//调度员拒单
            if(CollectionUtils.isEmpty(messages)){
                logger.error("当前工单没有系统消息!!orderId:" + orderId);
            } else {
                // 432 调度员拒单即取消工单-- 李四拒绝了张三的服务工单12345678
                messages.forEach(
                        message -> {
                            if (message.getType() .equals("730")) {
                                String msg=doorServiceOrder.getDispatcherName() + "拒绝了"+ doorServiceOrder.getPatientName() +"的服务工单" + doorServiceOrder.getNumber();
                                saveSystemMessage(message.getId(),message.getRelationCode(),"调度员拒单","732",doorServiceOrder.getDispatcher(),doorServiceOrder.getDispatcherName(),
                                        doorServiceOrder.getDispatcher(),doorServiceOrder.getDispatcherName(),null,msg,message.getOver());
                            }else{
                                message.setOver("0");
                                systemMessageDao.save(message);
                            }
                        }
                );
            }
        }
        if (toType.equals("patientCancel")){//居民取消 消息列表也应该不显示
            if(CollectionUtils.isEmpty(messages)){
                logger.error("当前工单没有系统消息!!orderId:" + orderId);
            } else {
                messages.forEach(
                        message -> {
                            message.setOver("0");
                            systemMessageDao.save(message);
                        }
                );
            }
        }
    }
}

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

@ -316,13 +316,15 @@ hospital:
  SourceSysCode: S60
  TargetSysCode: S01
wechat:
  appId: wxd03f873d
  appSecret: 2935b54b53a950a544f2537
  wechat_token: 27eb3bb24f1bb154b08040
  wechat_base_url: http%3a%n%2fwlyy-dev
  accId: gh0fb21
  id: ijk  # base库中,wx_wechat 的id字段
  flag: false #演示环境  true走Mysql数据库  false走Oracle
  appId: wx2c55f5b7b2f3cb56
  appSecret: 0dd9927e58125ad5f0efb9299860d145
  apiKey: zhongjianxinlianxiamenkejiyouxia
  mchId: 1611059985
  wechat_token: 27eb3bb24f149a7760cf1bb154b08041
  wechat_base_url: https%3A%2F%2Fzhyzh.gongshu.gov.cn%2FcloudCare%2F
  accId: gh_da06ed9e5751
  id: hz_yyyzh_wx  # base库中,wx_wechat 的id字段
  flag: true #演示环境  true走Mysql数据库  false走Oracle
im:
  im_list_get: http://127.0.0.1:3000/

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

@ -6,6 +6,7 @@ import com.yihu.jw.care.job.consult.FinishConsultJob;
import com.yihu.jw.care.job.data.SaveDataPushJob;
import com.yihu.jw.care.job.device.DeviceLostAssociationJob;
import com.yihu.jw.care.job.device.PatientSosContactsJob;
import com.yihu.jw.care.job.device.PressureGlucoseNotJob;
import com.yihu.jw.care.job.message.DoctorSendUnreadJob;
import com.yihu.jw.care.job.message.PatientSendUnreadJob;
import com.yihu.jw.care.job.order.CancelPayOrderJob;
@ -47,7 +48,7 @@ public class ApplicationEvent implements ApplicationListener<ContextRefreshedEve
                logger.info("finish_consult_job exist");
            }
            //#每天的早上9:00,给所有医生/助老员/教师发送一条短信
            //#每天的早上9:00,给所有医生/社工/教师发送一条短信
            if (!quartzHelper.isExistJob("DOCTOR_SEND_UNREAD_MES_JOB")) {
                String trigger = SystemConf.getInstance().getSystemProperties().getProperty("DOCTOR_SEND_UNREAD_MES_JOB");
                quartzHelper.addJob(DoctorSendUnreadJob.class, trigger, "DOCTOR_SEND_UNREAD_MES_JOB", new HashMap<String, Object>());
@ -163,6 +164,15 @@ public class ApplicationEvent implements ApplicationListener<ContextRefreshedEve
                logger.info("GET_SIMS_VOICE_FLOW_MONTH_JOB success");
            }
            //#每天早上10点发送血压(1天)血糖(7天)未测量通知
            if (!quartzHelper.isExistJob("BLOOD_PRESSURE_GLUCOSE_NOT_MEASURED")){
                String trigger = SystemConf.getInstance().getSystemProperties().getProperty("BLOOD_PRESSURE_GLUCOSE_NOT_MEASURED");
                quartzHelper.addJob(PressureGlucoseNotJob.class, trigger, "BLOOD_PRESSURE_GLUCOSE_NOT_MEASURED", new HashMap<String, Object>());
                logger.info("BLOOD_PRESSURE_GLUCOSE_NOT_MEASURED success");
            }else {
                logger.info("BLOOD_PRESSURE_GLUCOSE_NOT_MEASURED success");
            }
        } catch (Exception e) {
            logger.info(" job start failed");
        }

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 196 - 26
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/job/data/SaveDataPushJob.java


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

@ -42,7 +42,11 @@ public class PatientSosContactsJob implements Job {
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        logger.info("PATIENT_SOS_CONTACTS_JOB start");
        String sql = " select pd.device_sn,pd.category_code,wd.iccid as sim,sc.* from  wlyy_patient_device pd inner join wlyy_devices wd " +
        String sql = " UPDATE base_patient_sos_contacts set success_flag=0,update_info = null,error_info=null where \n" +
                " `success_flag` <> '1' AND `del` = '1' ";
        jdbcTemplate.execute(sql);
        sql = " select pd.device_sn,pd.category_code,wd.iccid as 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 ";
@ -108,14 +112,29 @@ public class PatientSosContactsJob implements Job {
                                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 {
                        String yxResponse =  yunXunDeviceService.setSos(device_sn,phone1,phone2,phone3);
                        if (StringUtils.isBlank(yxResponse)){//请求失败或超时
                            if (!sosContactsDO.getUpdateInfo().contains(device_sn)){
                                sosContactsDO.setUpdateInfo(sosContactsDO.getUpdateInfo()+",{deviceSn:"+device_sn+":error}");
                            }
                            sosContactsDO.setSuccessFlag(-1);
                        }else {
                            JSONObject yxResponseObj = JSONObject.parseObject(yxResponse);
                            if (200==yxResponseObj.getInteger("status")){//返回成功
                                if (!sosContactsDO.getUpdateInfo().contains(device_sn)){
                                    sosContactsDO.setUpdateInfo(sosContactsDO.getUpdateInfo()+",{deviceSn:"+device_sn+":success}");
                                }
                                if (1==sosContactsDO.getSuccessFlag()||0==sosContactsDO.getSuccessFlag()){
                                    sosContactsDO.setSuccessFlag(1);
                                }else {
                                    sosContactsDO.setSuccessFlag(-1);
                                }
                            } else { //返回失败
                                if (!sosContactsDO.getUpdateInfo().contains(device_sn)){
                                    sosContactsDO.setUpdateInfo(sosContactsDO.getUpdateInfo()+",{deviceSn:"+device_sn+":"+yxResponseObj.getString("message")+"}");
                                }
                                sosContactsDO.setSuccessFlag(-1);
                            }
                        }
                    }
                    sosContactsDao.save(sosContactsDO);

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

@ -0,0 +1,34 @@
package com.yihu.jw.care.job.device;
import com.yihu.jw.care.service.device.PressureGlucoseNotService;
import org.quartz.DisallowConcurrentExecution;
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 Bing on 2022/3/10.
 * 患者血压(1天)、血糖(7天)未测量通知
 */
@DisallowConcurrentExecution
public class PressureGlucoseNotJob implements Job {
    private static Logger logger = LoggerFactory.getLogger(PressureGlucoseNotJob.class);
    @Autowired
    private PressureGlucoseNotService pressureGlucoseNotService;
    @Override
    public void execute(JobExecutionContext context) throws JobExecutionException {
        logger.info("BLOOD_PRESSURE_GLUCOSE_NOT_MEASURED job start");
        try {
            pressureGlucoseNotService.sendNotice();
            logger.info("BLOOD_PRESSURE_GLUCOSE_NOT_MEASURED job end");
        }catch (Exception e){
            e.printStackTrace();
            logger.info("BLOOD_PRESSURE_GLUCOSE_NOT_MEASURED job end===ERROE===,message:"+e.getMessage());
        }
    }
}

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

@ -2,11 +2,16 @@ package com.yihu.jw.care.job.device;
import com.yihu.jw.util.http.HttpClientUtil;
import com.yihu.jw.utils.StringUtil;
import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
/**
 * Created with IntelliJ IDEA.
 * 云芯拐杖设备对接
@ -29,9 +34,9 @@ public class YunXunDeviceService {
     * @param phone2
     * @param phone3
     */
    public void setSos(String sn,String phone1,String phone2,String phone3){
    public String setSos(String sn,String phone1,String phone2,String phone3){
        if(StringUtil.isBlank(phone1)){
            return;
            return "";
        }
        //[IC*334588000000156*0027*SOS,00000000000,00000000000]
        String order = "SOS,"+phone1;
@ -42,21 +47,26 @@ public class YunXunDeviceService {
            order += ","+phone3;
        }
        String instruction = "[IC*"+sn+"*"+hex10To16(order.length())+"*"+order+"]";
        sendInstruction(sn,instruction);
        return sendInstruction(sn,instruction);
    }
    /**
     * 发送指令接口
     * @param instruction
     */
    public void sendInstruction(String sn,String instruction){
    public String sendInstruction(String sn,String instruction){
        try {
            String url = "http://www.www.cityihealth.com:43210/yunxin/sendMessage?deviceSN="+sn+"&message="+instruction;
            String response = httpClientUtil.get(url,"UTF-8");
            String url = "http://www.cityihealth.com:43210/yunxin/sendMessage?deviceSN="+sn+"&message="+instruction;
            List<NameValuePair> params = new ArrayList<>();
            params.add(new BasicNameValuePair("deviceSN",sn));
            params.add(new BasicNameValuePair("message",instruction));
            String response = httpClientUtil.postWithTimeOUt(url,params,"UTF-8",10000);
            logger.info("sendInstruction="+response);
            return response;
        }catch (Exception e){
            e.printStackTrace();
        }
        return "";
    }
    /**

+ 6 - 2
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/job/sim/UpdateSimsJob.java

@ -96,14 +96,18 @@ public class UpdateSimsJob implements Job {
                                    if ("Y".equals(lastFlag)){
                                        forFlag = -1;
                                    }
                                }else {
                                    forFlag=-1;
                                }
                            }
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                    }
                    wlyySimDao.deleteAll();
                    wlyySimDao.save(simDos);
                    if (simDos.size()>0){
                        wlyySimDao.deleteAll();
                        wlyySimDao.save(simDos);
                    }
                }
            }
            logger.info(" UPDATE_SIMS_JOB end");

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

@ -38,7 +38,15 @@ public class BirthdayReminderService {
                "  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);
        //助老员
        sql = " SELECT d.id,d.name,d.mobile,COUNT(DISTINCT p.id) c  " +
                " from base_patient_helper ph ,base_patient p ,base_doctor d  " +
                " WHERE ph.patient = p.id and ph.del=1 and p.del=1 and ph.doctor = d.id and d.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 " ;
        docList.addAll(jdbcTemplate.queryForList(sql));
        for (Map<String, Object> map:docList){
            try {
                String doctorName = map.get("name")+"";

+ 26 - 23
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/service/WlyysimFlowVoiceService.java

@ -41,24 +41,16 @@ public class WlyysimFlowVoiceService{
    @Autowired
    private HttpClientUtil httpClientUtil;
    public String initData() throws InterruptedException {
        Date date = new Date();
        Date month = new Date();
        for (int i=1;i<=7;i++){
            date = DateUtil.getPreDays(date,-1);
            String dateTime = DateUtil.dateToStr(date,DateUtil.YYYYMMDD);
            System.out.println("day"+dateTime);
            initDay(dateTime);
            TimeUnit.SECONDS.sleep(10);
            Calendar cal = Calendar.getInstance();
            cal.setTime(month);
            cal.set(Calendar.DAY_OF_MONTH,1);
            cal.add(Calendar.MONTH,-1*(i-1));
            dateTime = DateUtil.dateToStr(cal.getTime(),DateUtil.YYYYMM);
            System.out.println("mon"+dateTime);
            initMonth(dateTime);
            TimeUnit.SECONDS.sleep(10);
        }
    public String initData(String time) throws InterruptedException {
        Date date = DateUtil.strToDate(time);
        String dateTime =DateUtil.dateToStr(date,DateUtil.YYYYMMDD);
        System.out.println("day"+dateTime);
        initDay(dateTime);
        TimeUnit.SECONDS.sleep(10);
        dateTime = DateUtil.dateToStr(date,DateUtil.YYYYMM);
        System.out.println("mon"+dateTime);
        initMonth(dateTime);
        System.out.println("success");
        return "success";
    }
@ -123,8 +115,14 @@ public class WlyysimFlowVoiceService{
                        }
                    }
                    wlyySimVoiceDao.save(wlyySimVoicesDos);
                    wlyySimFlowDao.save(wlyySimFlowDos);
                    if (wlyySimVoicesDos.size()>0){
                        wlyySimVoiceDao.deleteByDayAndType(dateTime,2);
                        wlyySimVoiceDao.save(wlyySimVoicesDos);
                    }
                    if (wlyySimFlowDos.size()>0){
                        wlyySimFlowDao.deleteByDayAndType(dateTime,2);
                        wlyySimFlowDao.save(wlyySimFlowDos);
                    }
                }catch (Exception e){
                    e.printStackTrace();
@ -195,9 +193,14 @@ public class WlyysimFlowVoiceService{
                            wlyySimFlowDos.add(wlyySimFlowDo);
                        }
                    }
                    wlyySimVoiceDao.save(wlyySimVoicesDos);
                    wlyySimFlowDao.save(wlyySimFlowDos);
                    if (wlyySimVoicesDos.size()>0){
                        wlyySimVoiceDao.deleteByDayAndType(dateTime,1);
                        wlyySimVoiceDao.save(wlyySimVoicesDos);
                    }
                   if (wlyySimFlowDos.size()>0){
                       wlyySimFlowDao.deleteByDayAndType(dateTime,1);
                       wlyySimFlowDao.save(wlyySimFlowDos);
                   }
                }catch (Exception e){
                    e.printStackTrace();
                }

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

@ -45,7 +45,7 @@ public class NetworkCardService {
        if (responseBody.getInteger("status")==0){
            JSONObject tmp = responseBody.getJSONArray("result").getJSONObject(0);
            assToken = tmp.getString("token");
            Long expireTime =Long.parseLong(tmp.getString("ttl"));//token有效期
            Long expireTime =Long.parseLong(tmp.getString("ttl"))-600;//token有效期
            redisTemplate.opsForValue().set(NetworkCardConfig.redisKey,assToken,expireTime, TimeUnit.SECONDS);
        }else {
            throw new Exception(response);

+ 84 - 0
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/service/device/PressureGlucoseNotService.java

@ -0,0 +1,84 @@
package com.yihu.jw.care.service.device;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.care.util.DateUtil;
import com.yihu.jw.care.util.MessageUtil;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
 * Created by Bing on 2022/3/10.
 */
@Service
public class PressureGlucoseNotService {
    @Autowired
    private JdbcTemplate jdbcTemplate;
    @Autowired
    private MessageUtil messageUtil;
    @Value("${wechat.id}")
    private String wxId;
    public void sendNotice(){
        Date date = new Date();
        Date yesDay = DateUtil.getPreDays(date,-1);
        Date Day7pre = DateUtil.getPreDays(date,-7);
        String dateTime = DateUtil.dateToStr(yesDay,DateUtil.YYYY_MM_DD);
        String dateTime7 = DateUtil.dateToStr(Day7pre,DateUtil.YYYY_MM_DD);
        String keyword1 = "【"+DateUtil.dateToStrLong(date)+"】";
        //血压一天内未测量 血糖7天内未测量
        String sql = " select p.id,p.name,pd.category_code from wlyy_patient_device pd INNER JOIN base_patient p on pd.`user` = p.id " +
                " where pd.del=0 and pd.category_code =2 and NOT EXISTS ( " +
                " select phi.id from wlyy_patient_health_index phi where phi.device_sn = pd.device_sn and phi.user = p.id " +
                " and phi.record_date>='"+dateTime+" 00:00:00:00' and phi.record_date<='"+dateTime+" 23:59:59' )GROUP BY p.id " +
                " UNION " +
                " select p.id,p.name,pd.category_code from wlyy_patient_device pd INNER JOIN base_patient p on pd.`user` = p.id " +
                " where pd.del=0 and pd.category_code =1 and NOT EXISTS ( " +
                " select phi.id from wlyy_patient_health_index phi where phi.device_sn = pd.device_sn and phi.user = p.id " +
                " and phi.record_date>='"+dateTime7+" 00:00:00:00' and phi.record_date<='"+dateTime+" 23:59:59' ) GROUP BY p.id ";
        List<Map<String,Object>> list = jdbcTemplate.queryForList(sql);
        for (Map<String,Object>tmp:list){
            String patient = tmp.get("id").toString();
            sql = "select t2.id,t2.openid " +
                    "from base_patient t2 INNER JOIN base_patient_family_member t1 on t1.family_member = t2.id " +
                    "where t1.patient = '"+patient+"' and t2.del=1 and t2.archive_type=3 group by t2.id  ";
            List<Map<String, Object>> families = jdbcTemplate.queryForList(sql);
            for (Map<String, Object>familyTmo:families){
                if (null!=familyTmo.get("openid")&&StringUtils.isNotBlank(familyTmo.get("openid").toString())){
                    String first = "";
                    String keyword2="";
                    String keyword3="";
                    String patientName = null==tmp.get("name")?"":tmp.get("name").toString();
                    String category_code = tmp.get("category_code").toString();
                    JSONObject jsonObject = new JSONObject();
                    jsonObject.put("patientId",patient);
                    switch (category_code){
                        case "1":
                            first = patientName+"血糖超7天未测量";
                            keyword2="【血糖测量】";
                            keyword3=patientName+"血糖超7天未测量,请及时跟进";
                            jsonObject.put("type","1");
                            break;
                        case "2":
                            first = patientName+"血压未测量";
                            keyword2="【血压测量】";
                            keyword3=patientName+"昨日未测量血压,请及时跟进";
                            jsonObject.put("type","2");
                            break;
                    }
                    messageUtil.putTemplateWxMessage(wxId,"template_error_notice","xyxtwcltz",familyTmo.get("openid").toString(),first,null,null,37,jsonObject,keyword1,keyword2,keyword3);
                }
            }
        }
    }
}

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

@ -1,5 +1,6 @@
package com.yihu.jw.care.util;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.care.dao.device.PatientDeviceDao;
import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.entity.care.device.DevicePatientDevice;
@ -7,7 +8,9 @@ import com.yihu.jw.entity.hospital.message.SystemMessageDO;
import com.yihu.jw.hospital.message.dao.SystemMessageDao;
import com.yihu.jw.patient.dao.BasePatientDao;
import com.yihu.jw.rm.base.BaseRequestMapping;
import org.apache.commons.lang3.StringUtils;
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;
@ -30,6 +33,10 @@ public class DeviceLostMessageUtil {
    private JdbcTemplate jdbcTemplate;
    @Autowired
    private BasePatientDao patientDao;
    @Autowired
    private MessageUtil messageUtil;
    @Value("${wechat.id}")
    private String wxId;
    /**
     * 设备离线通知
@ -45,12 +52,17 @@ public class DeviceLostMessageUtil {
            List<DevicePatientDevice> pds =  patientDeviceDao.findByDeviceSn(id);
            if (pds.size()>0){
                DevicePatientDevice deviceDO = pds.get(0);
                String sql = "SELECT DISTINCT d.id,d.name from base_service_package_sign_record sr,base_service_package_record r,base_team_member m,base_doctor d  " +
                //社工
                String sql = "SELECT DISTINCT d.id,d.name,'doctor' as 'user' from base_service_package_sign_record sr,base_service_package_record r,base_team_member m,base_doctor d  " +
                        "               WHERE sr.status=1 and m.team_code = r.team_code and sr.id=r.sign_id and m.doctor_code = d.id " +
                        "               and m.del = '1' and sr.patient = '"+deviceDO.getUser()+"' and d.doctor_level=2 " ;
                List<Map<String,Object>> doctors = jdbcTemplate.queryForList(sql);
                //助老员
                sql = " select distinct doc.id,doc.name,'doctor' as 'user' from base_patient_helper ph INNER JOIN base_doctor doc " +
                        " on ph.doctor = doc.id where ph.del=1 and ph.patient='"+deviceDO.getUser()+"' and doc.del=1 " ;
                doctors.addAll(jdbcTemplate.queryForList(sql));
                // 家属
                sql = " select  t2.id,t2.name from  base_patient_family_member t1,  base_patient t2 where  " +
                sql = " select  t2.id,t2.name,t2.openid,'family3' as 'user' from  base_patient_family_member t1,  base_patient t2 where  " +
                         "t2.id in (select family_member from base_patient_family_member where patient = '"+deviceDO.getUser()+"' )  " +
                         " and t1.patient = '"+deviceDO.getUser()+"'  and t1.family_member = t2.id  " +
                         " and t2.archive_type=3 GROUP BY t2.id " ;
@ -61,34 +73,34 @@ public class DeviceLostMessageUtil {
                for (Map<String,Object> docTmp:doctors){
                    switch (deviceDO.getCategoryCode()){
                        case "1":
                            deviceName="血糖仪离线";
                            deviceName="血糖仪";
                            break;
                        case "2":
                            deviceName="血压计离线";
                            deviceName="血压计";
                            break;
                        case "4":
                            deviceName="智能手表离线";
                            deviceName="智能手表";
                            break;
                        case "7":
                            deviceName="居家安全报警器离线";
                            deviceName="居家安全报警器";
                            break;
                        case "12":
                            deviceName="监控器离线";
                            deviceName="监控器";
                            break;
                        case "13":
                            deviceName="睡眠带离线";
                            deviceName="睡眠带";
                            break;
                        case "14":
                            deviceName="气感报警器离线";
                            deviceName="气感报警器";
                            break;
                        case "15":
                            deviceName="烟感报警器离线";
                            deviceName="烟感报警器";
                            break;
                        case "16":
                            deviceName="智能拐杖离线";
                            deviceName="智能拐杖";
                            break;
                        case "17":
                            deviceName="随身WiFi离线";
                            deviceName="随身WiFi";
                            break;
                    }
                    BasePatientDO patientDO = patientDao.findById(deviceDO.getUser());
@ -102,11 +114,22 @@ public class DeviceLostMessageUtil {
                    messageDO.setReceiver(docTmp.get("id").toString());
                    messageDO.setReceiverName(docTmp.get("name").toString());
                    messageDO.setOver("1");
                    messageDO.setData(deviceName);
                    messageDO.setData(deviceName+"离线");
                    messageDO.setDel("1");
                    messageDO.setCreateTime(new Date());
                    messageDO.setSenderPhoto(patientDO.getPhoto());
                    messageDOS.add(messageDO);
                    if ("family3".equals(docTmp.get("user").toString())){//设备离线推送给家属
                        if(null!=docTmp.get("openid")&& StringUtils.isNotBlank(docTmp.get("openid").toString())){
                            String first = patientDO.getName()+" "+deviceName+"设备疑似离线";
                            String keyword1 = "【"+DateUtil.getStringDate()+"】";
                            String keyword2 = "【设备离线】";
                            String keyword3 = patientDO.getName()+" "+deviceName+"设备疑似离线,请及时跟进";
                            messageUtil.putTemplateWxMessage(wxId,"template_error_notice","sblxtz",
                                    docTmp.get("openid").toString(),first,null,null,3,new JSONObject(),keyword1,keyword2,keyword3);
                        }
                    }
                }
            }
        }

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

@ -160,6 +160,9 @@ public class MessageUtil {
            case 3:
                wxTemplateConfigDO.setUrl(wxTemplateConfigDO.getUrl() + "?openid=" + openid);
                break;
            case 37://居民血压血糖列表详情
                wxTemplateConfigDO.setUrl(wxTemplateConfigDO.getUrl()+"?openid=" + openid+"&patientId="+json.getString("patientId")+"&type="+json.getString("type"));
                break;
        }
        return wxTemplateConfigDO;
    }

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

@ -4,6 +4,7 @@ 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.DeviceLostAssociationJob;
import com.yihu.jw.care.job.device.YunXunDeviceService;
import com.yihu.jw.care.job.message.DoctorSendUnreadJob;
import com.yihu.jw.care.job.message.PatientSendUnreadJob;
import com.yihu.jw.care.service.BirthdayReminderService;
@ -14,11 +15,13 @@ import com.yihu.jw.care.util.SystemConf;
import com.yihu.jw.restmodel.web.ObjEnvelop;
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.http.MediaType;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.Date;
@ -43,6 +46,8 @@ public class JobController extends BaseController {
    private BirthdayReminderService birthdayReminderService;
    @Autowired
    private WlyysimFlowVoiceService wlyysimFlowVoiceService;
    @Autowired
    private YunXunDeviceService yunXunDeviceService;
    @RequestMapping(value = "/deviceLostAssociationJob", method = RequestMethod.POST)
    @ApiOperation("医养物联网检测大屏失联率")
@ -320,15 +325,34 @@ public class JobController extends BaseController {
    @RequestMapping(value = "/wlyySimFlowVoice", method = RequestMethod.POST)
    @ApiOperation("物联网卡流量语音初始化查询")
    public String wlyySimFlowVoice() {
    public String wlyySimFlowVoice(@ApiParam(name = "time",required = false)
                                  @RequestParam(value = "time")String time) {
        try {
            return write(200, wlyysimFlowVoiceService.initData());
            return write(200, wlyysimFlowVoiceService.initData(time));
        } catch (Exception e) {
            error(e);
            return error(-1, e.getMessage());
        }
    }
    @RequestMapping(value = "/yxDeviceSetPhone", method = RequestMethod.POST)
    @ApiOperation("拐杖手动设置联系人")
    public String yxDeviceSetPhone(
            @ApiParam(name = "device_sn",required = false)
            @RequestParam(value = "device_sn")String device_sn,
            @ApiParam(name = "phone1",required = false)
            @RequestParam(value = "phone1")String phone1,
            @ApiParam(name = "phone2",required = false)
            @RequestParam(value = "phone2",required = false)String phone2,
            @ApiParam(name = "phone3",required = false)
            @RequestParam(value = "phone3",required = false)String phone3) {
        try {
           String response = yunXunDeviceService.setSos(device_sn,phone1,phone2,phone3);
            return write(200,response);
        } catch (Exception e) {
            error(e);
            return error(-1, e.getMessage());
        }
    }
}

+ 9 - 0
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/zhylyjkglxt/dao/ZhBaseDeviceHealthIndexDao.java

@ -0,0 +1,9 @@
package com.yihu.jw.care.zhylyjkglxt.dao;
import com.yihu.jw.care.zhylyjkglxt.entity.ZhBaseDeviceHealthIndexDO;
import com.yihu.jw.care.zhylyjkglxt.entity.ZhBaseInfantInfoDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
public interface ZhBaseDeviceHealthIndexDao extends PagingAndSortingRepository<ZhBaseDeviceHealthIndexDO,String>, JpaSpecificationExecutor<ZhBaseDeviceHealthIndexDO> {
}

+ 9 - 0
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/zhylyjkglxt/dao/ZhBaseInfantInfoDao.java

@ -0,0 +1,9 @@
package com.yihu.jw.care.zhylyjkglxt.dao;
import com.yihu.jw.care.zhylyjkglxt.entity.ZhBaseInfantInfoDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
public interface ZhBaseInfantInfoDao extends PagingAndSortingRepository<ZhBaseInfantInfoDO,String>, JpaSpecificationExecutor<ZhBaseInfantInfoDO> {
}

+ 10 - 0
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/zhylyjkglxt/dao/ZhBaseServicePackageSignRecordDao.java

@ -0,0 +1,10 @@
package com.yihu.jw.care.zhylyjkglxt.dao;
import com.yihu.jw.care.zhylyjkglxt.entity.ZhBaseServicePackageSignRecordDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
public interface ZhBaseServicePackageSignRecordDao extends PagingAndSortingRepository<ZhBaseServicePackageSignRecordDO,String>, JpaSpecificationExecutor<ZhBaseServicePackageSignRecordDO> {
}

+ 8 - 0
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/zhylyjkglxt/dao/ZhBaseSleepDeviceDao.java

@ -0,0 +1,8 @@
package com.yihu.jw.care.zhylyjkglxt.dao;
import com.yihu.jw.care.zhylyjkglxt.entity.ZhBaseSleepDeviceDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
public interface ZhBaseSleepDeviceDao extends PagingAndSortingRepository<ZhBaseSleepDeviceDO,String>, JpaSpecificationExecutor<ZhBaseSleepDeviceDO> {
}

+ 9 - 0
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/zhylyjkglxt/dao/ZhBaseSleepX1deviceDao.java

@ -0,0 +1,9 @@
package com.yihu.jw.care.zhylyjkglxt.dao;
import com.yihu.jw.care.zhylyjkglxt.entity.ZhBaseSleepX1deviceDO;
import com.yihu.jw.care.zhylyjkglxt.entity.ZhBaseYxdeviceIndexDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
public interface ZhBaseSleepX1deviceDao extends PagingAndSortingRepository<ZhBaseSleepX1deviceDO,String>, JpaSpecificationExecutor<ZhBaseSleepX1deviceDO> {
}

+ 9 - 0
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/zhylyjkglxt/dao/ZhBaseYxdeviceIndexDao.java

@ -0,0 +1,9 @@
package com.yihu.jw.care.zhylyjkglxt.dao;
import com.yihu.jw.care.zhylyjkglxt.entity.ZhBaseServicePackageSignRecordDO;
import com.yihu.jw.care.zhylyjkglxt.entity.ZhBaseYxdeviceIndexDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
public interface ZhBaseYxdeviceIndexDao extends PagingAndSortingRepository<ZhBaseYxdeviceIndexDO,String>, JpaSpecificationExecutor<ZhBaseYxdeviceIndexDO> {
}

+ 9 - 0
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/zhylyjkglxt/dao/ZhDeviceDataPushLogDao.java

@ -0,0 +1,9 @@
package com.yihu.jw.care.zhylyjkglxt.dao;
import com.yihu.jw.care.zhylyjkglxt.entity.ZhDeviceDataPushLogDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
public interface ZhDeviceDataPushLogDao extends PagingAndSortingRepository<ZhDeviceDataPushLogDO,String>, JpaSpecificationExecutor<ZhDeviceDataPushLogDO> {
}

+ 9 - 0
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/zhylyjkglxt/dao/ZhWlyyPatientLabelDao.java

@ -0,0 +1,9 @@
package com.yihu.jw.care.zhylyjkglxt.dao;
import com.yihu.jw.care.zhylyjkglxt.entity.ZhWlyyPatientLabel;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
public interface ZhWlyyPatientLabelDao extends PagingAndSortingRepository<ZhWlyyPatientLabel,String>, JpaSpecificationExecutor<ZhWlyyPatientLabel> {
}

+ 79 - 0
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/zhylyjkglxt/entity/ZhBaseDeviceHealthIndexDO.java

@ -0,0 +1,79 @@
package com.yihu.jw.care.zhylyjkglxt.entity;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yihu.jw.entity.AssignedIdentityEntity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.util.Date;
@Entity
@Table(name = "base_device_health_index")
public class ZhBaseDeviceHealthIndexDO extends AssignedIdentityEntity {
    private String deviceSn; //设备sn
    private String deviceType; //设备类型 1气感 2烟感
    private String value; //测量值
    private String unit; //单位
    private Date createTime; //创建时间
    private String recordTime; //记录时间
    @Column(name = "device_sn")
    public String getDeviceSn() {
        return deviceSn;
    }
    public void setDeviceSn(String deviceSn) {
        this.deviceSn = deviceSn;
    }
    @Column(name = "device_type")
    public String getDeviceType() {
        return deviceType;
    }
    public void setDeviceType(String deviceType) {
        this.deviceType = deviceType;
    }
    public String getValue() {
        return value;
    }
    public void setValue(String value) {
        this.value = value;
    }
    public String getUnit() {
        return unit;
    }
    public void setUnit(String unit) {
        this.unit = unit;
    }
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    @Column(name = "create_time")
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    @Column(name = "record_time")
    public String getRecordTime() {
        return recordTime;
    }
    public void setRecordTime(String recordTime) {
        this.recordTime = recordTime;
    }
}

+ 2 - 1
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/zhylyjkglxt/entity/ZhBaseDoorCoachFeeDetailDO.java

@ -1,6 +1,7 @@
package com.yihu.jw.care.zhylyjkglxt.entity;
import com.yihu.jw.entity.AssignedIdentityEntityWithOperator;
import com.yihu.jw.entity.UuidIdentityEntityWithOperator;
import javax.persistence.Column;
@ -17,7 +18,7 @@ import java.math.BigDecimal;
*/
@Entity
@Table(name = "base_door_coach_fee_detail")
public class ZhBaseDoorCoachFeeDetailDO extends UuidIdentityEntityWithOperator {
public class ZhBaseDoorCoachFeeDetailDO extends AssignedIdentityEntityWithOperator {
    /**
     * 支付方式

+ 2 - 1
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/zhylyjkglxt/entity/ZhBaseDoorCoachOrderDO.java

@ -1,6 +1,7 @@
package com.yihu.jw.care.zhylyjkglxt.entity;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yihu.jw.entity.AssignedIdentityEntityWithOperator;
import com.yihu.jw.entity.UuidIdentityEntityWithOperator;
import com.yihu.jw.entity.care.doorCoach.BaseDoorCoachConclusionDO;
import com.yihu.jw.entity.door.WlyyDoorDoctorDO;
@ -25,7 +26,7 @@ import java.util.Map;
 */
@Entity
@Table(name = "base_door_coach_order")
public class ZhBaseDoorCoachOrderDO extends UuidIdentityEntityWithOperator {
public class ZhBaseDoorCoachOrderDO extends AssignedIdentityEntityWithOperator {

+ 107 - 0
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/zhylyjkglxt/entity/ZhBaseInfantInfoDO.java

@ -0,0 +1,107 @@
package com.yihu.jw.care.zhylyjkglxt.entity;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yihu.jw.entity.AssignedIdentityEntity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.util.Date;
@Entity
@Table(name = "base_infant_info")
public class ZhBaseInfantInfoDO extends AssignedIdentityEntity implements java.io.Serializable {
    private String patient; // 幼儿code
    private String name; // 幼儿名字
    private String age; // 幼儿年龄
    private String enterSchool; //入学机构
    private String enterSchoolName; //入学机构名字
    private String ifEnterSchool; //是否入学(0否,1是)
    private String address; // 地址
    private Date createTime; //
    private Date updateTime; //
    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 String getAge() {
        return age;
    }
    public void setAge(String age) {
        this.age = age;
    }
    @Column(name = "enter_school")
    public String getEnterSchool() {
        return enterSchool;
    }
    public void setEnterSchool(String enterSchool) {
        this.enterSchool = enterSchool;
    }
    @Column(name = "if_enter_school")
    public String getIfEnterSchool() {
        return ifEnterSchool;
    }
    public void setIfEnterSchool(String ifEnterSchool) {
        this.ifEnterSchool = ifEnterSchool;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    @Column(name = "create_time")
    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")
    @Column(name = "update_time")
    public Date getUpdateTime() {
        return updateTime;
    }
    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }
    @Column(name = "enter_school_name")
    public String getEnterSchoolName() {
        return enterSchoolName;
    }
    public void setEnterSchoolName(String enterSchoolName) {
        this.enterSchoolName = enterSchoolName;
    }
}

+ 2 - 2
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/zhylyjkglxt/entity/ZhBasePatientDO.java

@ -1,7 +1,7 @@
package com.yihu.jw.care.zhylyjkglxt.entity;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yihu.jw.entity.UuidIdentityEntityWithOperator;
import com.yihu.jw.entity.AssignedIdentityEntityWithOperator;
import javax.persistence.Column;
import javax.persistence.Entity;
@ -17,7 +17,7 @@ import java.util.Date;
 */
@Entity
@Table(name = "base_patient")
public class ZhBasePatientDO extends UuidIdentityEntityWithOperator {
public class ZhBasePatientDO extends AssignedIdentityEntityWithOperator {
    /**
     * saas配置id

+ 136 - 0
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/zhylyjkglxt/entity/ZhBaseServicePackageSignRecordDO.java

@ -0,0 +1,136 @@
package com.yihu.jw.care.zhylyjkglxt.entity;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yihu.jw.entity.AssignedIdentityEntity;
import com.yihu.jw.entity.base.servicePackage.ServicePackageRecordDO;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;
import java.util.Date;
import java.util.List;
import java.util.Map;
@Entity
@Table(name = "base_service_package_sign_record")
public class ZhBaseServicePackageSignRecordDO extends AssignedIdentityEntity implements java.io.Serializable {
    private String patient;//居民code
    private String name;//居民姓名
    private String signDoctor;//签约医生code
    private String signDoctorName;//签约医生名称
    private Date startTime;//服务开始时间
    private Date endTime;//服务结束时间
    private Integer status;//状态 0新增,1生效,-1已过期
    /**
     * 签约的服务包
     */
    private List<ServicePackageRecordDO> recordDOList;
    //社区医生
    private List<Map<String,Object>> doctorList;
    //助老员
    private List<Map<String,Object>> helperList;
    //服务包
    private List<Map<String,Object>> packageList;
    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;
    }
    @Column(name = "sign_doctor")
    public String getSignDoctor() {
        return signDoctor;
    }
    public void setSignDoctor(String signDoctor) {
        this.signDoctor = signDoctor;
    }
    @Column(name = "sign_doctor_name")
    public String getSignDoctorName() {
        return signDoctorName;
    }
    public void setSignDoctorName(String signDoctorName) {
        this.signDoctorName = signDoctorName;
    }
    @Column(name = "start_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    public Date getStartTime() {
        return startTime;
    }
    public void setStartTime(Date startTime) {
        this.startTime = startTime;
    }
    @Column(name = "end_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    public Date getEndTime() {
        return endTime;
    }
    public void setEndTime(Date endTime) {
        this.endTime = endTime;
    }
    public Integer getStatus() {
        return status;
    }
    public void setStatus(Integer status) {
        this.status = status;
    }
    @Transient
    public List<ServicePackageRecordDO> getRecordDOList() {
        return recordDOList;
    }
    public void setRecordDOList(List<ServicePackageRecordDO> recordDOList) {
        this.recordDOList = recordDOList;
    }
    @Transient
    public List<Map<String,Object>> getDoctorList() {
        return doctorList;
    }
    public void setDoctorList(List<Map<String,Object>> doctorList) {
        this.doctorList = doctorList;
    }
    @Transient
    public List<Map<String,Object>> getHelperList() {
        return helperList;
    }
    public void setHelperList(List<Map<String,Object>> helperList) {
        this.helperList = helperList;
    }
    @Transient
    public List<Map<String,Object>> getPackageList() {
        return packageList;
    }
    public void setPackageList(List<Map<String,Object>> packageList) {
        this.packageList = packageList;
    }
}

+ 221 - 0
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/zhylyjkglxt/entity/ZhBaseSleepDeviceDO.java

@ -0,0 +1,221 @@
package com.yihu.jw.care.zhylyjkglxt.entity;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yihu.jw.entity.AssignedIdentityEntity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.util.Date;
@Table(name = "base_sleep_device")
@Entity
public class ZhBaseSleepDeviceDO extends AssignedIdentityEntity {
    public String patient;
    public String deviceSn; //睡眠带MAC地址
    public String fallaSleep;   //入睡时长 (分钟)
    public String sleepTime;    //睡眠时长 (分钟)
    public String restTime;     //休息时长 (分钟)
    public String awakeTime;    //清醒时长 (分钟)
    public String lightTime;//浅睡时长 (分钟)
    public String remTime;  //rem时长  (分钟)
    public String deepTime; //深睡时长 (分钟)
    public String bucket;   //睡眠时段
    public String avghr;    //平均心率
    public String avgbr;    //平均呼吸率
    public String awakePer; //清醒百分比
    public String remPer;   //rem百分比
    public String lightPer; //浅睡百分比
    public String deepPer;  //深睡百分比
    public String efficiency;   //睡眠效率
    public String score;    //睡眠评分
    public Date createTime; // //日期
    public Integer del; //是否有效 1有效 0无效
    @Column(name = "patient")
    public String getPatient() {
        return patient;
    }
    public void setPatient(String patient) {
        this.patient = patient;
    }
    @Column(name = "device_sn")
    public String getDeviceSn() {
        return deviceSn;
    }
    public void setDeviceSn(String deviceSn) {
        this.deviceSn = deviceSn;
    }
    @Column(name = "falla_sleep")
    public String getFallaSleep() {
        return fallaSleep;
    }
    public void setFallaSleep(String fallaSleep) {
        this.fallaSleep = fallaSleep;
    }
    @Column(name = "sleep_time")
    public String getSleepTime() {
        return sleepTime;
    }
    public void setSleepTime(String sleepTime) {
        this.sleepTime = sleepTime;
    }
    @Column(name = "rest_time")
    public String getRestTime() {
        return restTime;
    }
    public void setRestTime(String restTime) {
        this.restTime = restTime;
    }
    @Column(name = "awake_time")
    public String getAwakeTime() {
        return awakeTime;
    }
    public void setAwakeTime(String awakeTime) {
        this.awakeTime = awakeTime;
    }
    @Column(name = "light_time")
    public String getLightTime() {
        return lightTime;
    }
    public void setLightTime(String lightTime) {
        this.lightTime = lightTime;
    }
    @Column(name = "rem_time")
    public String getRemTime() {
        return remTime;
    }
    public void setRemTime(String remTime) {
        this.remTime = remTime;
    }
    @Column(name = "deep_time")
    public String getDeepTime() {
        return deepTime;
    }
    public void setDeepTime(String deepTime) {
        this.deepTime = deepTime;
    }
    @Column(name = "bucket")
    public String getBucket() {
        return bucket;
    }
    public void setBucket(String bucket) {
        this.bucket = bucket;
    }
    @Column(name = "avghr")
    public String getAvghr() {
        return avghr;
    }
    public void setAvghr(String avghr) {
        this.avghr = avghr;
    }
    @Column(name = "avgbr")
    public String getAvgbr() {
        return avgbr;
    }
    public void setAvgbr(String avgbr) {
        this.avgbr = avgbr;
    }
    @Column(name = "awake_per")
    public String getAwakePer() {
        return awakePer;
    }
    public void setAwakePer(String awakePer) {
        this.awakePer = awakePer;
    }
    @Column(name = "rem_per")
    public String getRemPer() {
        return remPer;
    }
    public void setRemPer(String remPer) {
        this.remPer = remPer;
    }
    @Column(name = "light_per")
    public String getLightPer() {
        return lightPer;
    }
    public void setLightPer(String lightPer) {
        this.lightPer = lightPer;
    }
    @Column(name = "deep_per")
    public String getDeepPer() {
        return deepPer;
    }
    public void setDeepPer(String deepPer) {
        this.deepPer = deepPer;
    }
    @Column(name = "efficiency")
    public String getEfficiency() {
        return efficiency;
    }
    public void setEfficiency(String efficiency) {
        this.efficiency = efficiency;
    }
    @Column(name = "score")
    public String getScore() {
        return score;
    }
    public void setScore(String score) {
        this.score = score;
    }
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    @Column(name = "create_time")
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    @Column(name = "del")
    public Integer getDel() {
        return del;
    }
    public void setDel(Integer del) {
        this.del = del;
    }
}

+ 145 - 0
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/zhylyjkglxt/entity/ZhBaseSleepX1deviceDO.java

@ -0,0 +1,145 @@
package com.yihu.jw.care.zhylyjkglxt.entity;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yihu.jw.entity.AssignedIdentityEntity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.util.Date;
@Entity
@Table(name = "base_sleep_x1device")
public class ZhBaseSleepX1deviceDO extends AssignedIdentityEntity {
    private String patient;
    private String deviceSn;
    private String sleepTime; //睡眠时长 分钟
    private String deepSleep; //深睡时长 分钟
    private String lightSleep; //浅睡时长 分钟
    private String awakeTime; // 清醒时长 分钟
    private Date createTime; // 开始时间
    private Date endTime;   //结束时间
    private Integer intervalTime; //固定30分钟
    private Integer total; // 检测次数
    private Integer del;  //是否有效 1有效 0无效
    @Column(name = "patient")
    public String getPatient() {
        return patient;
    }
    public void setPatient(String patient) {
        this.patient = patient;
    }
    @Column(name = "device_sn")
    public String getDeviceSn() {
        return deviceSn;
    }
    public void setDeviceSn(String deviceSn) {
        this.deviceSn = deviceSn;
    }
    @Column(name = "sleep_time")
    public String getSleepTime() {
        return sleepTime;
    }
    public void setSleepTime(String sleepTime) {
        this.sleepTime = sleepTime;
    }
    @Column(name = "deep_sleep")
    public String getDeepSleep() {
        return deepSleep;
    }
    public void setDeepSleep(String deepSleep) {
        this.deepSleep = deepSleep;
    }
    @Column(name = "light_sleep")
    public String getLightSleep() {
        return lightSleep;
    }
    public void setLightSleep(String lightSleep) {
        this.lightSleep = lightSleep;
    }
    @Column(name = "awake_time")
    public String getAwakeTime() {
        return awakeTime;
    }
    public void setAwakeTime(String awakeTime) {
        this.awakeTime = awakeTime;
    }
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    @Column(name = "create_time")
    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")
    @Column(name = "end_time")
    public Date getEndTime() {
        return endTime;
    }
    public void setEndTime(Date endTime) {
        this.endTime = endTime;
    }
    @Column(name = "interval_time")
    public Integer getIntervalTime() {
        return intervalTime;
    }
    public void setIntervalTime(Integer intervalTime) {
        this.intervalTime = intervalTime;
    }
    @Column(name = "total")
    public Integer getTotal() {
        return total;
    }
    public void setTotal(Integer total) {
        this.total = total;
    }
    @Column(name = "del")
    public Integer getDel() {
        return del;
    }
    public void setDel(Integer del) {
        this.del = del;
    }
    @Override
    public String toString() {
        return "ZhBaseSleepX1deviceDO{" +
                "patient='" + patient + '\'' +
                ", deviceSn='" + deviceSn + '\'' +
                ", sleepTime='" + sleepTime + '\'' +
                ", deepSleep='" + deepSleep + '\'' +
                ", lightSleep='" + lightSleep + '\'' +
                ", awakeTime='" + awakeTime + '\'' +
                ", createTime=" + createTime +
                ", endTime=" + endTime +
                ", intervalTime=" + intervalTime +
                ", total=" + total +
                ", del=" + del +
                '}';
    }
}

+ 53 - 0
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/zhylyjkglxt/entity/ZhBaseYxdeviceIndexDO.java

@ -0,0 +1,53 @@
package com.yihu.jw.care.zhylyjkglxt.entity;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yihu.jw.entity.AssignedIdentityEntity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.util.Date;
@Table(name = "base_yxdevice_index")
@Entity
public class ZhBaseYxdeviceIndexDO extends AssignedIdentityEntity {
      private String  sn; //设备sn码
      private String  lat; //纬度
      private String  lon; //经度
      private Date createTime; //
    public String getSn() {
        return sn;
    }
    public void setSn(String sn) {
        this.sn = sn;
    }
    public String getLat() {
        return lat;
    }
    public void setLat(String lat) {
        this.lat = lat;
    }
    public String getLon() {
        return lon;
    }
    public void setLon(String lon) {
        this.lon = lon;
    }
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    @Column(name = "create_Time")
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
}

+ 100 - 0
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/zhylyjkglxt/entity/ZhDeviceDataPushLogDO.java

@ -0,0 +1,100 @@
package com.yihu.jw.care.zhylyjkglxt.entity;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yihu.jw.entity.AssignedIdentityEntity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import java.util.Date;
@Entity
@Table(name = "device_data_push_log")
public class ZhDeviceDataPushLogDO extends AssignedIdentityEntity implements java.io.Serializable {
    private String patient; //
    private String patientName; //
    private String deviceSn; //
    private String deviceName; //
    private String deviceCategory; //
    private String apiName; //
    private String data; //
    private Date createTime; //
    public String getPatient() {
        return patient;
    }
    public void setPatient(String patient) {
        this.patient = patient;
    }
    @Column(name = "patient_name")
    public String getPatientName() {
        return patientName;
    }
    public void setPatientName(String patientName) {
        this.patientName = patientName;
    }
    @Column(name = "device_sn")
    public String getDeviceSn() {
        return deviceSn;
    }
    public void setDeviceSn(String deviceSn) {
        this.deviceSn = deviceSn;
    }
    @Column(name = "device_name")
    public String getDeviceName() {
        return deviceName;
    }
    public void setDeviceName(String deviceName) {
        this.deviceName = deviceName;
    }
    @Column(name = "device_category")
    public String getDeviceCategory() {
        return deviceCategory;
    }
    public void setDeviceCategory(String deviceCategory) {
        this.deviceCategory = deviceCategory;
    }
    @Column(name = "api_name")
    public String getApiName() {
        return apiName;
    }
    public void setApiName(String apiName) {
        this.apiName = apiName;
    }
    public String getData() {
        return data;
    }
    public void setData(String data) {
        this.data = data;
    }
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    @Column(name = "create_time")
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
}

+ 2 - 1
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/zhylyjkglxt/entity/ZhEmergencyAssistanceDO.java

@ -1,6 +1,7 @@
package com.yihu.jw.care.zhylyjkglxt.entity;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yihu.jw.entity.AssignedIdentityEntityWithOperator;
import com.yihu.jw.entity.UuidIdentityEntityWithOperator;
import com.yihu.jw.entity.care.securitymonitoring.EmergencyWarnConclusionDO;
@ -15,7 +16,7 @@ import java.util.Date;
 */
@Entity
@Table(name="base_emergency_assistance_order")
public class ZhEmergencyAssistanceDO extends UuidIdentityEntityWithOperator {
public class ZhEmergencyAssistanceDO extends AssignedIdentityEntityWithOperator {
    /**
     * 工单状态:

+ 0 - 0
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/zhylyjkglxt/entity/ZhLifeCareFeeDetailDO.java


Algúns arquivos non se mostraron porque demasiados arquivos cambiaron neste cambio