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

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

wangzhinan 3 роки тому
батько
коміт
0491ae8b1a
80 змінених файлів з 3268 додано та 359 видалено
  1. 115 1
      business/base-service/src/main/java/com/yihu/jw/patient/service/BasePatientService.java
  2. 2 0
      common/common-entity/src/main/java/com/yihu/jw/entity/base/servicePackage/BasePatientHelperDO.java
  3. 2 0
      common/common-entity/src/main/java/com/yihu/jw/entity/care/birthday/BirthDayWishesToPatient.java
  4. 2 0
      common/common-entity/src/main/java/com/yihu/jw/entity/care/birthday/BirthdayWishesTemplate.java
  5. 2 4
      common/common-entity/src/main/java/com/yihu/jw/entity/care/contacts/PatientSosContactsDO.java
  6. 2 0
      common/common-entity/src/main/java/com/yihu/jw/entity/care/device/BasePatientOutBed.java
  7. 2 0
      common/common-entity/src/main/java/com/yihu/jw/entity/care/device/BasePatientStepDo.java
  8. 2 0
      common/common-entity/src/main/java/com/yihu/jw/entity/care/device/BaseSleepDeviceReport.java
  9. 2 0
      common/common-entity/src/main/java/com/yihu/jw/entity/care/device/BaseSleepNightRecord.java
  10. 2 4
      common/common-entity/src/main/java/com/yihu/jw/entity/care/device/BaseSleepPlanDetail.java
  11. 2 0
      common/common-entity/src/main/java/com/yihu/jw/entity/care/device/DeviceDataPushLog.java
  12. 2 0
      common/common-entity/src/main/java/com/yihu/jw/entity/care/device/PatientSafeAreaConfirm.java
  13. 2 0
      common/common-entity/src/main/java/com/yihu/jw/entity/care/device/PatientSafeAreaDO.java
  14. 2 0
      common/common-entity/src/main/java/com/yihu/jw/entity/care/device/YsConfigDo.java
  15. 2 0
      common/common-entity/src/main/java/com/yihu/jw/entity/care/device/YsDeviceDo.java
  16. 2 0
      common/common-entity/src/main/java/com/yihu/jw/entity/care/securitymonitoring/BaseEmergencyWarnLogDO.java
  17. 17 0
      gateway/ag-basic/src/main/java/com/yihu/jw/gateway/config/MultipartConfig.java
  18. 127 7
      gateway/ag-basic/src/main/java/com/yihu/jw/gateway/filter/BasicZuulFilter.java
  19. 122 0
      gateway/ag-basic/src/main/java/com/yihu/jw/gateway/filter/CsrfFilter.java
  20. 5 0
      gateway/ag-basic/src/main/resources/application.yml
  21. 10 10
      server/svr-authentication/src/main/java/com/yihu/jw/security/oauth2/provider/endpoint/WlyyLoginEndpoint.java
  22. 11 0
      server/svr-authentication/src/main/java/com/yihu/jw/security/service/RegisterService.java
  23. 29 0
      svr/svr-base/src/main/java/com/yihu/jw/base/service/doctor/BaseDoctorService.java
  24. 11 4
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/config/MvcConfig.java
  25. 21 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/dao/common/BaseLoginLogDao.java
  26. 38 1
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/admin/CommonEndpoint.java
  27. 8 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/apply/PatientBedApplyEndPoint.java
  28. 53 7
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/assistance/EmergencyAssistanceEndpoint.java
  29. 5 2
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/consult/DoctorConsultController.java
  30. 28 1
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/consult/DoctorConsultEndpoint.java
  31. 13 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/course/DoctorCourseEndpoint.java
  32. 18 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/course/RecruitStudentsEndpoint.java
  33. 2 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/device/DeviceController.java
  34. 3 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/device/PatientDeviceController.java
  35. 86 12
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/doctor/DoctorBirthdayWishesEndpoint.java
  36. 78 1
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/doctor/DoctorEndpoint.java
  37. 21 2
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/doctor/DoctorToDoWorkEndpoint.java
  38. 28 5
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/doorCoach/DoctorDoorCoachOrderController.java
  39. 3 3
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/label/PatientLabelEndpoint.java
  40. 5 3
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/sign/SignEndpoint.java
  41. 8 2
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/visit/VisitEndpoint.java
  42. 34 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/interceptors/CrosXssFilter.java
  43. 120 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/interceptors/XssHttpServletRequestWrapper.java
  44. 116 66
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/assistance/EmergencyAssistanceService.java
  45. 206 31
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/birthday/BirthdayWishesService.java
  46. 102 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/common/CommomService.java
  47. 247 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/common/PermissionService.java
  48. 4 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/consult/ConsultService.java
  49. 9 12
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/consult/ConsultTeamService.java
  50. 17 3
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/doctor/CareDoctorService.java
  51. 3 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/doorCoach/DoctorDoorCoachOrderService.java
  52. 36 1
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/family/PatientFamilyMemberService.java
  53. 2 2
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/label/PatientLableService.java
  54. 3 1
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/lifeCare/LifeCareOrderService.java
  55. 29 41
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/message/DoctorMessageService.java
  56. 14 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/patient/CarePatientService.java
  57. 10 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/security/SecurityMonitoringOrderService.java
  58. 20 5
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/sign/ArchiveService.java
  59. 75 59
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/sign/ServicePackageService.java
  60. 7 1
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/visit/BaseVisitService.java
  61. 2 2
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/util/MessageUtil.java
  62. 1 1
      svr/svr-cloud-device/src/main/java/com/yihu/jw/care/service/DeviceService.java
  63. 16 15
      svr/svr-cloud-device/src/main/java/com/yihu/jw/care/service/DeviceUploadService.java
  64. 2 2
      svr/svr-cloud-device/src/main/java/com/yihu/jw/care/util/MessageUtil.java
  65. 225 27
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/job/data/SaveDataPushJob.java
  66. 169 0
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/service/device/InitializeDataJobService.java
  67. 4 1
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/service/device/PressureGlucoseNotService.java
  68. 10 10
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/util/DeviceLostMessageUtil.java
  69. 2 2
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/util/MessageUtil.java
  70. 25 3
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/web/JobController.java
  71. 8 0
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/zhylyjkglxt/dao/ZhBaseOrgDao.java
  72. 8 0
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/zhylyjkglxt/dao/ZhBaseVisitDao.java
  73. 9 0
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/zhylyjkglxt/dao/ZhInfantActivityDao.java
  74. 10 0
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/zhylyjkglxt/dao/ZhTeacherInfoDao.java
  75. 423 0
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/zhylyjkglxt/entity/ZhBaseOrgDO.java
  76. 159 0
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/zhylyjkglxt/entity/ZhBaseVisitDO.java
  77. 6 5
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/zhylyjkglxt/entity/ZhDeviceDetail.java
  78. 42 0
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/zhylyjkglxt/entity/ZhInfantActivityDO.java
  79. 100 0
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/zhylyjkglxt/entity/ZhTeacherInfoDO.java
  80. 98 0
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/zhylyjkglxt/sql记录.sql

+ 115 - 1
business/base-service/src/main/java/com/yihu/jw/patient/service/BasePatientService.java

@ -291,7 +291,19 @@ public class BasePatientService<T, R extends CrudRepository> extends BaseJpaServ
            basePatientDO1.setAddress(basePatientDO.getAddress());
            basePatientDO1.setPhoto(basePatientDO.getPhoto());
            basePatientDO1.setArchiveStatus(basePatientDO.getArchiveStatus());
            if("hz_yyyzh_wx".equalsIgnoreCase(wxId)){//杭州医养头像初始化
                if (org.apache.commons.lang3.StringUtils.isBlank(basePatientDO1.getPhoto())){
                    String hzPhoto= getHzAvatar(1,null,basePatientDO1.getArchiveType()+"",null==basePatientDO1.getSex()?"":basePatientDO1.getSex()+"",basePatientDO1.getIdcard());
                    basePatientDO1.setPhoto(hzPhoto);
                }else{
                    String sql = " select count(id) from wlyy_hospital_sys_dict where dict_name='hz_default_avatar' and dict_value='"+basePatientDO1.getPhoto()+"' ";
                    Integer defaultAvatar =  jdbcTemplate.queryForObject(sql,Integer.class);
                    if (defaultAvatar>0){
                        String hzPhoto= getHzAvatar(1,null,basePatientDO1.getArchiveType()+"",null==basePatientDO1.getSex()?"":basePatientDO1.getSex()+"",basePatientDO1.getIdcard());
                        basePatientDO1.setPhoto(hzPhoto);
                    }
                }
            }
            // 保存修改的居民信息
            this.save(basePatientDO1);
        }
@ -344,6 +356,20 @@ public class BasePatientService<T, R extends CrudRepository> extends BaseJpaServ
            if(StringUtils.isNotBlank(basePatientDO.getYktId())){
                basePatientDO1.setYktId(basePatientDO.getYktId());
            }
            if("hz_yyyzh_wx".equalsIgnoreCase(wxId)){//杭州医养头像初始化
                if (org.apache.commons.lang3.StringUtils.isBlank(basePatientDO1.getPhoto())){
                    String hzPhoto= getHzAvatar(1,null,basePatientDO1.getArchiveType()+"",null==basePatientDO1.getSex()?"":basePatientDO1.getSex()+"",basePatientDO1.getIdcard());
                    basePatientDO1.setPhoto(hzPhoto);
                }else{
                    String sql = " select count(id) from wlyy_hospital_sys_dict where dict_name='hz_default_avatar' and dict_value='"+basePatientDO1.getPhoto()+"' ";
                    Integer defaultAvatar =  jdbcTemplate.queryForObject(sql,Integer.class);
                    if (defaultAvatar>0){
                        String hzPhoto= getHzAvatar(1,null,basePatientDO1.getArchiveType()+"",null==basePatientDO1.getSex()?"":basePatientDO1.getSex()+"",basePatientDO1.getIdcard());
                        basePatientDO1.setPhoto(hzPhoto);
                    }
                }
            }
            // 保存修改的居民信息
            basePatientDao.save(basePatientDO1);
        }
@ -708,5 +734,93 @@ public class BasePatientService<T, R extends CrudRepository> extends BaseJpaServ
        return PageEnvelop.getSuccessListWithPage("success",list,page,size,cou);
    }
    /**
     *
     * 获取医养默认头像
     * @param user 1居民2员工(医生、助老员等)
     * @param doctorLevel
     * @param archiveType
     * @param sex
     * @param idcard
     * @return
     */
    public String getHzAvatar(Integer user,String doctorLevel,String archiveType,String sex,String idcard){
        String avatar = null;
        String flag = "";
        if (org.apache.commons.lang3.StringUtils.isBlank(sex)&& org.apache.commons.lang3.StringUtils.isNotBlank(idcard)){
            sex = IdCardUtil.getSexForIdcard_new(idcard);
        }
        if (1==user){
            if (org.apache.commons.lang3.StringUtils.isNotBlank(archiveType)){
                flag = "1"+"-"+archiveType;
            }
            if (org.apache.commons.lang3.StringUtils.isNotBlank(sex)&&!"3".equals(sex)){
                flag += "-"+sex;
            }else {
                flag += "-1";
            }
        }
        else if (2==user){
            if (org.apache.commons.lang3.StringUtils.isNotBlank(doctorLevel)){
                flag = "2"+"-"+doctorLevel;
            }
            if (org.apache.commons.lang3.StringUtils.isNotBlank(sex)&&!"3".equals(sex)){
                flag += "-"+sex;
            }else {
                flag += "-1";
            }
        }
        String dictName="";
        switch (flag){
            case "1-1-1"://老人男
                dictName="laorennan";
                break;
            case "1-1-2"://老人女
                dictName="laorennv";
                break;
            case "1-2-1"://新生儿男
                dictName="xinshengernan";
                break;
            case "1-2-2"://新生儿女
                dictName="xinshengernv";
                break;
            case "1-3-1"://家属男
                dictName="jiashunan";
                break;
            case "1-3-2"://家属女
                dictName="jiashunv";
                break;
            case "2-1-1"://医生男
                dictName="yishengnan";
                break;
            case "2-1-2"://医生女
                dictName="yishengnv";
                break;
            case "2-2-1"://社工男
                dictName="shegongnan";
                break;
            case "2-2-2"://社工女
                dictName="shegongnv";
                break;
            case "2-3-1"://教师男
                dictName="jiaoshinan";
                break;
            case "2-3-2"://教师女
                dictName="jiaoshinv";
                break;
            case "2-4-1"://助老员男
                dictName="shegongnan";
                break;
            case "2-4-2"://助老员女
                dictName="shegongnv";
                break;
            default:
                dictName="jiashunan";
                break;
        }
        String sql = " select dict_value from wlyy_hospital_sys_dict where dict_name='hz_default_avatar' and dict_code='"+dictName+"' ";
        avatar = jdbcTemplate.queryForObject(sql,String.class);
        return avatar;
    }
}

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

@ -3,6 +3,7 @@ package com.yihu.jw.entity.base.servicePackage;
import com.yihu.jw.entity.IntegerIdentityEntityWithOperator;
import javax.persistence.Entity;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
/**
@ -11,6 +12,7 @@ import javax.persistence.Table;
 */
@Entity
@Table(name = "base_patient_helper")
@SequenceGenerator(name="id_generated", sequenceName="seq_base_patient_helper")
public class BasePatientHelperDO extends IntegerIdentityEntityWithOperator {
    private String patient;

+ 2 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/care/birthday/BirthDayWishesToPatient.java

@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonFormat;
import com.yihu.jw.entity.IdEntity;
import javax.persistence.Entity;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import java.util.Date;
@ -13,6 +14,7 @@ import java.util.Date;
 */
@Entity
@Table(name = "birthday_wishes_to_patient")
@SequenceGenerator(name="id_generated", sequenceName="seq_birthday_wishes_to_patient")
public class BirthDayWishesToPatient extends IdEntity {

+ 2 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/care/birthday/BirthdayWishesTemplate.java

@ -6,6 +6,7 @@ import com.yihu.jw.entity.IdEntity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import java.util.Date;
@ -17,6 +18,7 @@ import java.util.Date;
@Entity
@Table(name = "wlyy_birthday_wishes_template")
@SequenceGenerator(name="id_generated", sequenceName="seq_wlyy_birthday_wishes_template")
public class BirthdayWishesTemplate extends IdEntity {
    private String code;//业务主键

+ 2 - 4
common/common-entity/src/main/java/com/yihu/jw/entity/care/contacts/PatientSosContactsDO.java

@ -4,10 +4,7 @@ package com.yihu.jw.entity.care.contacts;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yihu.jw.entity.IdEntity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;
import javax.persistence.*;
import java.util.Date;
/**
@ -16,6 +13,7 @@ import java.util.Date;
 */
@Entity
@Table(name="base_patient_sos_contacts")
@SequenceGenerator(name="id_generated", sequenceName="seq_base_patient_sos_contacts")
public class PatientSosContactsDO extends IdEntity {
    private String patient;
    private String sosName; //紧急联系人

+ 2 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/care/device/BasePatientOutBed.java

@ -5,6 +5,7 @@ import com.yihu.jw.entity.IdEntity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import java.util.Date;
@ -13,6 +14,7 @@ import java.util.Date;
 */
@Entity
@Table(name="base_sleep_patient_out_bed")
@SequenceGenerator(name="id_generated", sequenceName="seq_base_patient_sos_contacts")
public class BasePatientOutBed extends IdEntity {
    private String patient ;
    private String deviceSn;

+ 2 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/care/device/BasePatientStepDo.java

@ -5,6 +5,7 @@ import com.yihu.jw.entity.IdEntity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import java.util.Date;
@ -13,6 +14,7 @@ import java.util.Date;
 */
@Entity
@Table(name="base_patient_step")
@SequenceGenerator(name="id_generated", sequenceName="seq_base_patient_step")
public class BasePatientStepDo extends IdEntity{
    private String patient;
    private String deviceSn;

+ 2 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/care/device/BaseSleepDeviceReport.java

@ -5,6 +5,7 @@ import com.yihu.jw.entity.IdEntity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import java.util.Date;
@ -14,6 +15,7 @@ import java.util.Date;
 */
@Entity
@Table(name="base_sleep_device")
@SequenceGenerator(name="id_generated", sequenceName="seq_base_sleep_device")
public class BaseSleepDeviceReport extends IdEntity {
    public String patient;

+ 2 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/care/device/BaseSleepNightRecord.java

@ -5,6 +5,7 @@ import com.yihu.jw.entity.IdEntity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import java.util.Date;
@ -13,6 +14,7 @@ import java.util.Date;
 */
@Entity
@Table(name="base_sleep_night_record")
@SequenceGenerator(name="id_generated", sequenceName="seq_base_sleep_night_record")
public class BaseSleepNightRecord extends IdEntity {
    private String patient ;
    private String deviceSn;

+ 2 - 4
common/common-entity/src/main/java/com/yihu/jw/entity/care/device/BaseSleepPlanDetail.java

@ -3,10 +3,7 @@ package com.yihu.jw.entity.care.device;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yihu.jw.entity.IdEntity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;
import javax.persistence.*;
import java.util.Date;
import java.util.List;
@ -15,6 +12,7 @@ import java.util.List;
 */
@Entity
@Table(name="base_sleep_plan_detail")
@SequenceGenerator(name="id_generated", sequenceName="seq_base_sleep_plan_detail")
public class BaseSleepPlanDetail extends IdEntity {
    private String  patient;
    private String  deviceSn;

+ 2 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/care/device/DeviceDataPushLog.java

@ -4,6 +4,7 @@ import com.yihu.jw.entity.IdEntity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import java.util.Date;
@ -12,6 +13,7 @@ import java.util.Date;
 */
@Entity
@Table(name="device_data_push_log")
@SequenceGenerator(name="id_generated", sequenceName="seq_device_data_push_log")
public class DeviceDataPushLog extends IdEntity {
    private String patient;

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

@ -5,6 +5,7 @@ import com.yihu.jw.entity.IdEntity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import java.util.Date;
@ -13,6 +14,7 @@ import java.util.Date;
 */
@Entity
@Table(name="wlyy_patient_safe_area_confirm")
@SequenceGenerator(name="id_generated", sequenceName="seq_wlyy_patient_safe_area_confirm")
public class PatientSafeAreaConfirm extends IdEntity {
    private String patient;

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

@ -5,6 +5,7 @@ import com.yihu.jw.entity.IdEntity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import java.util.Date;
@ -13,6 +14,7 @@ import java.util.Date;
 */
@Entity
@Table(name="wlyy_patient_safe_area")
@SequenceGenerator(name="id_generated", sequenceName="seq_wlyy_patient_safe_area")
public class PatientSafeAreaDO extends IdEntity {
    private String patient;

+ 2 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/care/device/YsConfigDo.java

@ -4,6 +4,7 @@ import com.yihu.jw.entity.IdEntity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
/**
@ -11,6 +12,7 @@ import javax.persistence.Table;
 */
@Entity
@Table(name = "dm_ys_config")
@SequenceGenerator(name="id_generated", sequenceName="seq_dm_ys_config")
public class YsConfigDo extends IdEntity {
    private Integer configId; //配置编号

+ 2 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/care/device/YsDeviceDo.java

@ -5,6 +5,7 @@ import com.yihu.jw.entity.IdEntity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
/**
@ -12,6 +13,7 @@ import javax.persistence.Table;
 */
@Entity
@Table(name = "ys_device")
@SequenceGenerator(name="id_generated", sequenceName="seq_ys_device")
public class YsDeviceDo extends IdEntity {
    private String deviceSn;

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

@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonFormat;
import com.yihu.jw.entity.IdEntity;
import javax.persistence.Entity;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Transient;
import javax.xml.crypto.Data;
@ -14,6 +15,7 @@ import java.util.Date;
 */
@Entity
@Table(name="base_emergency_warn_log")
@SequenceGenerator(name="id_generated", sequenceName="seq_base_emergency_warn_log")
public class BaseEmergencyWarnLogDO extends IdEntity {
    public String orderId;

+ 17 - 0
gateway/ag-basic/src/main/java/com/yihu/jw/gateway/config/MultipartConfig.java

@ -1,5 +1,8 @@
package com.yihu.jw.gateway.config;
import com.yihu.jw.gateway.filter.CsrfFilter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.MultipartConfigFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@ -12,6 +15,10 @@ import java.io.*;
@Configuration
public class MultipartConfig {
    @Autowired
    CsrfFilter csrfFilter;
    @Bean
    MultipartConfigElement multipartConfigElement() {
        MultipartConfigFactory factory = new MultipartConfigFactory();
@ -24,4 +31,14 @@ public class MultipartConfig {
        return factory.createMultipartConfig();
    }
    @Bean
    public FilterRegistrationBean testFilterRegistration4() {
        FilterRegistrationBean registration = new FilterRegistrationBean();
        registration.setFilter(csrfFilter);
        registration.addUrlPatterns("/*");
        registration.setName("CsrfFilter");
        registration.setOrder(3);
        return registration;
    }
}

+ 127 - 7
gateway/ag-basic/src/main/java/com/yihu/jw/gateway/filter/BasicZuulFilter.java

@ -33,6 +33,8 @@ import org.springframework.web.multipart.commons.CommonsMultipartResolver;
import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServletRequest;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.net.URLEncoder;
@ -125,8 +127,6 @@ public class BasicZuulFilter extends ZuulFilter {
        //保存操作日志
        baseMethodLogService.saveMethodLog(request);
        //内部微服务有不需要认证的地址请在URL上追加/open/来进行过滤,如/api/v1.0/open/**,不要在此继续追加!!!
        if (url.contains("/auth/")//验证服务
                || url.contains("/authgw/")//验证服务
@ -157,14 +157,16 @@ public class BasicZuulFilter extends ZuulFilter {
            Map<String, List<String>> map = ctx.getRequestQueryParams();
            String aes_decodedStr = AesEncryptUtils.decrypt(map.get("object").toString());
            JSONObject object = JSONObject.parseObject(aes_decodedStr);
            for(String str:object.keySet()){
                List<String> arrayList = new ArrayList<>();
                String value = object.getString(str);
            if(object!=null){
                for(String str:object.keySet()){
                    List<String> arrayList = new ArrayList<>();
                    String value = object.getString(str);
              /*  if (sqlValidate(value)){
                    throw new Exception("Illegal parameter");
                }*/
                arrayList.add(value);
                map.put(str,arrayList);
                    arrayList.add(value);
                    map.put(str,arrayList);
                }
            }
            map.remove("object");
            ctx.setRequestQueryParams(map);
@ -437,4 +439,122 @@ public class BasicZuulFilter extends ZuulFilter {
        }flag=false;
        return flag;
    }
    public final static Map<String, String> FILE_TYPE_MAP = new HashMap<String, String>();
    static {
            getAllFileType(); // 初始化文件类型信息
       }
    /**
      * 常用文件格式,不能上传的文件类型
      */
     private static void getAllFileType() {
//         FILE_TYPE_MAP.put("ffd8ffe000104a464946", "jpg"); // JPEG (jpg)
//         FILE_TYPE_MAP.put("89504e470d0a1a0a0000", "png"); // PNG (png)
//         FILE_TYPE_MAP.put("47494638396126026f01", "gif"); // GIF (gif)
//         FILE_TYPE_MAP.put("49492a00227105008037", "tif"); // TIFF (tif)
//         FILE_TYPE_MAP.put("424d228c010000000000", "bmp"); // 16色位图(bmp)
//         FILE_TYPE_MAP.put("424d8240090000000000", "bmp"); // 24位位图(bmp)
//         FILE_TYPE_MAP.put("424d8e1b030000000000", "bmp"); // 256色位图(bmp)
         FILE_TYPE_MAP.put("41433130313500000000", "dwg"); // CAD (dwg)
         FILE_TYPE_MAP.put("3c21444f435459504520", "html"); // HTML (html)
         FILE_TYPE_MAP.put("3c21646f637479706520", "htm"); // HTM (htm)
         FILE_TYPE_MAP.put("48544d4c207b0d0a0942", "css"); // css
         FILE_TYPE_MAP.put("696b2e71623d696b2e71", "js"); // js
//         FILE_TYPE_MAP.put("7b5c727466315c616e73", "rtf"); // Rich Text Format (rtf)
//         FILE_TYPE_MAP.put("38425053000100000000", "psd"); // Photoshop (psd)
//         FILE_TYPE_MAP.put("46726f6d3a203d3f6762", "eml"); // Email [Outlook Express 6] (eml)
//         FILE_TYPE_MAP.put("d0cf11e0a1b11ae10000", "doc"); // MS Excel 注意:word、msi 和 excel的文件头一样
//         FILE_TYPE_MAP.put("d0cf11e0a1b11ae10000", "vsd"); // Visio 绘图
//         FILE_TYPE_MAP.put("5374616E64617264204A", "mdb"); // MS Access (mdb)
//         FILE_TYPE_MAP.put("252150532D41646F6265", "ps");
//         FILE_TYPE_MAP.put("255044462d312e350d0a", "pdf"); // Adobe Acrobat (pdf)
//         FILE_TYPE_MAP.put("2e524d46000000120001", "rmvb"); // rmvb/rm相同
//         FILE_TYPE_MAP.put("464c5601050000000900", "flv"); // flv与f4v相同
//         FILE_TYPE_MAP.put("00000020667479706d70", "mp4");
//         FILE_TYPE_MAP.put("49443303000000002176", "mp3");
//         FILE_TYPE_MAP.put("000001ba210001000180", "mpg"); //
//         FILE_TYPE_MAP.put("3026b2758e66cf11a6d9", "wmv"); // wmv与asf相同
//         FILE_TYPE_MAP.put("52494646e27807005741", "wav"); // Wave (wav)
//         FILE_TYPE_MAP.put("52494646d07d60074156", "avi");
//         FILE_TYPE_MAP.put("4d546864000000060001", "mid"); // MIDI (mid)
//         FILE_TYPE_MAP.put("504b0304140000000800", "zip");
//         FILE_TYPE_MAP.put("526172211a0700cf9073", "rar");
//         FILE_TYPE_MAP.put("235468697320636f6e66", "ini");
         FILE_TYPE_MAP.put("504b03040a0000000000", "jar");
         FILE_TYPE_MAP.put("4d5a9000030000000400", "exe");// 可执行文件
         FILE_TYPE_MAP.put("3c25402070616765206c", "jsp");// jsp文件
         FILE_TYPE_MAP.put("4d616e69666573742d56", "mf");// MF文件
         FILE_TYPE_MAP.put("3c3f786d6c2076657273", "xml");// xml文件
         FILE_TYPE_MAP.put("494e5345525420494e54", "sql");// xml文件
         FILE_TYPE_MAP.put("7061636b616765207765", "java");// java文件
         FILE_TYPE_MAP.put("406563686f206f66660d", "bat");// bat文件
         FILE_TYPE_MAP.put("1f8b0800000000000000", "gz");// gz文件
         FILE_TYPE_MAP.put("6c6f67346a2e726f6f74", "properties");// bat文件
         FILE_TYPE_MAP.put("cafebabe0000002e0041", "class");// bat文件
         FILE_TYPE_MAP.put("49545346030000006000", "chm");// bat文件
         FILE_TYPE_MAP.put("04000000010000001300", "mxp");// bat文件
//         FILE_TYPE_MAP.put("504b0304140006000800", "docx");// docx文件
         FILE_TYPE_MAP.put("d0cf11e0a1b11ae10000", "wps");// WPS文字wps、表格et、演示dps都是一样的
         FILE_TYPE_MAP.put("6431303a637265617465", "torrent");
//         FILE_TYPE_MAP.put("6D6F6F76", "mov"); // Quicktime (mov)
//         FILE_TYPE_MAP.put("FF575043", "wpd"); // WordPerfect (wpd)
//         FILE_TYPE_MAP.put("CFAD12FEC5FD746F", "dbx"); // Outlook Express (dbx)
//         FILE_TYPE_MAP.put("2142444E", "pst"); // Outlook (pst)
//         FILE_TYPE_MAP.put("AC9EBD8F", "qdf"); // Quicken (qdf)
//         FILE_TYPE_MAP.put("E3828596", "pwl"); // Windows Password (pwl)
//         FILE_TYPE_MAP.put("2E7261FD", "ram"); // Real Audio (ram)
//         FILE_TYPE_MAP.put("null", null); // null
     }
    /**
     * 文件头比较
     * @param filePaht
     * @return
     */
    public static String getFileType(String filePaht) {
        String res = null;
        try {
            FileInputStream is = new FileInputStream(filePaht);
            byte[] b = new byte[10];
            is.read(b, 0, b.length);
            String fileCode = bytesToHexString(b);
            Iterator<String> keyIter = FILE_TYPE_MAP.keySet().iterator();
            while (keyIter.hasNext()) {
            String key = keyIter.next();
            // 验证前5个字符比较
            if (key.toLowerCase().startsWith(fileCode.toLowerCase().substring(0, 5))
                    || fileCode.toLowerCase().substring(0, 5).startsWith(key.toLowerCase())) {
                    res = FILE_TYPE_MAP.get(key);
                    break;
                }
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return res;
    }
    /**
      * 得到上传文件的文件头
      * @param src
      * @return
     */
    public static String bytesToHexString(byte[] src) {
        StringBuilder stringBuilder = new StringBuilder();
        if (src == null || src.length <= 0) {
            return null;
        }
        for (int i = 0; i < src.length; i++) {
            int v = src[i] & 0xFF;
            String hv = Integer.toHexString(v);
            if (hv.length() < 2) {
                stringBuilder.append(0);
             }
            stringBuilder.append(hv);
        }
        return stringBuilder.toString();
    }
}

+ 122 - 0
gateway/ag-basic/src/main/java/com/yihu/jw/gateway/filter/CsrfFilter.java

@ -0,0 +1,122 @@
package com.yihu.jw.gateway.filter;
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.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.MalformedURLException;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
 * Created by yeshijie on 2022/3/15.
 */
@Component
public class CsrfFilter implements Filter {
    @Autowired
    private StringRedisTemplate redisTemplate;
    private Logger log = LoggerFactory.getLogger(CsrfFilter.class);
    /**
     * 过滤器配置对象
     */
    FilterConfig filterConfig = null;
    private boolean getEnable(){
        String strEnable = redisTemplate.opsForValue().get("security:csrf:enable");
        if(StringUtils.isNotBlank(strEnable)){
            return "1".equals(strEnable);
        }
        redisTemplate.opsForValue().set("security:csrf:enable","0");
        return false;
    }
    /**
     * 忽略的URL
     */
    private List<String> excludes = new ArrayList<>();
    public void setExcludes(List<String> excludes) {
        this.excludes = excludes;
    }
    /**
     * 初始化
     */
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        this.filterConfig = filterConfig;
    }
    /**
     * 拦截
     */
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)
            throws IOException, ServletException {
        HttpServletRequest request = (HttpServletRequest) servletRequest;
        HttpServletResponse response = (HttpServletResponse) servletResponse;
        String referer = request.getHeader("Referer");
        String host = request.getServerName();
        // 不启用或者已忽略的URL不拦截
        if(!getEnable() ||referer == null||referer.indexOf("http://ehr.yihu.com")==0
                ||referer.indexOf("https://zhyzh.gongshu.gov.cn")==0
                ||referer.indexOf("27.154.233.186")>0
                ||referer.indexOf(host)>0){
            filterChain.doFilter(servletRequest, servletResponse);
            return;
        }
        java.net.URL url = null;
        try {
            url = new java.net.URL(referer);
        } catch (MalformedURLException e) {
            // URL解析异常,也置为404
            response.setStatus(HttpServletResponse.SC_NOT_FOUND);
            return;
        }
        // 判断是否存在外链请求本站
        if (!host.equals(url.getHost())) {
            log.error("CSRF过滤器 => 服务器:{} => 当前域名:{}", host, referer);
            servletResponse.setContentType("text/html; charset=utf-8");
            servletResponse.getWriter().write("系统不支持当前域名的访问!");
        } else {
            filterChain.doFilter(servletRequest, servletResponse);
        }
    }
    /**
     * 销毁
     */
    @Override
    public void destroy() {
        this.filterConfig = null;
    }
    /**
     * 判断是否为忽略的URL
     *
     * @param url URL路径
     * @return true-忽略,false-过滤
     */
    private boolean isExcludeUrl(String url) {
        if (excludes == null || excludes.isEmpty()) {
            return false;
        }
        return excludes.stream().map(pattern -> Pattern.compile("^" + pattern)).map(p -> p.matcher(url))
                .anyMatch(Matcher::find);
    }
}

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

@ -116,6 +116,11 @@ endpoints:
  heapdump:
    enabled: false
# 信息安全
security:
  csrf:
    enable: true
#---
#spring:
#  profiles: jwdev

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

@ -331,8 +331,7 @@ public class WlyyLoginEndpoint extends AbstractEndpoint {
        /*如果是移动端登陆则移除之前的token,
        在网关处通过HTTP状态码告知前端是过期(402)还是账号在别处登陆(403),
        实现同一账号只能在一处登陆*/
           /* if("1".equals(kickEachOther)){
                logger.info("");
            if("1".equals(kickEachOther)){
                HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
                if (request.getHeader("login-device") != null && (request.getHeader("login-device").equalsIgnoreCase("mobile")||request.getHeader("login-device").equalsIgnoreCase("pc"))) {
                    if (tokenStore.readAccessToken(token.getValue())!=null){
@ -345,7 +344,7 @@ public class WlyyLoginEndpoint extends AbstractEndpoint {
                if (token == null) {
                    throw new UnsupportedGrantTypeException("Unsupported grant type: " + tokenRequest.getGrantType());
                }
            }*/
            }
            WlyyUserSimple wlyyUserSimple = userDetailsService.authSuccess(parameters.get("username"));
            if ("pad".equals(parameters.get("clientType"))&&!("1".equals(wlyyUserSimple.getArchiveType())) ){//医养平板端登录限制
@ -391,16 +390,17 @@ public class WlyyLoginEndpoint extends AbstractEndpoint {
            baseLoginLogDO.setLoginType(loginType);
            baseLoginLogDO.setName(wlyyUserSimple.getName());
            baseLoginLogDO.setClientType(clientType);
            baseLoginLogDO.setToken(token.getValue());
            baseLoginLogService.save(baseLoginLogDO);
            logger.info("login:登录进入10");
                  /*  //个推 clientId
                    String clientId = parameters.get("getuiClientId");
                    String getuiClientType = parameters.get("getuiClientType");
                    String padImei = parameters.get("padImei");
                    //客户端类型 app,wx,pad,pc
                    userDetailsService.updateInfo(clientId,getuiClientType,padImei,loginType,wlyyUserSimple.getId(),baseLoginLogDO);
            */
            //个推 clientId
            String clientId = parameters.get("getuiClientId");
            String getuiClientType = parameters.get("getuiClientType");
            String padImei = parameters.get("padImei");
            //客户端类型 app,wx,pad,pc
            userDetailsService.updateInfo(clientId,getuiClientType,padImei,loginType,wlyyUserSimple.getId(),baseLoginLogDO);
            return getResponse(wlyyUserSimple);
        }catch (Exception e){
            e.printStackTrace();

+ 11 - 0
server/svr-authentication/src/main/java/com/yihu/jw/security/service/RegisterService.java

@ -17,6 +17,7 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -47,6 +48,8 @@ public class RegisterService {
    private StringRedisTemplate redisTemplate;
    @Value("${wechat.id}")
    private String wechatId;
    @Autowired
    private JdbcTemplate jdbcTemplate;
    @Autowired
    private YkyyService ykyyService;
@ -149,6 +152,14 @@ public class RegisterService {
            if(StringUtils.isNoneBlank(openid)){
                patient.setOpenid(openid);
            }
            if("hz_yyyzh_wx".equalsIgnoreCase(wechatId)){//杭州医养头像初始化
                if(StringUtils.isBlank(patient.getPhoto())){
                    String sql = " select dict_value from wlyy_hospital_sys_dict where dict_name='hz_default_avatar' and dict_code='jiashunan' ";
                    String hzPhoto = jdbcTemplate.queryForObject(sql,String.class);
                    patient.setPhoto(hzPhoto);
                }
            }
            BasePatientDO temp = basePatientDao.save(patient);
            PatientMedicareCardDO medicareCardDO = new PatientMedicareCardDO();

+ 29 - 0
svr/svr-base/src/main/java/com/yihu/jw/base/service/doctor/BaseDoctorService.java

@ -40,6 +40,7 @@ import com.yihu.jw.hospital.prescription.service.entrance.EntranceService;
import com.yihu.jw.hospital.prescription.service.entrance.XzzxEntranceService;
import com.yihu.jw.hospital.prescription.service.entrance.YkyyEntranceService;
import com.yihu.jw.org.dao.BaseOrgDao;
import com.yihu.jw.patient.service.BasePatientService;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.MixEnvelop;
import com.yihu.jw.util.common.IdCardUtil;
@ -142,6 +143,8 @@ public class BaseDoctorService extends BaseJpaService<BaseDoctorDO, BaseDoctorDa
    private WlyyHospitalSysDictDao wlyyHospitalSysDictDao;
    @Autowired
    private BaseTeamDao baseTeamDao;
    @Autowired
    private BasePatientService basePatientService;
    /**
@ -473,6 +476,19 @@ public class BaseDoctorService extends BaseJpaService<BaseDoctorDO, BaseDoctorDa
                baseDoctorvo.setChargeType("12");
                baseDoctorvo.setBirthday(IdCardUtil.getBirthdayForIdcard(baseDoctorvo.getIdcard()));
                baseDoctorvo.setPassword(MD5.md5Hex(baseDoctorvo.getIdcard().substring(12, 18) + "{" + baseDoctorvo.getSalt() + "}"));
                if("hz_yyyzh_wx".equalsIgnoreCase(wxId)){//杭州医养头像初始化
                  if (org.apache.commons.lang3.StringUtils.isBlank(baseDoctorvo.getPhoto())){
                      String hzPhoto= basePatientService.getHzAvatar(2,baseDoctorvo.getLevel()+"",null,null==baseDoctorvo.getSex()?"":baseDoctorvo.getSex()+"",baseDoctorvo.getIdcard());
                      baseDoctorvo.setPhoto(hzPhoto);
                  }else{
                      String sql = " select count(id) from wlyy_hospital_sys_dict where dict_name='hz_default_avatar' and dict_value='"+baseDoctorvo.getPhoto()+"' ";
                      Integer defaultAvatar =  jdbcTemplate.queryForObject(sql,Integer.class);
                      if (defaultAvatar>0){
                          String hzPhoto= basePatientService.getHzAvatar(2,baseDoctorvo.getLevel()+"",null,null==baseDoctorvo.getSex()?"":baseDoctorvo.getSex()+"",baseDoctorvo.getIdcard());
                          baseDoctorvo.setPhoto(hzPhoto);
                      }
                  }
                }
                baseDoctorDO = baseDoctorDao.save(baseDoctorvo);
                if ("xm_zsyy_wx".equalsIgnoreCase(wxId)){
@ -668,6 +684,19 @@ public class BaseDoctorService extends BaseJpaService<BaseDoctorDO, BaseDoctorDa
            result.put("response",ConstantUtils.FAIL);
            return result.toJSONString();
        }
        if("hz_yyyzh_wx".equalsIgnoreCase(wxId)){//杭州医养头像初始化
            if (org.apache.commons.lang3.StringUtils.isBlank(baseDoctorDO.getPhoto())){
                String hzPhoto= basePatientService.getHzAvatar(2,baseDoctorDO.getLevel()+"",null,null==baseDoctorDO.getSex()?"":baseDoctorDO.getSex()+"",baseDoctorDO.getIdcard());
                baseDoctorDO.setPhoto(hzPhoto);
            }else{
                String sql = " select count(id) from wlyy_hospital_sys_dict where dict_name='hz_default_avatar' and dict_value='"+baseDoctorDO.getPhoto()+"' ";
                Integer defaultAvatar =  jdbcTemplate.queryForObject(sql,Integer.class);
                if (defaultAvatar>0){
                    String hzPhoto= basePatientService.getHzAvatar(2,baseDoctorDO.getLevel()+"",null,null==baseDoctorDO.getSex()?"":baseDoctorDO.getSex()+"",baseDoctorDO.getIdcard());
                    baseDoctorDO.setPhoto(hzPhoto);
                }
            }
        }
        this.save(baseDoctorDO);
        DoctorMappingDO doctorMappingDO = null;
        if (!StringUtils.isEmpty(doctorMappingCode)){

+ 11 - 4
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/config/MvcConfig.java

@ -1,7 +1,7 @@
package com.yihu.jw.care.config;
import com.tencentcloudapi.cdn.v20180606.models.UserAgentFilter;
import com.yihu.jw.care.interceptors.CrosXssFilter;
import com.yihu.jw.care.interceptors.GateWayInterceptor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -9,9 +9,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
/**
@ -32,9 +30,18 @@ public class MvcConfig extends WebMvcConfigurerAdapter {
//         excludePathPatterns 用户排除拦截 ,/third/juye/kit/**
        registry.addInterceptor(gateWayInterceptor).addPathPatterns("/open/gc/**").excludePathPatterns(
                "/open/gc/accesstoken");
        super.addInterceptors(registry);
        logger.info("init gateWayInterceptor");
    }
    @Bean
    public FilterRegistrationBean testFilterRegistration() {
        FilterRegistrationBean registration = new FilterRegistrationBean();
        registration.setFilter(new CrosXssFilter());
        registration.addUrlPatterns("/*");
        registration.setName("CrosXssFilter");
        registration.setOrder(1);
        return registration;
    }
}

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

@ -0,0 +1,21 @@
package com.yihu.jw.care.dao.common;
import com.yihu.jw.entity.base.login.BaseLoginLogDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
public interface BaseLoginLogDao extends PagingAndSortingRepository<BaseLoginLogDO, String>, JpaSpecificationExecutor<BaseLoginLogDO> {
    @Query("from BaseLoginLogDO l where l.openid=?1 order by l.createTime desc")
    List<BaseLoginLogDO> findByOpenId(String openid);
    @Query("from BaseLoginLogDO l where l.userId=?1 order by l.createTime desc")
    List<BaseLoginLogDO> findByUserId(String openid);
    @Query(value = "SELECT a.* from base_login_log a WHERE a.token=?1 ORDER BY a.create_time desc LIMIT 1",nativeQuery = true)
    BaseLoginLogDO findByToken(String token);
}

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

@ -2,6 +2,7 @@ package com.yihu.jw.care.endpoint.admin;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.care.dao.label.BaseCapacityLabelDao;
import com.yihu.jw.care.service.common.CommomService;
import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.entity.care.label.BaseCapacityLabelDO;
import com.yihu.jw.patient.dao.BasePatientDao;
@ -15,6 +16,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.data.redis.core.StringRedisTemplate;
import org.springframework.http.MediaType;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.web.bind.annotation.GetMapping;
@ -35,13 +37,37 @@ public class CommonEndpoint extends EnvelopRestEndpoint {
    private static final Logger logger = LoggerFactory.getLogger(CommonEndpoint.class);
    @Autowired
    private JdbcTemplate jdbcTemplate;
    @Autowired
    private BaseCapacityLabelDao baseCapacityLabelDao;
    @Autowired
    private BasePatientDao patientDao;
    @Autowired
    private StringRedisTemplate redisTemplate;
    @Autowired
    private CommomService commomService;
    @GetMapping(value = "open/health")
    @ApiOperation(value = "测试应用是否可用")
    public Envelop health() {
        try {
            return success("查询成功");
        } catch (Exception e) {
            return failedException2(e);
        }
    }
    @GetMapping(value = "open/setRedisEnable")
    @ApiOperation(value = "设置是否开启拦截security:csrf:enable 1拦截")
    public Envelop setRedisEnable(String str) {
        try {
            redisTemplate.opsForValue().set("security:csrf:enable",str);
            return success("导入成功");
        } catch (Exception e) {
            return failedException2(e);
        }
    }
    @GetMapping(value = "open/importCapLabel")
    @ApiOperation(value = "导入居民能力状况")
@ -120,4 +146,15 @@ public class CommonEndpoint extends EnvelopRestEndpoint {
    }
    @GetMapping(value = "open/WXtempleateSendTest")
    @ApiOperation(value = "微信模板消息推送")
    public Envelop setRedisEnable() {
        try {
            commomService.WXtempleateSendTest();
            return success("success");
        } catch (Exception e) {
            return failedException2(e);
        }
    }
}

+ 8 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/apply/PatientBedApplyEndPoint.java

@ -3,6 +3,7 @@ package com.yihu.jw.care.endpoint.apply;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.care.aop.ObserverRequired;
import com.yihu.jw.care.service.apply.PatientBedApplyService;
import com.yihu.jw.care.service.common.PermissionService;
import com.yihu.jw.restmodel.ResponseContant;
import com.yihu.jw.restmodel.web.ListEnvelop;
import com.yihu.jw.restmodel.web.ObjEnvelop;
@ -23,6 +24,8 @@ public class PatientBedApplyEndPoint extends EnvelopRestEndpoint {
    @Autowired
    private PatientBedApplyService patientBedApplyService;
    @Autowired
    private PermissionService permissionService;
    @PostMapping("/apply")
    @ApiOperation("居民申请机构床位")
@ -47,6 +50,11 @@ public class PatientBedApplyEndPoint extends EnvelopRestEndpoint {
    public ListEnvelop getApplyList(@ApiParam(name = "doctor", value = "doctor", required = true)
                                    @RequestParam(value = "doctor") String doctor) {
        try {
            JSONObject param = new JSONObject();
            param.put("doctorId",doctor);
            if(permissionService.noPermission(1,param)){
                return ListEnvelop.getError("该操作没有权限");
            }
            return ListEnvelop.getSuccess("查询成功", patientBedApplyService.getApplyList(doctor));
        } catch (Exception e) {
            return failedListEnvelopException2(e);

+ 53 - 7
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.common.PermissionService;
import com.yihu.jw.care.service.security.SecurityMonitoringOrderService;
import com.yihu.jw.restmodel.ResponseContant;
import com.yihu.jw.restmodel.web.ListEnvelop;
@ -28,6 +29,8 @@ public class EmergencyAssistanceEndpoint extends EnvelopRestEndpoint {
    private EmergencyAssistanceService assistanceService;
    @Autowired
    private SecurityMonitoringOrderService securityMonitoringOrderService;
    @Autowired
    private PermissionService permissionService;
    @PostMapping(value = "newOrder")
    @ApiOperation(value = "居民发起新的紧急救助")
@ -59,6 +62,11 @@ public class EmergencyAssistanceEndpoint extends EnvelopRestEndpoint {
                                     @RequestParam(value = "doctor") String doctor
    ){
        try {
            JSONObject param = new JSONObject();
            param.put("doctorId",doctor);
            if(permissionService.noPermission(1,param)){
                return ObjEnvelop.getError("该操作没有权限");
            }
            JSONObject result = assistanceService.doctorGetOrderDetail(orderId,doctor);
            if (result.getIntValue(ResponseContant.resultFlag) == ResponseContant.fail) {
                return ObjEnvelop.getError(result.getString(ResponseContant.resultMsg));
@ -102,6 +110,13 @@ public class EmergencyAssistanceEndpoint extends EnvelopRestEndpoint {
            if (StringUtils.isNotBlank(patient)&&StringUtils.isNotBlank(doctor)){
                return ObjEnvelop.getError("请求参数错误");
            }
            if(StringUtils.isNotBlank(doctor)){
                JSONObject param = new JSONObject();
                param.put("doctorId",doctor);
                if(permissionService.noPermission(1,param)){
                    return ObjEnvelop.getError("该操作没有权限");
                }
            }
            JSONObject result = assistanceService.getTabStatusCounts(patient,doctor);
            if (result.getIntValue(ResponseContant.resultFlag) == ResponseContant.fail) {
                return ObjEnvelop.getError(result.getString(ResponseContant.resultMsg));
@ -147,6 +162,13 @@ public class EmergencyAssistanceEndpoint extends EnvelopRestEndpoint {
            if (StringUtils.isBlank(patientId)&&StringUtils.isBlank(doctor)){
                return ListEnvelop.getError("请求参数错误");
            }
            if(StringUtils.isNotBlank(doctor)){
                JSONObject param = new JSONObject();
                param.put("doctorId",doctor);
                if(permissionService.noPermission(1,param)){
                    return ListEnvelop.getError("该操作没有权限");
                }
            }
            return ListEnvelop.getSuccess( "查询成功",assistanceService.getOrderList(patientId,patientName,doctor,status,page,pageSize,"desc"));
        }catch (Exception e){
            return failedListEnvelopException2(e);
@ -169,6 +191,13 @@ public class EmergencyAssistanceEndpoint extends EnvelopRestEndpoint {
            if (StringUtils.isBlank(patientId)&&StringUtils.isBlank(doctor)){
                return ListEnvelop.getError("请求参数错误");
            }
            if(StringUtils.isNotBlank(doctor)){
                JSONObject param = new JSONObject();
                param.put("doctorId",doctor);
                if(permissionService.noPermission(1,param)){
                    return ListEnvelop.getError("该操作没有权限");
                }
            }
            return ListEnvelop.getSuccess( "查询成功",assistanceService.doctorGetOrderList(patientId,doctor,"1",page,pageSize,"asc"));
        }catch (Exception e){
            return failedListEnvelopException2(e);
@ -207,7 +236,8 @@ public class EmergencyAssistanceEndpoint extends EnvelopRestEndpoint {
                                       @ApiParam(value = "服务小结", name = "conclusion_img")
                                       @RequestParam(value = "conclusion_img", required = false) String conclusion_img){
        try {
            JSONObject result = assistanceService.updateConclusion(emergency_reason,treatment_status, orderId,conclusion,conclusion_img,getUID());
            String uid = permissionService.getUID();
            JSONObject result = assistanceService.updateConclusion(emergency_reason,treatment_status, orderId,conclusion,conclusion_img,uid);
            if (result.getIntValue(ResponseContant.resultFlag) == ResponseContant.fail) {
                return ObjEnvelop.getError(result.getString(ResponseContant.resultMsg));
            }
@ -231,6 +261,11 @@ public class EmergencyAssistanceEndpoint extends EnvelopRestEndpoint {
                                       @ApiParam(name="doctorLon",value = "医生当前定位经度")
                                       @RequestParam(value = "doctorLon") String doctorLon){
        try {
            JSONObject param = new JSONObject();
            param.put("doctorId",doctor);
            if(permissionService.noPermission(1,param)){
                return ObjEnvelop.getError("该操作没有权限");
            }
            JSONObject result = assistanceService.updateDoctorLocation(doctor,orderId,doctorAddress,doctorLat,doctorLon);
            if (result.getIntValue(ResponseContant.resultFlag) == ResponseContant.fail) {
                return ObjEnvelop.getError(result.getString(ResponseContant.resultMsg));
@ -293,6 +328,11 @@ public class EmergencyAssistanceEndpoint extends EnvelopRestEndpoint {
            @ApiParam(value = "doctor", name = "doctor")
            @RequestParam(value = "doctor", required = false) String doctor) {
        try {
            JSONObject param = new JSONObject();
            param.put("doctorId",doctor);
            if(permissionService.noPermission(1,param)){
                return ObjEnvelop.getError("该操作没有权限");
            }
            JSONObject result = assistanceService.responseOrder(orderId, doctor);
            if (result.getIntValue("resultFlag") == 0) {
                return ObjEnvelop.getError(result.getString("resultMsg"));
@ -312,7 +352,8 @@ public class EmergencyAssistanceEndpoint extends EnvelopRestEndpoint {
                                   @ApiParam(value = "误报警类型 字典emergency_cancel的code", name = "emergencyCancel", required = true)
                                   @RequestParam(value = "emergencyCancel", defaultValue = "4") Integer emergencyCancel){
        try {
            JSONObject result = assistanceService.errorWarning(orderId,emergencyCancel,getUID());
            String uid = permissionService.getUID();
            JSONObject result = assistanceService.errorWarning(orderId,emergencyCancel,uid);
            if (result.getIntValue("resultFlag") == 0) {
                return ObjEnvelop.getError(result.getString("resultMsg"));
            }
@ -331,6 +372,11 @@ public class EmergencyAssistanceEndpoint extends EnvelopRestEndpoint {
            @ApiParam(name="message",value = "发送内容")@RequestParam(value = "message")String message,
            @ApiParam(name="session_id",value = "im会话对应id")@RequestParam(value = "session_id")String session_id){
        try {
            JSONObject param = new JSONObject();
            param.put("doctorId",doctor);
            if(permissionService.noPermission(1,param)){
                return ObjEnvelop.getError("该操作没有权限");
            }
            return ObjEnvelop.getSuccess("success",assistanceService.doctorSendMessageLog(doctor,type,session_id,message));
        }catch (Exception e){
            return failedObjEnvelopException2(e);
@ -371,12 +417,12 @@ public class EmergencyAssistanceEndpoint extends EnvelopRestEndpoint {
    @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){
    public ObjEnvelop getEmeAndSecuOrderTab(@ApiParam(name="doctor",value = "查看医生")
                                            @RequestParam(value = "doctor",required = true) String doctor,
                                            @ApiParam(name="status",value = "工单状态")
                                            @RequestParam(value = "status",required =false) String status){
        try {
            return ObjEnvelop.getSuccess( "查询成功",assistanceService.getEmeAndSecuOrderTab(orderType,doctor));
            return ObjEnvelop.getSuccess( "查询成功",assistanceService.getEmeAndSecuOrderTab(doctor,status));
        }catch (Exception e){
            return failedObjEnvelopException2(e);
        }

+ 5 - 2
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/consult/DoctorConsultController.java

@ -1,6 +1,7 @@
package com.yihu.jw.care.endpoint.consult;
import com.yihu.jw.care.aop.ObserverRequired;
import com.yihu.jw.care.service.common.PermissionService;
import com.yihu.jw.care.service.consult.ConsultTeamService;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
@ -24,6 +25,8 @@ public class DoctorConsultController extends EnvelopRestEndpoint {
    @Autowired
    private ConsultTeamService consultTeamService;
    @Autowired
    private PermissionService permissionService;
    /**
     * 结束咨询接口
@ -35,8 +38,8 @@ public class DoctorConsultController extends EnvelopRestEndpoint {
    @ObserverRequired
    public Envelop finishConsult(@RequestParam(required = false) String consult) {
        try {
            int flag = consultTeamService.finishConsult(consult, getUID(), 2);
//            int flag = consultTeamService.finishConsult(consult, "admin", 2);
            String uid = permissionService.getUID();
            int flag = consultTeamService.finishConsult(consult, uid, 2);
            if (flag > 0) {
                return success("咨询已关闭");
            } else if(flag == -1) {

+ 28 - 1
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/consult/DoctorConsultEndpoint.java

@ -2,16 +2,19 @@ package com.yihu.jw.care.endpoint.consult;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.care.aop.ObserverRequired;
import com.yihu.jw.care.service.common.PermissionService;
import com.yihu.jw.care.service.consult.ConsultService;
import com.yihu.jw.doctor.dao.BaseDoctorDao;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
import com.yihu.jw.im.service.ImService;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.ObjEnvelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import com.yihu.jw.rm.hospital.BaseHospitalRequestMapping;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@ -41,6 +44,8 @@ public class DoctorConsultEndpoint extends EnvelopRestEndpoint {
    private BaseDoctorDao baseDoctorDao;
    @Autowired
    private ImService imService;
    @Autowired
    private PermissionService permissionService;
    @PostMapping(value = "finish")
    @ApiOperation(value = "医生结束咨询", notes = "医生结束咨询")
@ -51,6 +56,12 @@ public class DoctorConsultEndpoint extends EnvelopRestEndpoint {
            @ApiParam(name = "doctorCode", value = "医生COEE")
            @RequestParam(value = "doctorCode",required = true) String doctorCode) {
        try {
            JSONObject param = new JSONObject();
            param.put("doctorId",doctorCode);
            if(permissionService.noPermission(1,param)){
                return Envelop.getError("该操作没有权限");
            }
            int resutl = consultService.finish(consult,doctorCode,2);
            BaseDoctorDO baseDoctorDO = baseDoctorDao.findById(doctorCode);
            JSONObject msgObj = new JSONObject();
@ -60,8 +71,10 @@ public class DoctorConsultEndpoint extends EnvelopRestEndpoint {
            if(1 == resutl){
                jsonStr = "{\"id\":\""+ UUID.randomUUID().toString()+"\",\"sender_id\":\""+doctorCode+"\",\"sender_name\":\"系统\",\"timestamp\":"+System.currentTimeMillis()+",\"content_type\":7,\"content\":"+msgObj.toString()+",\"business_type\":1}";
                return success(jsonStr);
            }else {
                return Envelop.getError("关闭失败");
            }
            return success(jsonStr);
        }catch (Exception e){
           return failedException2(e);
        }
@ -108,6 +121,14 @@ public class DoctorConsultEndpoint extends EnvelopRestEndpoint {
    ){
        try {
            if(StringUtils.isNotBlank(doctor)){
                JSONObject param = new JSONObject();
                param.put("doctorId",doctor);
                if(permissionService.noPermission(1,param)){
                    return Envelop.getError("该操作没有权限");
                }
            }
            List<Map<String,Object>>  data = consultService.findConsultRecordByDoctor(doctor, id,type,status, page,pagesize, symptoms,start_time,end_time,name);
            Long total = consultService.countConsultRecordByDoctor(doctor, id,type,symptoms,status,start_time,end_time,name);
@ -122,6 +143,7 @@ public class DoctorConsultEndpoint extends EnvelopRestEndpoint {
    @PostMapping(value = "videoInviteMiniProgram")
    @ApiOperation(value = "医生端:发起/断开 会话小程序视频邀请", notes = "医生端:发起/断开 会话小程序视频邀请")
    @ObserverRequired
    public Envelop videoInviteMiniProgram(@ApiParam(name = "sender_id", value = "发起人")
                                          @RequestParam(value = "sender_id",required = true) String sender_id,
                                          @ApiParam(name = "reciver_id", value = "接收人")
@ -136,6 +158,11 @@ public class DoctorConsultEndpoint extends EnvelopRestEndpoint {
                                          @RequestParam(value = "session_id",required = false) String session_id
    ){
        try{
            JSONObject param = new JSONObject();
            param.put("doctorId",sender_id);
            if(permissionService.noPermission(1,param)){
                return Envelop.getError("该操作没有权限");
            }
            consultService.sendWeTempMesMiniProgram(sender_id,reciver_id,session_id,token,channelName);
            return success("操作成功");
        }catch (Exception e){

+ 13 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/course/DoctorCourseEndpoint.java

@ -2,6 +2,7 @@ package com.yihu.jw.care.endpoint.course;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.care.aop.ObserverRequired;
import com.yihu.jw.care.service.common.PermissionService;
import com.yihu.jw.care.service.course.CourseService;
import com.yihu.jw.entity.care.course.CourseDO;
import com.yihu.jw.restmodel.ResponseContant;
@ -37,6 +38,8 @@ public class DoctorCourseEndpoint extends EnvelopRestEndpoint {
    private String secretId;
    @Value("${tencent.secretKey}")
    private String secretKey;
    @Autowired
    private PermissionService permissionService;
    @GetMapping(value = "myCourseList")
    @ApiOperation(value = "我的课程列表")
@ -46,6 +49,11 @@ public class DoctorCourseEndpoint extends EnvelopRestEndpoint {
            @ApiParam(name = "page", value = "分页大小", required = true, defaultValue = "1") @RequestParam(value = "page") int page,
            @ApiParam(name = "size", value = "页码", required = true, defaultValue = "3") @RequestParam(value = "size") int size) {
        try{
            JSONObject param = new JSONObject();
            param.put("doctorId",doctor);
            if(permissionService.noPermission(1,param)){
                return PageEnvelop.getError("该操作没有权限");
            }
            JSONObject result = courseService.myCourseList(doctor, type, page, size);
            if (result.getIntValue(ResponseContant.resultFlag) == ResponseContant.fail) {
                return PageEnvelop.getError(result.getString(ResponseContant.resultMsg));
@ -76,6 +84,11 @@ public class DoctorCourseEndpoint extends EnvelopRestEndpoint {
            @ApiParam(name = "doctorId", value = "doctorId") @RequestParam(value = "doctorId", required = true) String doctorId,
            @ApiParam(name = "jsonData", value = "jsonData") @RequestParam(value = "jsonData", required = true) String jsonData) {
        try{
            JSONObject param = new JSONObject();
            param.put("doctorId",doctorId);
            if(permissionService.noPermission(1,param)){
                return ObjEnvelop.getError("该操作没有权限");
            }
            JSONObject result = courseService.addCourse(doctorId, jsonData);
            if (result.getIntValue(ResponseContant.resultFlag) == ResponseContant.fail) {
                return ObjEnvelop.getError(result.getString(ResponseContant.resultMsg));

+ 18 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/course/RecruitStudentsEndpoint.java

@ -2,6 +2,7 @@ package com.yihu.jw.care.endpoint.course;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.care.aop.ObserverRequired;
import com.yihu.jw.care.service.common.PermissionService;
import com.yihu.jw.care.service.course.RecruitStudentService;
import com.yihu.jw.restmodel.ResponseContant;
import com.yihu.jw.restmodel.web.Envelop;
@ -30,12 +31,19 @@ public class RecruitStudentsEndpoint extends EnvelopRestEndpoint {
    @Autowired
    private RecruitStudentService recruitStudentService;
    @Autowired
    private PermissionService permissionService;
    @GetMapping(value = "onlineRegisterCount")
    @ApiOperation("在线报名-已报名数量")
    public ObjEnvelop onlineRegisterCount(@ApiParam(name = "doctorId", value = "doctorId")
                                          @RequestParam(value = "doctorId", required = true) String doctorId){
        try {
            JSONObject param = new JSONObject();
            param.put("doctorId",doctorId);
            if(permissionService.noPermission(1,param)){
                return ObjEnvelop.getError("该操作没有权限");
            }
            return ObjEnvelop.getSuccess("查询成功",recruitStudentService.onlineRegisterCount(doctorId));
        }catch (Exception e){
            return failedObjEnvelopException2(e);
@ -50,6 +58,11 @@ public class RecruitStudentsEndpoint extends EnvelopRestEndpoint {
            @ApiParam(name = "page", value = "分页大小", required = true, defaultValue = "1") @RequestParam(value = "page") int page,
            @ApiParam(name = "size", value = "页码", required = true, defaultValue = "15") @RequestParam(value = "size") int size) {
        try {
            JSONObject param = new JSONObject();
            param.put("doctorId",doctorId);
            if(permissionService.noPermission(1,param)){
                return PageEnvelop.getError("该操作没有权限");
            }
            JSONObject result = recruitStudentService.queryInfoList(doctorId, status, page, size);
            if (result.getIntValue(ResponseContant.resultFlag) == ResponseContant.fail) {
                return PageEnvelop.getError(result.getString(ResponseContant.resultMsg), -1);
@ -67,6 +80,11 @@ public class RecruitStudentsEndpoint extends EnvelopRestEndpoint {
            @ApiParam(name = "doctorId", value = "教师id")
            @RequestParam(value = "doctorId", required = true) String doctorId) {
        try {
            JSONObject param = new JSONObject();
            param.put("doctorId",doctorId);
            if(permissionService.noPermission(1,param)){
                return PageEnvelop.getError("该操作没有权限");
            }
            JSONObject result = recruitStudentService.onlineRegisterStatusCount(doctorId);
            if (result.getIntValue(ResponseContant.resultFlag) == ResponseContant.fail) {
                return Envelop.getError(result.getString(ResponseContant.resultMsg),-1);

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

@ -2,6 +2,7 @@ package com.yihu.jw.care.endpoint.device;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.jw.care.aop.ObserverRequired;
import com.yihu.jw.care.endpoint.BaseController;
import com.yihu.jw.care.service.device.DeviceDetailService;
import com.yihu.jw.care.service.device.DeviceService;
@ -34,6 +35,7 @@ public class DeviceController extends BaseController {
     */
    @ApiOperation("清除设备失联状态")
    @RequestMapping(value = "updateContactStatus",method = {RequestMethod.GET,RequestMethod.POST})
    @ObserverRequired
    public String updateContactStatus(@ApiParam(name = "deviceSn", value = "设备sn码")
                                      @RequestParam(value = "deviceSn", required = true) String deviceSn) {
        try {

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

@ -244,6 +244,7 @@ public class PatientDeviceController extends BaseController {
     */
    @ApiOperation("设备删除")
    @RequestMapping(value = "DeletePatientDevice",method = {RequestMethod.GET,RequestMethod.POST})
    @ObserverRequired
    public String delete(@ApiParam(name = "id", value = "删除设备关联ID")
                         @RequestParam(value = "id", required = true) String id) {
        try {
@ -329,6 +330,7 @@ public class PatientDeviceController extends BaseController {
    @ApiOperation("更新智能手环设备安全区域")
    @RequestMapping(value = "updateDeviceFenceArea",method = RequestMethod.GET)
    @ObserverRequired
    public String updateDeviceFenceArea(@ApiParam(name = "patient",value = "患者")
                                        @RequestParam(value = "patient",required = false)String patient,
                                        @ApiParam(name = "deviceSn",value = "设备sn码")
@ -394,6 +396,7 @@ public class PatientDeviceController extends BaseController {
    @ApiOperation("修改心率呼吸率报警阈值")
    @RequestMapping(value = "sleepDeviceEdit",method = RequestMethod.GET)
    @ObserverRequired
    public String sleepDeviceEdit(@ApiParam(name = "deviceSn",value = "睡眠带MAC 去除符号:")
                                        @RequestParam(value = "deviceSn",required = true)String deviceSn,
                                        @ApiParam(name = "heart_check_enable",value = "心率异常检查开关0是关,1是开 ")

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

@ -5,11 +5,15 @@ import com.alibaba.fastjson.serializer.SerializerFeature;
import com.yihu.jw.care.aop.ObserverRequired;
import com.yihu.jw.care.endpoint.BaseController;
import com.yihu.jw.care.service.birthday.BirthdayWishesService;
import com.yihu.jw.care.service.common.PermissionService;
import com.yihu.jw.care.util.MessageUtil;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
import com.yihu.jw.entity.care.birthday.BirthDayWishesToPatient;
import com.yihu.jw.entity.care.birthday.BirthdayWishesTemplate;
import com.yihu.jw.entity.hospital.message.SystemMessageDO;
import com.yihu.jw.hospital.message.dao.SystemMessageDao;
import com.yihu.jw.im.util.ImUtil;
import com.yihu.jw.restmodel.web.ObjEnvelop;
import com.yihu.jw.util.date.DateUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@ -50,6 +54,10 @@ public class DoctorBirthdayWishesEndpoint extends BaseController {
    private SystemMessageDao systemMessageDao;
    @Autowired
    private ImUtil imUtil;
    @Autowired
    private PermissionService permissionService;
    @Value("${demo.flag}")
    private Boolean demoFlag;
    @RequestMapping(value = "/createTemplate", method = RequestMethod.POST)
    @ApiOperation(value = "创建模板")
@ -63,7 +71,8 @@ public class DoctorBirthdayWishesEndpoint extends BaseController {
                                 @ApiParam(name = "isDefault", value = "是否是默认模板")
                                 @RequestParam(required = false) Integer isDefault) {
        try {
            return write(200, "更新成功!", "data", birthdayWishesService.create(getUID(), content, applicableRange, id, isDefault));
            String uid = permissionService.getUID();
            return write(200, "更新成功!", "data", birthdayWishesService.create(uid, content, applicableRange, id, isDefault));
        } catch (Exception e) {
            return errorResult(e);
        }
@ -75,7 +84,12 @@ public class DoctorBirthdayWishesEndpoint extends BaseController {
                                      @RequestParam(required = false) String doctor) {
        try {
            if(StringUtils.isBlank(doctor)){
                doctor = getUID();
                doctor = permissionService.getUID();
            }
            com.alibaba.fastjson.JSONObject param = new com.alibaba.fastjson.JSONObject();
            param.put("doctorId",doctor);
            if(permissionService.noPermission(1,param)){
                return error(-1,"该操作没有权限");
            }
            return write(200, "查询成功!", "data", birthdayWishesService.getTemplateByDoctor(doctor));
        } catch (Exception e) {
@ -88,7 +102,13 @@ public class DoctorBirthdayWishesEndpoint extends BaseController {
    public String getTemplateById(@ApiParam(name = "id", value = "模板id")
                                  @RequestParam(required = true) Long id) {
        try {
            return write(200, "查询成功!", "data", birthdayWishesService.getTemplateById(id));
            String isAdmin = permissionService.isAdmin();
            BirthdayWishesTemplate template = birthdayWishesService.getTemplateById(id);
            if(!"0".equals(isAdmin)&& org.apache.commons.lang.StringUtils.isNotBlank(template.getCreateUser())&&!isAdmin.equals(template.getCreateUser())){
                return error(-1,"没有权限");
            }
            return write(200, "查询成功!", "data", template);
        } catch (Exception e) {
            return errorResult(e);
        }
@ -100,6 +120,12 @@ public class DoctorBirthdayWishesEndpoint extends BaseController {
    public String deleteTemplateById(@ApiParam(name = "id", value = "模板id")
                                     @RequestParam(required = true) Long id) {
        try {
            String isAdmin = permissionService.isAdmin();
            BirthdayWishesTemplate template = birthdayWishesService.getTemplateById(id);
            if(!"0".equals(isAdmin)&&!isAdmin.equals(template.getCreateUser())){
                return error(-1,"没有权限");
            }
            birthdayWishesService.deleteTemplateById(id);
            return write(200, "删除成功!");
        } catch (Exception e) {
@ -114,7 +140,16 @@ public class DoctorBirthdayWishesEndpoint extends BaseController {
            @ApiParam(name = "id", value = "模板ID",required = true)
            @RequestParam Long id) {
        try {
            return write(200, "设置成功!", "data", birthdayWishesService.setDefalutTemplateById(getUID(), id));
            String isAdmin = permissionService.isAdmin();
            BirthdayWishesTemplate template = birthdayWishesService.getTemplateById(id);
            if(!"0".equals(isAdmin)&&!isAdmin.equals(template.getCreateUser())){
                return error(-1,"没有权限");
            }
            String uid = permissionService.getUID();
            return write(200, "设置成功!", "data", birthdayWishesService.setDefalutTemplateById(uid, template));
        } catch (Exception e) {
            return errorResult(e);
        }
@ -124,7 +159,8 @@ public class DoctorBirthdayWishesEndpoint extends BaseController {
    @RequestMapping(value = "getPatientByDoctor", method = RequestMethod.GET)
    public String getPatientByDoctor(){
        try {
            return write(200, "查询成功", "data", birthdayWishesService.getPatientByDoctor(getUID()));
            String uid = permissionService.getUID();
            return write(200, "查询成功", "data", birthdayWishesService.getPatientByDoctor(uid));
        } catch (Exception e) {
            return errorResult(e);
        }
@ -134,7 +170,8 @@ public class DoctorBirthdayWishesEndpoint extends BaseController {
    @RequestMapping(value = "getPatientByDoctorCount", method = RequestMethod.GET)
    public String getPatientByDoctorCount(){
        try {
            return write(200, "查询成功", "data", birthdayWishesService.getPatientByDoctorCount(getUID()));
            String uid = permissionService.getUID();
            return write(200, "查询成功", "data", birthdayWishesService.getPatientByDoctorCount(uid));
        } catch (Exception e) {
            return errorResult(e);
        }
@ -157,7 +194,7 @@ public class DoctorBirthdayWishesEndpoint extends BaseController {
                                         @ApiParam(name = "currentUserRoleLevel", value = "登录角色等级(1省2市3区4社区、机构)")
                                         @RequestParam(value = "currentUserRoleLevel", required = false)String currentUserRoleLevel,
                                         @ApiParam(name = "roleType", value = "1、普通医生,2、管理员")
                                         @RequestParam(value = "roleType") Integer roleType,
                                         @RequestParam(value = "roleType",defaultValue = "1") Integer roleType,
                                         @ApiParam(name = "teamId", value = "医生所在团队")
                                         @RequestParam(value = "teamId", required = false) Integer teamId,
                                         @ApiParam(name = "isLeader", value = "是否是团队长,0不是、1是")
@ -167,7 +204,8 @@ public class DoctorBirthdayWishesEndpoint extends BaseController {
                                         @ApiParam(name = "pageSize", value = "页面大小")
                                         @RequestParam Integer pageSize){
        try {
            return write(200, "查询成功", "data", birthdayWishesService.getBirthdayPatientList(getUID(), patientName, signYear, startDate, endDate, status, currentUserRole, currentUserRoleLevel, roleType, page, pageSize, teamId, isLeader));
            String uid = permissionService.getUID();
            return write(200, "查询成功", "data", birthdayWishesService.getBirthdayPatientList(uid, patientName, signYear, startDate, endDate, status, currentUserRole, currentUserRoleLevel, roleType, page, pageSize, teamId, isLeader));
        } catch (Exception e) {
            return errorResult(e);
        }
@ -199,10 +237,10 @@ public class DoctorBirthdayWishesEndpoint extends BaseController {
            if(StringUtils.isEmpty(currentUserRoleLevel)){
                currentUserRoleLevel = getCurrentRoleLevel();
            }
            String uid = permissionService.getUID();
            JSONObject json = new JSONObject();
            json.put("patient", patient);
            json.put("doctorCode", getUID());
            json.put("doctorCode", uid);
            json.put("sendType", 1);
            json.put("birthday", dateString);
            json.put("currentUserRole", currentUserRole);
@ -241,7 +279,12 @@ public class DoctorBirthdayWishesEndpoint extends BaseController {
                if (patients.size()>0){//发送生日祝福
                    Map<String,Object> tmp = patients.get(0);
                    com.alibaba.fastjson.JSONObject json = new com.alibaba.fastjson.JSONObject();
                    String first = "社工key1为您发送生日祝福,请点击查看。";
                    String first="";
                    if (2==one.getSendLevel()){
                        first = "社工key1为您发送生日祝福,请点击查看。";
                    }if (4==one.getSendLevel()){
                         first = "助老员key1为您发送生日祝福,请点击查看。";
                    }
                    first = first.replace("key1",one.getDoctorName());
                    json.put("id", one.getId());
//                    json.put("toUser", patient);
@ -256,7 +299,7 @@ public class DoctorBirthdayWishesEndpoint extends BaseController {
                    }else {
                        success=true;
                    }
                    if (success){
                    if (success||demoFlag){
                        SystemMessageDO messageDO = new SystemMessageDO();
                        messageDO.setTitle("收到来自"+one.getDoctorName()+"的关怀祝福:祝您"+tmp.get("name").toString()+"节日快乐!");
                        messageDO.setType("41");//41人文关怀
@ -288,4 +331,35 @@ public class DoctorBirthdayWishesEndpoint extends BaseController {
        });
    }
    /*******************************************助老员部分*********************************************************************/
    @ApiOperation("获取生日居民列表")
    @RequestMapping(value = "helper/getBirthdayPatientList", method = RequestMethod.GET)
    public String helperGetBirthdayPatientList(@ApiParam(name = "patientName", value = "居民姓名")
                                         @RequestParam(required = false) String patientName,
                                         @ApiParam(name = "signYear", value = "签约年度")
                                         @RequestParam(required = false) Integer signYear,
                                         @ApiParam(name = "startDate", value = "生日开始日期yyyy-MM-dd")
                                         @RequestParam String startDate,
                                         @ApiParam(name = "endDate", value = "生日截止日期yyyy-MM-dd")
                                         @RequestParam String endDate,
                                         @ApiParam(name = "status", value = "状态(1、已发送,2、未发送)")
                                         @RequestParam(required = false) Integer status,
                                         @ApiParam(name = "currentUserRole", value = "登录角色")
                                         @RequestParam(value = "currentUserRole", required = false) String currentUserRole,
                                         @ApiParam(name = "currentUserRoleLevel", value = "登录角色等级(1省2市3区4社区、机构)")
                                         @RequestParam(value = "currentUserRoleLevel", required = false)String currentUserRoleLevel,
                                         @ApiParam(name = "roleType", value = "1、普通医生,2、管理员")
                                         @RequestParam(value = "roleType",defaultValue = "1") Integer roleType,
                                         @ApiParam(name = "page", value = "第几页,从1开始")
                                         @RequestParam Integer page,
                                         @ApiParam(name = "pageSize", value = "页面大小")
                                         @RequestParam Integer pageSize){
        try {
            String uid = permissionService.getUID();
            return write(200, "查询成功", "data", birthdayWishesService.helperGetBirthdayPatientList(uid, patientName, signYear, startDate, endDate, status, currentUserRole, currentUserRoleLevel, roleType, page, pageSize));
        } catch (Exception e) {
            return errorResult(e);
        }
    }
}

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

@ -2,6 +2,7 @@ package com.yihu.jw.care.endpoint.doctor;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.care.aop.ObserverRequired;
import com.yihu.jw.care.service.common.PermissionService;
import com.yihu.jw.care.service.consult.ConsultTeamService;
import com.yihu.jw.care.service.doctor.CareDoctorService;
import com.yihu.jw.care.service.doctor.DoctorServicePermissionsService;
@ -17,8 +18,10 @@ 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.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.Map;
@ -42,6 +45,9 @@ public class DoctorEndpoint extends EnvelopRestEndpoint {
    private EntranceUtil entranceUtil;
    @Autowired
    private DoctorServicePermissionsService doctorServicePermissionsService;
    @Autowired
    private PermissionService permissionService;
    @PostMapping(value = "updOnline")
    @ApiOperation(value = "更新在线状态")
@ -52,6 +58,12 @@ public class DoctorEndpoint extends EnvelopRestEndpoint {
                             @RequestParam(value = "online", required = true)String online){
        try{
            JSONObject param = new JSONObject();
            param.put("doctorId",doctorId);
            if(permissionService.noPermission(1,param)){
                return Envelop.getError("该操作没有权限");
            }
            doctorService.updOnline(doctorId,online);
            return success("成功");
        }catch (Exception e){
@ -85,6 +97,12 @@ public class DoctorEndpoint extends EnvelopRestEndpoint {
            @ApiParam(name = "isRole", value = "是否返回角色(1是 0否)", required = false)
            @RequestParam(value = "isRole",required = false) String isRole){
        try{
            JSONObject param = new JSONObject();
            param.put("doctorId",doctorId);
            if(permissionService.noPermission(1,param)){
                return ObjEnvelop.getError("该操作没有权限");
            }
            return ObjEnvelop.getSuccess("查询成功",doctorService.doctorInfo(doctorId,isRole));
        }catch (Exception e){
            return failedObjEnvelopException2(e);
@ -97,6 +115,12 @@ public class DoctorEndpoint extends EnvelopRestEndpoint {
            @ApiParam(name = "doctorId", value = "医生id", required = true)
            @RequestParam(value = "doctorId",required = true) String doctorId) {
        try{
            JSONObject param = new JSONObject();
            param.put("doctorId",doctorId);
            if(permissionService.noPermission(1,param)){
                return ObjEnvelop.getError("该操作没有权限");
            }
            return ObjEnvelop.getSuccess("查询成功",doctorServicePermissionsService.findByDoctor(doctorId));
        }catch (Exception e){
            return failedObjEnvelopException2(e);
@ -109,6 +133,11 @@ public class DoctorEndpoint extends EnvelopRestEndpoint {
            @ApiParam(name = "doctorId", value = "医生id", required = true)
            @RequestParam(value = "doctorId",required = true) String doctorId){
        try{
            JSONObject param = new JSONObject();
            param.put("doctorId",doctorId);
            if(permissionService.noPermission(1,param)){
                return ObjEnvelop.getError("该操作没有权限");
            }
            return ObjEnvelop.getSuccess("查询成功",capacityAssessmentRecordService.getPatientNum(doctorId));
        }catch (Exception e){
            return failedObjEnvelopException2(e);
@ -123,6 +152,13 @@ public class DoctorEndpoint extends EnvelopRestEndpoint {
            @RequestParam(value = "baseDoctorVo") String baseDoctorVo){
        try {
            JSONObject jsonObject = JSONObject.parseObject(baseDoctorVo);
            JSONObject param = new JSONObject();
            param.put("doctorId",jsonObject.get("doctorId").toString());
            if(permissionService.noPermission(1,param)){
                return ObjEnvelop.getError("该操作没有权限");
            }
            Boolean update = doctorService.update(jsonObject);
            if (!update){
                return failed("保存失败,参数不可为空");
@ -144,7 +180,11 @@ public class DoctorEndpoint extends EnvelopRestEndpoint {
            @RequestParam(value = "orgType",defaultValue = "1,2") String orgType
    ){
        try {
            JSONObject param = new JSONObject();
            param.put("doctorId",doctorId);
            if(permissionService.noPermission(1,param)){
                return ListEnvelop.getError("该操作没有权限");
            }
            return ListEnvelop.getSuccess("查询成功", doctorService.getOrgList(doctorId,orgType));
        }catch (Exception e){
            return failedListEnvelopException2(e);
@ -205,6 +245,12 @@ public class DoctorEndpoint extends EnvelopRestEndpoint {
            @RequestParam(value = "size") int size
    ){
        try {
            JSONObject param = new JSONObject();
            param.put("doctorId",doctor);
            if(permissionService.noPermission(1,param)){
                return PageEnvelop.getError("该操作没有权限");
            }
            return doctorService.getTeacherChildren(doctor,searchType,name,page,size);
        }catch (Exception e){
            return failedPageEnvelopException2(e);
@ -217,6 +263,11 @@ public class DoctorEndpoint extends EnvelopRestEndpoint {
            @ApiParam(name = "doctor", value = "doctor")
            @RequestParam(value = "doctor",required = true) String doctor){
        try {
            JSONObject param = new JSONObject();
            param.put("doctorId",doctor);
            if(permissionService.noPermission(1,param)){
                return ObjEnvelop.getError("该操作没有权限");
            }
            return ObjEnvelop.getSuccess("查询成功",doctorService.getTeacherChildrenCount(doctor));
        }catch (Exception e){
            return failedObjEnvelopException2(e);
@ -230,6 +281,11 @@ public class DoctorEndpoint extends EnvelopRestEndpoint {
//            ,@ApiParam(name = "type", value = "type", defaultValue = "0") @RequestParam(value = "type",required = false) Integer type
    ){
        try {
            JSONObject param = new JSONObject();
            param.put("doctorId",doctor);
            if(permissionService.noPermission(1,param)){
                return ObjEnvelop.getError("该操作没有权限");
            }
            return ObjEnvelop.getSuccess("查询成功",doctorService.getNotificationCount(doctor));//,type
        }catch (Exception e){
            return failedObjEnvelopException2(e);
@ -249,6 +305,9 @@ public class DoctorEndpoint extends EnvelopRestEndpoint {
                                      @ApiParam(name = "size")
                                      @RequestParam(value = "size",required = true)Integer size){
        try {
            if(permissionService.noPermission(0,null)){
                return PageEnvelop.getError("该操作没有权限");
            }
            return doctorService.getArchiveList(type, signStatus,name,page, size);
        }catch (Exception e){
            return failedPageEnvelopException2(e);
@ -259,6 +318,9 @@ public class DoctorEndpoint extends EnvelopRestEndpoint {
    @ApiOperation(value = "管理员获取居民tab数量")
    public ObjEnvelop getArchiveNum(){
        try {
            if(permissionService.noPermission(0,null)){
                return ObjEnvelop.getError("该操作没有权限");
            }
            return ObjEnvelop.getSuccess("查询成功",doctorService.getArchiveNum()) ;
        }catch (Exception e){
            return failedObjEnvelopException2(e);
@ -269,6 +331,11 @@ public class DoctorEndpoint extends EnvelopRestEndpoint {
    @ApiOperation(value = "首页养老服务数量获取")
    public ObjEnvelop baseInfoCount(@ApiParam(name="doctor")@RequestParam(value = "doctor")String doctor){
        try {
            JSONObject param = new JSONObject();
            param.put("doctorId",doctor);
            if(permissionService.noPermission(1,param)){
                return ObjEnvelop.getError("该操作没有权限");
            }
            return ObjEnvelop.getSuccess("查询成功",doctorService.baseInfoCount(doctor)) ;
        }catch (Exception e){
            return failedObjEnvelopException2(e);
@ -303,6 +370,11 @@ public class DoctorEndpoint extends EnvelopRestEndpoint {
    @ApiOperation(value = "首页养老服务数量获取")
    public ObjEnvelop baseHelperInfoCount(@ApiParam(name="doctor")@RequestParam(value = "doctor")String doctor){
        try {
            JSONObject param = new JSONObject();
            param.put("doctorId",doctor);
            if(permissionService.noPermission(1,param)){
                return ObjEnvelop.getError("该操作没有权限");
            }
            return ObjEnvelop.getSuccess("查询成功",doctorService.baseHelperInfoCount(doctor)) ;
        }catch (Exception e){
            return failedObjEnvelopException2(e);
@ -315,6 +387,11 @@ public class DoctorEndpoint extends EnvelopRestEndpoint {
            @ApiParam(name = "doctorId", value = "医生id", required = true)
            @RequestParam(value = "doctorId",required = true) String doctorId){
        try{
            JSONObject param = new JSONObject();
            param.put("doctorId",doctorId);
            if(permissionService.noPermission(1,param)){
                return ObjEnvelop.getError("该操作没有权限");
            }
            return ObjEnvelop.getSuccess("查询成功",capacityAssessmentRecordService.getHelperPatientNum(doctorId));
        }catch (Exception e){
            return failedObjEnvelopException2(e);

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

@ -1,5 +1,7 @@
package com.yihu.jw.care.endpoint.doctor;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.care.service.common.PermissionService;
import com.yihu.jw.care.service.message.DoctorMessageService;
import com.yihu.jw.restmodel.web.ObjEnvelop;
import com.yihu.jw.restmodel.web.PageEnvelop;
@ -26,6 +28,8 @@ public class DoctorToDoWorkEndpoint extends EnvelopRestEndpoint {
    @Autowired
    private DoctorMessageService doctorMessageService;
    @Autowired
    private PermissionService permissionService;
    @GetMapping(value = "todowork")
    @ApiOperation("待办工作")
@ -36,6 +40,11 @@ public class DoctorToDoWorkEndpoint extends EnvelopRestEndpoint {
                               @ApiParam(name = "doctor", value = "doctor")
                               @RequestParam(value = "doctor", required = true) String doctor){
        try {
            JSONObject param = new JSONObject();
            param.put("doctorId",doctor);
            if(permissionService.noPermission(1,param)){
                return ObjEnvelop.getError("该操作没有权限");
            }
            return ObjEnvelop.getSuccess("查询成功",doctorMessageService.getPreventLost(doctor,id,serviceSype));
        }catch (Exception e){
            return failedObjEnvelopException2(e);
@ -47,6 +56,11 @@ public class DoctorToDoWorkEndpoint extends EnvelopRestEndpoint {
    public ObjEnvelop  todoworkTotal(@ApiParam(name = "doctor", value = "doctor")
                                         @RequestParam(value = "doctor", required = true) String doctor){
        try {
            JSONObject param = new JSONObject();
            param.put("doctorId",doctor);
            if(permissionService.noPermission(1,param)){
                return ObjEnvelop.getError("该操作没有权限");
            }
            return ObjEnvelop.getSuccess("查询成功",doctorMessageService.todoworkTotal(doctor));
        }catch (Exception e){
            return failedObjEnvelopException2(e);
@ -72,14 +86,19 @@ public class DoctorToDoWorkEndpoint extends EnvelopRestEndpoint {
    /*************************************助老员部分*************************************************/
    @GetMapping(value = "helper/todowork")
    @ApiOperation("待办工作")
    public ObjEnvelop helperMessages(@ApiParam(name = "serviceSype", value = "工作类型: 生活照料,安防监护=preventLost,紧急救助=emergencyAssistance,生活照料=fifeCare")
    public ObjEnvelop helperTodoWorl(@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));
            JSONObject param = new JSONObject();
            param.put("doctorId",doctor);
            if(permissionService.noPermission(1,param)){
                return ObjEnvelop.getError("该操作没有权限");
            }
            return ObjEnvelop.getSuccess("查询成功",doctorMessageService.helperTodoWork(doctor,id,serviceSype));
        }catch (Exception e){
            return failedObjEnvelopException2(e);
        }

+ 28 - 5
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/doorCoach/DoctorDoorCoachOrderController.java

@ -6,6 +6,7 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.jw.care.aop.ObserverRequired;
import com.yihu.jw.care.endpoint.BaseController;
import com.yihu.jw.care.service.common.PermissionService;
import com.yihu.jw.care.service.consult.ConsultTeamService;
import com.yihu.jw.care.service.doorCoach.DoctorDoorCoachOrderService;
import com.yihu.jw.care.service.doorCoach.PatientDoorCoachOrderService;
@ -47,6 +48,9 @@ public class DoctorDoorCoachOrderController extends EnvelopRestEndpoint {
    private ImService imService;
    @Autowired
    private ConsultTeamService consultTeamService;
    @Autowired
    private PermissionService permissionService;
    private BaseController baseController = new BaseController();
    @PostMapping(value = "proxyCreate")
@ -54,7 +58,8 @@ public class DoctorDoorCoachOrderController extends EnvelopRestEndpoint {
    @ObserverRequired
    public String create(@ApiParam(name = "jsonData", value = "Json数据", required = true) @RequestParam String jsonData) {
        try{
            JSONObject result = patientDoorCoachOrderService.proxyCreate(jsonData,getUID());
            String uid = permissionService.getUID();
            JSONObject result = patientDoorCoachOrderService.proxyCreate(jsonData,uid);
            if (result.getIntValue(ResponseContant.resultFlag) == ResponseContant.fail) {
                return baseController.error(-1, result.getString(ResponseContant.resultMsg));
            }
@ -70,6 +75,11 @@ public class DoctorDoorCoachOrderController extends EnvelopRestEndpoint {
            @ApiParam(name = "doctor", value = "医生codedoctor")
            @RequestParam(value = "doctor", required = true) String doctor) {
        try {
            JSONObject param = new JSONObject();
            param.put("doctorId",doctor);
            if(permissionService.noPermission(1,param)){
                return baseController.error(-1,"该操作没有权限");
            }
            return  baseController.write(200, "获取成功", "data",doctorDoorCoachOrderService.getDoorOrderNum(doctor));
        } catch (Exception e) {
            return baseController.errorResult(e);
@ -171,7 +181,8 @@ public class DoctorDoorCoachOrderController extends EnvelopRestEndpoint {
            @ApiParam(value = "拒绝原因", name = "reason", required = false)
            @RequestParam(value = "reason", required = false) String reason) {
        try {
            doctorDoorCoachOrderService.refuseOrder(getUID(),orderId, reason);
            String uid = permissionService.getUID();
            doctorDoorCoachOrderService.refuseOrder(uid,orderId, reason);
            return baseController.write(200, "操作成功");
        } catch (Exception e) {
            return baseController.errorResult(e);
@ -216,7 +227,8 @@ public class DoctorDoorCoachOrderController extends EnvelopRestEndpoint {
            @ApiParam(value = "二维码内容", name = "twoDimensionalCode")
            @RequestParam(value = "twoDimensionalCode", required = false) String twoDimensionalCode) {
        try {
            BaseDoorCoachOrderDO baseDoorCoachOrderDO = doctorDoorCoachOrderService.signIn(orderId, signTime, signWay, signLocation, signImg,twoDimensionalCode,getUID());
            String uid = permissionService.getUID();
            BaseDoorCoachOrderDO baseDoorCoachOrderDO = doctorDoorCoachOrderService.signIn(orderId, signTime, signWay, signLocation, signImg,twoDimensionalCode,uid);
            if (baseDoorCoachOrderDO != null){
                return baseController.write(200, "操作成功", "data", baseDoorCoachOrderDO);
            }else {
@ -310,6 +322,11 @@ public class DoctorDoorCoachOrderController extends EnvelopRestEndpoint {
            @ApiParam(name = "doctor", value = "医生code")
            @RequestParam(value = "doctor", required = true) String doctor) {
        try {
            JSONObject param = new JSONObject();
            param.put("doctorId",doctor);
            if(permissionService.noPermission(1,param)){
                return baseController.error(-1,"该操作没有权限");
            }
            Map<String, Integer> map = doctorDoorCoachOrderService.getNumGroupByStatus(doctor);
            return baseController.write(200, "获取成功", "data", map);
        } catch (Exception e) {
@ -328,6 +345,7 @@ public class DoctorDoorCoachOrderController extends EnvelopRestEndpoint {
            @RequestParam(value="page",required = true) String page,
            @ApiParam(name="pageSize",value="",defaultValue = "10")
            @RequestParam(value="pageSize",required = true) String pageSize){
        String uid = permissionService.getUID();
        if (org.apache.commons.lang3.StringUtils.isBlank(pageSize)) {
            pageSize = "10";
        }
@ -343,7 +361,7 @@ public class DoctorDoorCoachOrderController extends EnvelopRestEndpoint {
        com.alibaba.fastjson.JSONObject object = JSON.parseObject(message);
        message1.setOver(object.getString("over"));
        message1.setIsRead(object.get("read")+"");
        message1.setReceiver(getUID());
        message1.setReceiver(uid);
        try {
            org.json.JSONObject waitingMessages = doctorDoorCoachOrderService.getWaitingMessages(message1, types, Integer.valueOf(page), Integer.valueOf(pageSize));
            return baseController.write(200, "查询成功","data",waitingMessages);
@ -387,7 +405,7 @@ public class DoctorDoorCoachOrderController extends EnvelopRestEndpoint {
            }
            if("0".equals(isManage)){
                if(StringUtils.isEmpty(doctorCode)){
                    doctorCode=getUID();
                    doctorCode = permissionService.getUID();
                }
            }else if ("1".equals(isManage) && StringUtils.isBlank(hospitalCode)){
                //如果是管理员并且未筛选机构,就默认展示其管理下所有机构
@ -584,6 +602,11 @@ public class DoctorDoorCoachOrderController extends EnvelopRestEndpoint {
            @ApiParam(value = "开关值,5关闭 1开启", name = "value")
            @RequestParam(value = "value", required = true) Integer value) {
        try {
            JSONObject param = new JSONObject();
            param.put("doctorId",doctor);
            if(permissionService.noPermission(1,param)){
                return baseController.error(-1,"该操作没有权限");
            }
            doctorDoorCoachOrderService.updateDispatchStatusByDoctor(doctor, value);
            return baseController.write(200, "修改成功");
        } catch (Exception e) {

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

@ -32,7 +32,7 @@ public class PatientLabelEndpoint extends EnvelopRestEndpoint {
    @ApiOperation(value = "按团队查找签约居民的标签统计")
    public ListEnvelop findSignPatientLabelNumByTeamCode (
            @ApiParam(name = "teamCode", value = "团队code", required = true)
            @RequestParam(value = "teamCode",required = true) String teamCode) throws Exception {
            @RequestParam(value = "teamCode",required = true) String teamCode){
        try{
            return ListEnvelop.getSuccess("查询成功",patientLableService.findSignPatientLabelNumByTeamCode(teamCode));
        }catch (Exception e){
@ -54,7 +54,7 @@ public class PatientLabelEndpoint extends EnvelopRestEndpoint {
            @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 {
            @RequestParam(value = "size") int size) {
        try{
            return patientLableService.findSignPatientLabelListByTeamCode(teamCode, labelCode, name,topicItem, page, size);
        }catch (Exception e){
@ -78,7 +78,7 @@ public class PatientLabelEndpoint extends EnvelopRestEndpoint {
            @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 {
            @RequestParam(value = "size") int size) {
        try{
            return patientLableService.findSignPatientLabelList(doctor,labelCode, name,topicItem, page, size);
        }catch (Exception e){

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

@ -673,7 +673,7 @@ public class SignEndpoint extends EnvelopRestEndpoint {
    @PostMapping(value = "helper/addPatient")
    @ApiOperation(value = "助老员添加监护居民")
    public Envelop helperAddPatient(
            @ApiParam(name = "patient",value = "添加居民id",required = true)
            @ApiParam(name = "patient",value = "添加居民id多个逗号隔开",required = true)
            @RequestParam(value = "patient")String patient,
            @ApiParam(name = "doctor",value = "当前操作助老员id",required = true)
            @RequestParam(value = "doctor")String doctor
@ -689,7 +689,7 @@ public class SignEndpoint extends EnvelopRestEndpoint {
    @PostMapping(value = "helper/delPatient")
    @ApiOperation(value = "助老员删除监护居民")
    public Envelop helperDelPatient(
            @ApiParam(name = "patient",value = "添加居民id",required = true)
            @ApiParam(name = "patient",value = "删除居民id多个逗号隔开",required = true)
            @RequestParam(value = "patient")String patient,
            @ApiParam(name = "doctor",value = "当前操作助老员id",required = true)
            @RequestParam(value = "doctor")String doctor
@ -736,6 +736,8 @@ public class SignEndpoint extends EnvelopRestEndpoint {
            @RequestParam(value = "signStatus",required = false) Integer signStatus,
            @ApiParam(name = "name", value = "居民姓名", required = false)
            @RequestParam(value = "name",required = false) String name,
            @ApiParam(name = "filterMyPatient", value = "过滤掉已添加的患者", required = false)
            @RequestParam(value = "filterMyPatient",required = false) String filterMyPatient,
            @ApiParam(name = "page", value = "分页大小", required = true, defaultValue = "1")
            @RequestParam(value = "page") int page,
            @ApiParam(name = "size", value = "页码", required = true, defaultValue = "15")
@ -744,7 +746,7 @@ public class SignEndpoint extends EnvelopRestEndpoint {
            if (StringUtils.isBlank(doctorId)&&StringUtils.isBlank(name)){
                return PageEnvelop.getError("请求参数错误");
            }
            return archiveService.helperArchiveList(doctorId,hospital,page,size,signStatus,name);
            return archiveService.helperArchiveList(doctorId,hospital,page,size,signStatus,name,filterMyPatient);
        }catch (Exception e){
            return failedPageEnvelopException2(e);
        }

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

@ -146,9 +146,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 {
            baseVisitService.adminAddVisit(doctor,patient,visitContent,visitImg);
            baseVisitService.adminAddVisit(doctor,patient,visitContent,visitImg,deviceMaintenance,health,lifeConsult);
            return Envelop.getSuccess("操作成功");
        } catch (Exception e) {
            return failedException2(e);

+ 34 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/interceptors/CrosXssFilter.java

@ -0,0 +1,34 @@
package com.yihu.jw.care.interceptors;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
/**
 * Created by yeshijie on 2020/9/2.
 */
public class CrosXssFilter implements Filter {
    private static final Logger logger = LoggerFactory.getLogger(CrosXssFilter.class);
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
    }
    @Override
    public void doFilter(ServletRequest request, ServletResponse response,
                         FilterChain chain) throws IOException, ServletException {
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
        //sql,xss过滤
        HttpServletRequest httpServletRequest=(HttpServletRequest)request;
        XssHttpServletRequestWrapper xssHttpServletRequestWrapper=new XssHttpServletRequestWrapper(
                httpServletRequest);
        chain.doFilter(xssHttpServletRequestWrapper, response);
    }
    @Override
    public void destroy() {
    }
}

+ 120 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/interceptors/XssHttpServletRequestWrapper.java

@ -0,0 +1,120 @@
package com.yihu.jw.care.interceptors;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
/**
 * Created by yeshijie on 2020/9/1.
 */
public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper {
    private final Logger log = LoggerFactory.getLogger(getClass());
    private static String key = "select|update|and|or|delete|insert|trancate|char|into|substr|ascii|declare|exec|count|master|into|drop|execute|*|%";
    private static Set<String> notAllowedKeyWords = new HashSet<String>(0);
    private static String replacedString="INVALID";
    static {
        String keyStr[] = key.split("\\|");
        for (String str : keyStr) {
            notAllowedKeyWords.add(str);
        }
    }
    private String currentUrl;
    public XssHttpServletRequestWrapper(HttpServletRequest servletRequest) {
        super(servletRequest);
        currentUrl = servletRequest.getRequestURI();
    }
    /**覆盖getParameter方法,将参数名和参数值都做xss过滤。
     * 如果需要获得原始的值,则通过super.getParameterValues(name)来获取
     * getParameterNames,getParameterValues和getParameterMap也可能需要覆盖
     */
    @Override
    public String getParameter(String parameter) {
        String value = super.getParameter(parameter);
        if (value == null) {
            return null;
        }
        return cleanXSS(value);
    }
    @Override
    public String[] getParameterValues(String parameter) {
        String[] values = super.getParameterValues(parameter);
        if (values == null) {
            return null;
        }
        int count = values.length;
        String[] encodedValues = new String[count];
        for (int i = 0; i < count; i++) {
            encodedValues[i] = cleanXSS(values[i]);
        }
        return encodedValues;
    }
    @Override
    public Map<String, String[]> getParameterMap(){
        Map<String, String[]> values=super.getParameterMap();
        if (values == null) {
            return null;
        }
        Map<String, String[]> result=new HashMap<>();
        for(String key:values.keySet()){
            String encodedKey=cleanXSS(key);
            int count=values.get(key).length;
            String[] encodedValues = new String[count];
            for (int i = 0; i < count; i++){
                encodedValues[i]=cleanXSS(values.get(key)[i]);
            }
            result.put(encodedKey,encodedValues);
        }
        return result;
    }
    /**
     * 覆盖getHeader方法,将参数名和参数值都做xss过滤。
     * 如果需要获得原始的值,则通过super.getHeaders(name)来获取
     * getHeaderNames 也可能需要覆盖
     */
    @Override
    public String getHeader(String name) {
//        String value = super.getHeader(name);
//        if (value == null) {
//            return null;
//        }
//        return cleanXSS(value);
        return super.getHeader(name);
    }
    private String cleanXSS(String valueP) {
        // You'll need to remove the spaces from the html entities below
        String value = valueP.replaceAll("<", "&lt;").replaceAll(">", "&gt;");
        value = value.replaceAll("<", "& lt;").replaceAll(">", "& gt;");
        value = value.replaceAll("\\(", "& #40;").replaceAll("\\)", "& #41;");
        value = value.replaceAll("'", "& #39;");
        value = value.replaceAll("eval\\((.*)\\)", "");
        value = value.replaceAll("[\\\"\\\'][\\s]*javascript:(.*)[\\\"\\\']", "\"\"");
        value = value.replaceAll("script", "");
        value = cleanSqlKeyWords(value);
        return value;
    }
    private String cleanSqlKeyWords(String value) {
        String paramValue = value;
        for (String keyword : notAllowedKeyWords) {
            if (paramValue.length() > keyword.length() + 4
                    && (paramValue.contains(" "+keyword)||paramValue.contains(keyword+" ")||paramValue.contains(" "+keyword+" "))) {
                paramValue = StringUtils.replace(paramValue, keyword, replacedString);
                log.error(this.currentUrl + "已被过滤,因为参数中包含不允许sql的关键词(" + keyword
                        + ")"+";参数:"+value+";过滤后的参数:"+paramValue);
            }
        }
        return paramValue;
    }
}

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

@ -14,6 +14,7 @@ import com.yihu.jw.care.dao.security.EmergencyWarnDoctorResponseDao;
import com.yihu.jw.care.dao.sign.ServicePackageSignRecordDao;
import com.yihu.jw.care.dao.team.BaseTeamMemberDao;
import com.yihu.jw.care.service.common.DictService;
import com.yihu.jw.care.service.common.PermissionService;
import com.yihu.jw.care.service.consult.ConsultTeamService;
import com.yihu.jw.care.service.contacts.ContactsService;
import com.yihu.jw.care.service.device.PatientDeviceService;
@ -131,6 +132,8 @@ public class EmergencyAssistanceService extends BaseJpaService<EmergencyAssistan
    private BaseOrgDao orgDao;
    @Autowired
    private DeviceDetailDao deviceDetailDao;
    @Autowired
    private PermissionService permissionService;
    /**
     * 获取百度天气
@ -621,6 +624,13 @@ public class EmergencyAssistanceService extends BaseJpaService<EmergencyAssistan
            result.put(ResponseContant.resultMsg,failMsg);
            return result;
        }
        String orgCode = permissionService.getDoctorOrg(doctor);
        if (!orgCode.equals(assistanceDO.getOrgCode())){
            String failMsg = "该操作无权限";
            result.put(ResponseContant.resultFlag, ResponseContant.fail);
            result.put(ResponseContant.resultMsg,failMsg);
            return result;
        }
        return getOrderDetail(orderID,doctor);
    }
@ -891,6 +901,13 @@ public class EmergencyAssistanceService extends BaseJpaService<EmergencyAssistan
            result.put(ResponseContant.resultMsg,failMsg);
            return result;
        }
        //紧急救助编辑服务小结前不会有医生
        if(permissionService.isOlderServerDoctor(doctor,assistanceDO.getPatient())){
            String failMsg = "该操作没有权限";
            result.put(ResponseContant.resultFlag, ResponseContant.fail);
            result.put(ResponseContant.resultMsg,failMsg);
            return result;
        }
        EmergencyWarnConclusionDO doorConclusion =  emergencyWarnConclusionDao.findByOrderId(orderId);
        BaseDoctorDO doctorDO = doctorDao.findById(doctor);
        if (doctorDO==null){
@ -1040,6 +1057,14 @@ public class EmergencyAssistanceService extends BaseJpaService<EmergencyAssistan
            result.put("resultMsg", failMsg);
            return result;
        }
        String orgCode = permissionService.getDoctorOrg(doctor);
        if(!orgCode.equals(one.getOrgCode())){
            String failMsg = "该操作没权限" ;
            result.put("resultFlag", 0);
            result.put("resultMsg", failMsg);
            return result;
        }
        if (emergencyWarnDoctorResponseDao.findByDoctorAndOrderId(doctor,orderId)==null){
            EmergencyWarnDoctorResponseDO responseDO = new EmergencyWarnDoctorResponseDO();
            responseDO.setOrderId(orderId);
@ -1075,6 +1100,14 @@ public class EmergencyAssistanceService extends BaseJpaService<EmergencyAssistan
            result.put("resultMsg", failMsg);
            return result;
        }
        String orgCodeTmp = permissionService.getDoctorOrg(doctor);
        if(!orgCodeTmp.equals(assistanceDO.getOrgCode())){
            String failMsg = "该操作没权限" ;
            result.put("resultFlag", 0);
            result.put("resultMsg", failMsg);
            return result;
        }
        BaseDoctorDO doctorDO = doctorDao.findById(doctor);
        assistanceDO.setStatus(-2);
        assistanceDO.setUpdateTime(new Date());
@ -1250,9 +1283,9 @@ public class EmergencyAssistanceService extends BaseJpaService<EmergencyAssistan
        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," +
                sql += "select '20' as OrderType,ord.id,ord.patient,ord.patient_name patientName,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 " +
                        " TIMESTAMPDIFF(YEAR,p.birthday,now()) as age,ord.order_source orderSource,p.mobile,p.photo,ord.session_id sessionId " +
                        "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;
            }
@ -1260,84 +1293,101 @@ public class EmergencyAssistanceService extends BaseJpaService<EmergencyAssistan
                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," +
                sql += " select  '22' as 'OrderType',ord.id,ord.patient,ord.patient_name patientName,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 " +
                        "TIMESTAMPDIFF(YEAR,p.birthday,now()) as age,ord.order_source orderSource,p.mobile,p.photo,CONCAT(ord.patient,'_22') sessionId  " +
                        " 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 += " and ord.serve_desc = '"+svrDesc+"' ";
                }
            }
            sql += "order by create_time desc limit "+page*pageSize+","+pageSize;
            sql += " order by create_time desc limit "+page*pageSize+","+pageSize;
            result =   jdbcTemplate.queryForList(sql);
        }
        return result;
    }
    public JSONObject getEmeAndSecuOrderTab(String orderType,String doctor){
    public JSONObject getEmeAndSecuOrderTab(String doctor,String status){
        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()));
                }
        JSONObject eme = new JSONObject();
        JSONObject secu = new JSONObject();
        JSONObject emeAndSecu = new JSONObject();
        /************************紧急********/
        eme.put("status_-2",0);//误报警
        eme.put("status_-1",0);//已取消
        eme.put("status_0",0);//已完成
        eme.put("status_1",0);//预警中
        String sql = " select ord.status,count(distinct ord.id) count from base_emergency_assistance_order ord INNER JOIN base_patient_helper ph on ord.patient = ph.patient and ph.del=1 " ;
        if (StringUtils.isNotBlank(status)){
            sql += " and ord.status='"+status+"' ";
        }
        sql +=  "  where ph.doctor='"+doctor+"' group by ord.status  " ;
        List<Map<String,Object>> sqlResult = jdbcTemplate.queryForList(sql);
        for (Map<String,Object> map:sqlResult){
            eme.put("status_"+map.get("status"),map.get("count"));
        }
        Integer All = 0;
        Set<String> keySet = eme.keySet();
        for (String key : keySet){
            All+=eme.getInteger(key);
        }
        eme.put("all",All);
        result.put("eme",eme);
        /************************ 安防********/
        secu.put("status_-2", 0);//误报警
        secu.put("status_-1", 0);//已取消
        secu.put("status_0", 0);//已完成
        secu.put("status_1", 0);//预警中
        secu.put("status_all", 0);//
        secu.put("svr_all", 0);//
        Map<String, String> serverTmp = new HashMap<>();
        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) {
            secu.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(distinct 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 = " group by ord.status";
        sqlResult = jdbcTemplate.queryForList(sql + fliter);
        for (Map<String, Object> map : sqlResult) {
            secu.put("status_" + map.get("status"), secu.getInteger("status_" + map.get("status")) + Integer.parseInt(map.get("count").toString()));
            secu.put("status_all", secu.getInteger("status_all") + Integer.parseInt(map.get("count").toString()));
        }
        if (StringUtils.isNotBlank(status)){
            sql += " and ord.status='"+status+"' ";
        }
        fliter = " group by ord.status,ord.serve_desc ";
        sqlResult = jdbcTemplate.queryForList(sql + fliter);
        String pyCode = "";
        for (Map<String, Object> map : sqlResult) {
            pyCode = serverTmp.get(map.get("serve_desc")) == null ? null : serverTmp.get(map.get("serve_desc")).toString();
            if (StringUtils.isNotBlank(pyCode)) {
                secu.put("svr_" + pyCode, secu.getInteger("svr_" + pyCode) + Integer.parseInt(map.get("count").toString()));
                secu.put("svr_all", secu.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);
        }
        result.put("secu",secu);
        /************************ 安防、紧急总数********/
        sql = " select count(distinct ord.id)  from base_emergency_assistance_order ord INNER JOIN base_patient p on ord.patient = p.id and p.del=1 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);
        emeAndSecu.put("emeAll",emeCount);
        sql = "select count(distinct ord.id) count from base_security_monitoring_order ord INNER JOIN base_patient p on ord.patient = p.id and p.del=1 " +
                " INNER JOIN base_patient_helper ph on p.id = ph.patient and ph.del=1  where ph.doctor='"+doctor+"'  ";
        fliter = "  ";
        Long secuCount = jdbcTemplate.queryForObject(sql,Long.class);
        emeAndSecu.put("secuAll",secuCount);
        result.put("emeAndSecu",emeAndSecu);
        return result;
    }

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

@ -2,6 +2,7 @@ package com.yihu.jw.care.service.birthday;
import com.yihu.jw.care.dao.birthday.BirthDayWishesToPatientDao;
import com.yihu.jw.care.dao.birthday.BirthdayWishesTemplateDao;
import com.yihu.jw.care.service.common.PermissionService;
import com.yihu.jw.doctor.dao.BaseDoctorDao;
import com.yihu.jw.doctor.dao.BaseDoctorHospitalDao;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
@ -10,6 +11,7 @@ import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.entity.care.birthday.BirthDayWishesToPatient;
import com.yihu.jw.entity.care.birthday.BirthdayWishesTemplate;
import com.yihu.jw.patient.dao.BasePatientDao;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.util.common.IdCardUtil;
import com.yihu.jw.util.date.DateUtil;
import org.apache.commons.lang.StringUtils;
@ -49,6 +51,8 @@ public class BirthdayWishesService {
    private BaseDoctorHospitalDao hospitalDao;
    @Autowired
    private RedisTemplate redisTemplate;
    @Autowired
    private PermissionService permissionService;
//    /**
//     * 发送到mq
@ -77,12 +81,21 @@ public class BirthdayWishesService {
     * @param isDefault
     */
    public Long create(String doctor, String content, Integer applicableRange, Long id, Integer isDefault) {
        String isAdmin = permissionService.isAdmin();
        BaseDoctorDO doctorDO = doctorDao.findById(doctor);
        BirthdayWishesTemplate template = null;
        //判断是编辑还是创建
        if(id != null){
            template = bwTemplateDao.findOne(id);
            if(!"0".equals(isAdmin)&&StringUtils.isNotBlank(template.getCreateUser())&&!isAdmin.equals(template.getCreateUser())){
                return null;
            }
        }else {
            if(!"0".equals(isAdmin)&&!doctor.equals(isAdmin)){
                return null;
            }
            template = new BirthdayWishesTemplate();
            template.setCode(UUID.randomUUID().toString().replace("-",""));
            template.setType(2);
@ -135,12 +148,11 @@ public class BirthdayWishesService {
     * 根据ID设置为默认模板
     *
     * @param doctor
     * @param id
     * @param template
     * @return
     */
    @Transactional
    public BirthdayWishesTemplate setDefalutTemplateById(String doctor, Long id) {
        BirthdayWishesTemplate template = bwTemplateDao.findOne(id);
    public BirthdayWishesTemplate setDefalutTemplateById(String doctor, BirthdayWishesTemplate template) {
        //先取消该医生自创的默认模板
        BirthdayWishesTemplate docTemplate = bwTemplateDao.findByCreateUserAndApplicableRangeAndIsDefault(doctor, template.getApplicableRange(), 1);
        if(docTemplate != null){
@ -148,7 +160,7 @@ public class BirthdayWishesService {
        }
        //如果不是系统模板,就添加默认模板标识
        if(template.getType() != 1){
            bwTemplateDao.setDefalutTemplateById(id, 1);
            bwTemplateDao.setDefalutTemplateById(template.getId(), 1);
        }
        return template;
    }
@ -172,18 +184,37 @@ public class BirthdayWishesService {
        //获取当天0点
        SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd 00:00:00");
        String now = f.format(new Date());
        String sql = "SELECT DISTINCT p.id patient, p.`name`, " +
                "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 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  " +
                "and m.team_code = r.team_code and m.doctor_code = '"+doctor+"' ) "+
                " and (p.archive_status<>2 or p.archive_status is null) " +
                "AND CASE LENGTH(p.idcard) WHEN  18 then SUBSTR(p.idcard,11,4) when 15 then SUBSTR(p.idcard, 9,4) END =  '" + dateString + "' " ;
        List<Map<String, Object>> patientInfos =  jdbcTemplate.queryForList(sql);
        BaseDoctorDO baseDoctorDO = doctorDao.findById(doctor);
        if(null==baseDoctorDO){
            return new ArrayList<>();
        }
        List<Map<String, Object>> patientInfos = new ArrayList<>();
        if (2==baseDoctorDO.getLevel()){
            String sql = "SELECT DISTINCT p.id patient, p.`name`, " +
                    "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 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  " +
                    "and m.team_code = r.team_code and m.doctor_code = '"+doctor+"' ) "+
                    " and (p.archive_status<>2 or p.archive_status is null) " +
                    "AND CASE LENGTH(p.idcard) WHEN  18 then SUBSTR(p.idcard,11,4) when 15 then SUBSTR(p.idcard, 9,4) END =  '" + dateString + "' " ;
            patientInfos =  jdbcTemplate.queryForList(sql);
        }
        if (4==baseDoctorDO.getLevel()){
            String sql = "SELECT DISTINCT p.id patient, p.`name`, " +
                    "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  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+"'";
            patientInfos =  jdbcTemplate.queryForList(sql);
        }
        //整理未发送居民信息
        Iterator<Map<String, Object>> iterator = patientInfos.iterator();
        while (iterator.hasNext()){
@ -221,15 +252,29 @@ public class BirthdayWishesService {
        //获取当天0点
        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 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 " +
                "and m.team_code = r.team_code and m.doctor_code = '"+doctor+"' ) "+
                " and (p.archive_status<>2 or p.archive_status is null) " +
                "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);
        BaseDoctorDO baseDoctorDO = doctorDao.findById(doctor);
        if(null==baseDoctorDO){
            return 0;
        }
        String sql="";
        List<String> patientInfos = new ArrayList<>();
        if (2==baseDoctorDO.getLevel()){
            sql = "SELECT DISTINCT p.id " +
                    "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 " +
                    "and m.team_code = r.team_code and m.doctor_code = '"+doctor+"' ) "+
                    " and (p.archive_status<>2 or p.archive_status is null) " +
                    "AND CASE LENGTH(p.idcard) WHEN  18 then SUBSTR(p.idcard,11,4) when 15 then SUBSTR(p.idcard, 9,4) END =  '" + dateString + "'  " ;
            patientInfos =  jdbcTemplate.queryForList(sql,String.class);
        }
        if (4==baseDoctorDO.getLevel()) {
            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 + "'  " ;
            patientInfos =  jdbcTemplate.queryForList(sql,String.class);
        }
        Integer count=0;
        for (String tmp:patientInfos){
            if (null == sendPatients){
@ -251,6 +296,7 @@ public class BirthdayWishesService {
        Map<String, Object> resultMap = new HashMap<>();
        List<Map<String, Object>> resultList = new ArrayList();
        Long allCount = 0l;
        String year = DateUtil.getNowYear()+"";
        //判断是否筛选推送条件,若未筛选则从数据库直接查生日居民,再进行匹配是否推送,若选择已推送则从推送记录查,若未发送则从未推送表查
        //社工签约患者
        String sql = " SELECT Distinct p.id patient,p.idcard,p.mobile,p.name,p.sex,p.id,p.photo," +
@ -290,11 +336,11 @@ public class BirthdayWishesService {
            whereSql += "and p.name like '%" + patientName + "%' ";
        }
        //根据签约年限来获取生日居民
        if ( null==  signYear|| signYear == DateUtil.getNowYear()) {//当前年度
//        if ( null==  signYear|| signYear == DateUtil.getNowYear()) {//当前年度
            whereSql += " and sr.status=1 ";
        } else {//
            whereSql += " and sr.status=-1 and sr.start_time >='" + signYear+" 01-01:00:00:00" + "' and sr.start_time <='" + signYear+" 12-31:23:59:59" + "'  ";
        }
//        } else {//
//            whereSql += " and sr.status=1 and sr.start_time >='" + signYear+" 01-01:00:00:00" + "' and sr.start_time <='" + signYear+" 12-31:23:59:59" + "'  ";
//        }
        if (StringUtils.isNotBlank(startDate) && StringUtils.isNotBlank(endDate)) {
            String start = startDate.substring(4).replace("-", "");
            String end = endDate.substring(4).replace("-", "");
@ -312,7 +358,7 @@ public class BirthdayWishesService {
            }
        }
        whereSql += "and DATE_FORMAT(sr.create_time,'%m%d')< CASE LENGTH(p.idcard) WHEN 18 THEN SUBSTR(p.idcard, 11, 4) WHEN 15 THEN SUBSTR(p.idcard, 9, 4) END ";
        whereSql += "and DATE_FORMAT(ph.create_time,'%Y%m%d')<= CONCAT('"+year+"',(CASE LENGTH(p.idcard) WHEN 18 THEN SUBSTR(p.idcard, 11, 4) WHEN 15 THEN SUBSTR(p.idcard, 9, 4) END)) ";
        sql = sql + whereSql + " ) order by birthday limit "+(page-1)*pageSize + "," + pageSize;
        sqlCount = sqlCount + whereSql+")";
@ -382,6 +428,7 @@ public class BirthdayWishesService {
        List<BirthDayWishesToPatient> list = new ArrayList<>();
        List<BirthDayWishesToPatient> birthdayWishesList = new ArrayList<>();
        String p = json.get("patient") + "";
        p = "'"+p.replace(",","','")+"'";
        String doctorCode = json.get("doctorCode") + "";
        Integer sendType = (Integer) json.get("sendType");
        String currentUserRole = json.has("currentUserRole")?json.get("currentUserRole") + "":null;
@ -409,7 +456,7 @@ public class BirthdayWishesService {
        Set<String> openidSet = new HashSet<>();
        BaseDoctorDO doctor = doctorDao.findById(doctorCode);
        String sql = " select * from ( select p.id as patient,p.name,we.openid from base_patient p Left join  base_patient_wechat we on p.id = we.patient_id where p.id in ( "+p.toString()+") " +
        String sql = " select * from ( select p.id as patient,p.name,we.openid from base_patient p Left join  base_patient_wechat we on p.id = we.patient_id where p.id in ( "+p+") " +
                "  order by we.create_time desc )A group by A.patient  ";
        List<Map<String, Object>> patientInfos = jdbcTemplate.queryForList(sql);
@ -553,4 +600,132 @@ public class BirthdayWishesService {
        return count;
    }
    /*****************************************助老员部分********************************************************************/
    /**
     * 获取医生生日列表
     */
    public Map<String, Object> helperGetBirthdayPatientList(String doctorCode, String patientName, Integer signYear, String startDate, String endDate, Integer status, String currentUserRole, String currentUserRoleLevel,
                                                      Integer roleType, Integer page, Integer pageSize) throws Exception {
        String year = DateUtil.getNowYear()+"";
        Map<String, Object> resultMap = new HashMap<>();
        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  base_patient p INNER JOIN base_patient_helper ph on p.id = ph.patient and ph.del=1 ";
        //根据权限获取生日居民列表
        if (roleType == 1) {
            whereSql += " WHERE ph.doctor='"+doctorCode+"' ";
        } else {//管理员
            switch (currentUserRoleLevel) {
                case "1": {//省
                    whereSql += " INNER JOIN base_doctor_hospital dh on ph.doctor = dh.doctor_code and dh.del=1 INNER JOIN base_org org on dh.org_code = org.code and org.del=1\n" +
                            " where org.province_code='"+currentUserRole+"'  ";
                    break;
                }
                case "2": {//市
                    whereSql += " INNER JOIN base_doctor_hospital dh on ph.doctor = dh.doctor_code and dh.del=1 INNER JOIN base_org org on dh.org_code = org.code and org.del=1\n" +
                            " where org.city_code='"+currentUserRole+"'  ";
                    break;
                }
                case "3": {//区
                    whereSql += " INNER JOIN base_doctor_hospital dh on ph.doctor = dh.doctor_code and dh.del=1 INNER JOIN base_org org on dh.org_code = org.code and org.del=1\n" +
                            " where org.town_code='"+currentUserRole+"'  ";
                    break;
                }
                case "4": {//社区机构
                    whereSql += " INNER JOIN base_doctor_hospital dh on ph.doctor = dh.doctor_code and dh.del=1 INNER JOIN base_org org on dh.org_code = org.code and org.del=1\n" +
                            " where org.code='"+currentUserRole+"' ";
                    break;
                }
            }
        }
        if (StringUtils.isNotBlank(patientName)) {
            whereSql += " and p.name like '%" + patientName + "%' ";
        }
        if (StringUtils.isNotBlank(startDate) && StringUtils.isNotBlank(endDate)) {
            String start = startDate.substring(4).replace("-", "");
            String end = endDate.substring(4).replace("-", "");
            Integer birStart = Integer.parseInt(start);
            Integer birEnd = Integer.parseInt(end);
            //判断生日日期
            if(birEnd > birStart) {
                whereSql += " AND CASE LENGTH(p.idcard) WHEN 18 THEN SUBSTR(p.idcard, 11, 4) WHEN 15 THEN SUBSTR(p.idcard, 9, 4) END >= '" + start + "' " +
                        " AND CASE LENGTH(p.idcard) WHEN 18 THEN SUBSTR(p.idcard, 11, 4) WHEN 15 THEN SUBSTR(p.idcard, 9, 4) END <= '" + end + "' ";
            }else if(birEnd < birStart){
                whereSql += " AND CASE LENGTH(p.idcard) WHEN 18 THEN SUBSTR(p.idcard, 11, 4) WHEN 15 THEN SUBSTR(p.idcard, 9, 4) END >= '" + end + "' " +
                        " AND CASE LENGTH(p.idcard) WHEN 18 THEN SUBSTR(p.idcard, 11, 4) WHEN 15 THEN SUBSTR(p.idcard, 9, 4) END <= '" + start + "' ";
            }else {
                whereSql += " AND CASE LENGTH(p.idcard) WHEN 18 THEN SUBSTR(p.idcard, 11, 4) WHEN 15 THEN SUBSTR(p.idcard, 9, 4) END = '" + end + "' ";
            }
        }
        whereSql += "and DATE_FORMAT(ph.create_time,'%Y%m%d')<= CONCAT('"+year+"',(CASE LENGTH(p.idcard) WHEN 18 THEN SUBSTR(p.idcard, 11, 4) WHEN 15 THEN SUBSTR(p.idcard, 9, 4) END)) ";
        sql = sql + whereSql + "  order by birthday limit "+(page-1)*pageSize + "," + pageSize;
        sqlCount = sqlCount + whereSql ;
        List<Map<String, Object>> list = jdbcTemplate.queryForList(sql);
        allCount = jdbcTemplate.queryForObject(sqlCount, Long.class);
        resultMap.put("total", allCount);
        //获取生日居民code
        String patientString = "";
        for (Map<String, Object> map : list) {
            patientString += "'"+ map.get("patient") + "',";
        }
        if(patientString.length() > 0) {
            //查询该居民是否有推送过
            String es = "SELECT patient_code patientCode,doctor_name doctorName,content,birthday,create_time createTime FROM birthday_wishes_to_patient where patient_code in (" + patientString.substring(0, patientString.length() - 1) + ") and user_type =1 and create_time > '" + startDate + " 00:00:00' and create_time < '" + endDate + " 23:59:59'";
            List<Map<String, Object>> sendPatientList = jdbcTemplate.queryForList(es);
            Set<String> patientSet = new HashSet<>();
            for (Map<String, Object> map : list) {
                String patientCode = map.get("patient") + "";
                //判断是否在推送记录里
                if( null == status || 1 == status  ) {
                    for (Map<String, Object> esMap : sendPatientList) {
                        if (patientCode.equals(esMap.get("patientCode") + "")) {
                            map.put("birthday", esMap.get("birthday") + "");
                            map.put("doctorName", esMap.get("doctorName") + "");
                            map.put("content", esMap.get("content") + "");
                            map.put("createTimeStr", (esMap.get("createTime") + "").replace("T", " ").replace("+0800", ""));
                            Date dateTmp = DateUtil.strToDate(esMap.get("createTime") + "");
                            map.put("createTime", (DateUtil.dateToChineseDate(dateTmp)));
                            map.put("status", "已发送");
                            BasePatientDO patientDO = patientDao.findById(map.get("patient") + "");
                            map.put("patientBirthday", IdCardUtil.getBirthdayForIdcardStr(patientDO.getIdcard()));
                            patientSet.add(patientCode);
                            resultList.add(map);
                        }
                    }
                }
            }
            if(null == status || 2 == status) {
                //存取未发送居民
                for (Map<String, Object> map : list) {
                    String patientCode = map.get("patient") + "";
                    if (!patientSet.contains(patientCode)) {
                        String birthday = map.get("birthday")+"日";
                        StringBuilder bir = new StringBuilder(birthday);
                        bir.insert(2, "月");
                        map.put("birthday", bir.toString());
                        map.put("status", "未发送");
                        BasePatientDO patientDO = patientDao.findById(map.get("patient") + "");
                        map.put("patientBirthday", IdCardUtil.getBirthdayForIdcardStr(patientDO.getIdcard()));
                        resultList.add(map);
                    }
                }
            }
        }
        resultMap.put("detailModelList", resultList);
        resultMap.put("total", allCount);
        resultMap.put("pageCount", allCount%pageSize == 0 ?allCount/pageSize : allCount/pageSize +1);
        return resultMap;
    }
}

+ 102 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/common/CommomService.java

@ -0,0 +1,102 @@
package com.yihu.jw.care.service.common;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.care.util.MessageUtil;
import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.entity.hospital.message.SystemMessageDO;
import com.yihu.jw.patient.dao.BasePatientDao;
import com.yihu.jw.util.date.DateUtil;
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.Date;
import java.util.List;
import java.util.Map;
/**
 * Created by Bing on 2022/3/18.
 */
@Service
public class CommomService {
    @Autowired
    private JdbcTemplate jdbcTemplate;
    @Autowired
    private BasePatientDao basePatientDao;
    @Autowired
    private MessageUtil messageUtil;
    @Value("${wechat.id}")
    private String wxId;
    //模板消息测试
    public void WXtempleateSendTest(){
        String patient="808080eb78d3ce030178edeb4346002b";
        BasePatientDO patientDO = basePatientDao.findById(patient);
        //获取家属
        String  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 = '"+patient+"' )  " +
                " and t1.patient = '"+patient+"'  and t1.family_member = t2.id  " +
                " and t2.archive_type=3 GROUP BY t2.id " ;
        List<Map<String,Object>> relatives = jdbcTemplate.queryForList(sql);
        for (Map<String,Object> docTmp:relatives){
            if ("family3".equals(docTmp.get("user").toString())){//设备离线推送给家属
                if(null!=docTmp.get("openid")&& StringUtils.isNotBlank(docTmp.get("openid").toString())){
                    String first = patientDO.getName()+" 血糖仪设备疑似离线";
                    String keyword1 = "【"+ DateUtil.getStringDate()+"】";
                    String keyword2 = "【设备离线】";
                    String keyword3 = patientDO.getName()+" 血糖仪设备疑似离线,请及时跟进";
                    messageUtil.putTemplateWxMessage(wxId,"template_error_notice","sblxtz",
                            docTmp.get("openid").toString(),first,null,null,38,new JSONObject(),keyword1,keyword2,keyword3);
                    first=patientDO.getName()+"已离家";
                    keyword2="【离家提醒】";
                    keyword3 = patientDO.getName()+"已离家,请及时跟进";
                    boolean success = messageUtil.putTemplateWxMessage(wxId,"template_error_notice","lrjjztgxtz",docTmp.get("openid").toString(),first,null,null,3,new JSONObject(),DateUtil.getStringDate(),keyword2,keyword3);
                    first=patientDO.getName()+"已到家";
                    keyword2="【到家提醒】";
                    keyword3 = patientDO.getName()+"已到家,请知悉";
                    messageUtil.putTemplateWxMessage(wxId,"template_error_notice","lrjjztgxtz",docTmp.get("openid").toString(),first,null,null,3,new JSONObject(),DateUtil.getStringDate(),keyword2,keyword3);
                    JSONObject jsonObject = new JSONObject();
                    jsonObject.put("patientId",patient);
                    first = patientDO.getName()+"血糖超7天未测量";
                    keyword2="【血糖测量】";
                    keyword3=patientDO.getName()+"血糖超7天未测量,请及时跟进";
                    jsonObject.put("type","1");
                    messageUtil.putTemplateWxMessage(wxId,"template_error_notice","xyxtwcltz",docTmp.get("openid").toString(),first,null,null,3,jsonObject,keyword1,keyword2,keyword3);
                    jsonObject = new JSONObject();
                    first = patientDO.getName()+"血压未测量";
                    keyword2="【血压测量】";
                    keyword3=patientDO.getName()+"昨日未测量血压,请及时跟进";
                    jsonObject.put("type","2");
                    messageUtil.putTemplateWxMessage(wxId,"template_error_notice","xyxtwcltz",docTmp.get("openid").toString(),first,null,null,3,jsonObject,keyword1,keyword2,keyword3);
                    first = patientDO.getName()+"最新测量血糖值反馈";
                    keyword1 = DateUtil.getStringDate();
                    keyword2 = "早餐前血糖";
                    keyword3 = "【5.5mmol/L】";
                    String keyword4 = "请注意日常饮食";
                    messageUtil.putTemplateWxMessage(wxId,"template_measure_result_notice","jktzcljgtz",patientDO.getOpenid(),first,null,null,3,new JSONObject(),keyword1,keyword2,keyword3,keyword4);
                    first= patientDO.getName()+" 最新测量血压值反馈";
                    keyword1 =  DateUtil.getStringDate();
                    keyword2 = "血压";
                    keyword3 = "【收缩压:106mmgh 舒张压:65mmgh】";
                    keyword4 = "请注意日常饮食";
                    messageUtil.putTemplateWxMessage(wxId,"template_measure_result_notice","jktzcljgtz",patientDO.getOpenid(),first,null,null,3,new JSONObject(),keyword1,keyword2,keyword3,keyword4);
                }
            }
        }
    }
}

+ 247 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/common/PermissionService.java

@ -0,0 +1,247 @@
package com.yihu.jw.care.service.common;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.care.dao.common.BaseLoginLogDao;
import com.yihu.jw.care.dao.role.DoctorRoleDao;
import com.yihu.jw.care.endpoint.consult.PatientConsultEndpoint;
import com.yihu.jw.doctor.dao.BaseDoctorDao;
import com.yihu.jw.doctor.dao.BaseDoctorHospitalDao;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
import com.yihu.jw.entity.base.doctor.BaseDoctorHospitalDO;
import com.yihu.jw.entity.base.login.BaseLoginLogDO;
import com.yihu.jw.entity.care.role.DoctorRole;
import com.yihu.jw.entity.hospital.consult.WlyyHospitalSysDictDO;
import com.yihu.jw.sms.dao.HospitalSysDictDao;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
/**
 * Created by yeshijie on 2022/3/14.
 */
@Service
public class PermissionService {
    private static final Logger logger = LoggerFactory.getLogger(PermissionService.class);
    @Autowired
    private JdbcTemplate jdbcTemplate;
    @Autowired
    private BaseLoginLogDao baseLoginLogDao;
    @Autowired
    private DoctorRoleDao doctorRoleDao;
    @Autowired
    private BaseDoctorDao doctorDao;
    @Autowired
    private HospitalSysDictDao hospitalSysDictDao;
    @Autowired
    private BaseDoctorHospitalDao doctorHospitalDao;
    /**
     * 获取医生机构
     * @param doctor
     * @return
     */
    public String getDoctorOrg(String doctor){
        List<BaseDoctorHospitalDO> doctorHospitalDOs = doctorHospitalDao.findByDoctorCode(doctor);
        if(doctorHospitalDOs.size()>0){
            return doctorHospitalDOs.get(0).getOrgCode();
        }
        return "";
    }
    /**
     * 是否管理员
     * @return 0没开启验证或是管理员(或非医生) 1没权限 userId实际登录者id
     */
    public String isAdmin(){
        WlyyHospitalSysDictDO wlyyHospitalSysDictDO = hospitalSysDictDao.findById("noPermission");
        if(wlyyHospitalSysDictDO==null||"0".equals(wlyyHospitalSysDictDO.getDictCode())){
            return "0";
        }
        BaseLoginLogDO loginLogDO = getLoginLog();
        if(loginLogDO == null){
            //该操作没有权限"
            return "1";
        }
        String userId = loginLogDO.getUserId();
        //目前只判断医生端
        if("3".equals(loginLogDO.getLoginType())){
            //是否管理员
            List<DoctorRole> roleList = doctorRoleDao.findUserRole(userId);
            if(roleList.size()>0){
                //管理员不做权限验证
                return "0";
            }
            return userId;
        }
        return "0";
    }
    /**
     * 判断是否有权限
     *  loginType 1user 登录 2医生登录 3居民登录 4第三方同步患者账号 5支付宝登录 6第三方登录-医联康护 7家人登录
     *  type 类型 0只能管理员访问,1doctor相关 2生日祝福模板
     *  param 参数 不同类型参数不一样
     * @return true表示没权限
     */
    public boolean noPermission(int type, JSONObject param){
        WlyyHospitalSysDictDO wlyyHospitalSysDictDO = hospitalSysDictDao.findById("noPermission");
        if(wlyyHospitalSysDictDO==null||"0".equals(wlyyHospitalSysDictDO.getDictCode())){
            return false;
        }
        BaseLoginLogDO loginLogDO = getLoginLog();
        if(loginLogDO == null){
            logger.info("loginLogDO=null,该操作没有权限");
            return true;
        }
        String userId = "";
        String LoginType=loginLogDO.getLoginType();
        //演示模式
        if(isObserver()){
            userId = getUID();
            BaseDoctorDO doctorDO = doctorDao.findById(userId);
            if (2==doctorDO.getLevel()||4==doctorDO.getLevel()){
                LoginType="2";
            }
        } else {
            userId = loginLogDO.getUserId();
        }
        //目前只判断医生端
        if("2".equals(LoginType)){
            //是否管理员
            List<DoctorRole> roleList = doctorRoleDao.findUserRole(userId);
            if(roleList.size()>0){
                //管理员不做权限验证
                return false;
            }
            if(type == 0){
                return true;
            }
            if(type == 1){
                String doctorId = param.getString("doctorId");
                if(!userId.equals(doctorId)){
                    return true;
                }
            }
//            BaseDoctorDO doctorDO = doctorDao.findById(userId);
            //判断角色 1社区医生,2社工, 3教师,4助老员
        }
        return false;
    }
    public String getUID(){
        if (isObserver()){
            return getAgentUID();
        }else {
            BaseLoginLogDO loginLogDO = getLoginLog();
            if(loginLogDO != null){
                return loginLogDO.getUserId();
            }
        }
        return null;
    }
    private BaseLoginLogDO getLoginLog(){
        String accessToken = this.extractToken(getRequest());
        BaseLoginLogDO loginLogDO = baseLoginLogDao.findByToken(accessToken);
        return loginLogDO;
    }
    private String extractToken(HttpServletRequest request) {
        String accessToken = request.getHeader("token");
        if (null == accessToken) {
            accessToken = request.getParameter("token");
        }
        return accessToken;
    }
    public HttpServletRequest getRequest(){
        return ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
    }
    //判断社工/助老员是否为患者的服务医生
    public boolean isOlderServerDoctor(String doctor,String patient){
        try {
            WlyyHospitalSysDictDO wlyyHospitalSysDictDO = hospitalSysDictDao.findById("noPermission");
            if(wlyyHospitalSysDictDO==null||"0".equals(wlyyHospitalSysDictDO.getDictCode())){
                return false;
            }
            //先判断医生信息是否有问题
            JSONObject param = new JSONObject();
            param.put("doctorId",doctor);
            if (noPermission(1,param)){
                return true;
            }
            String sql = " SELECT sum(total) from ( " +
                    "select count(id) as total from base_patient_helper ph where ph.doctor = '"+doctor+"' and patient='"+patient+"' and del=1 " +
                    "UNION all " +
                    "SELECT count(d.id) as total 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 = '"+patient+"' and d.id='"+doctor+"' and d.del=1)A ";
            Integer total = jdbcTemplate.queryForObject(sql,Integer.class);
            return total>0?false:true;
        }catch (Exception e){
            e.printStackTrace();
            return true;
        }
    }
    public org.json.JSONObject getAgent(HttpServletRequest request) {
        try {
            String userAgent = request.getHeader("userAgent");
            if (StringUtils.isEmpty(userAgent)) {
                userAgent = request.getHeader("User-Agent");
            }
            System.out.println("userAgent:" + userAgent);
            return new org.json.JSONObject(userAgent);
        } catch (Exception e) {
            return null;
        }
    }
    //是否为演示模式
    public boolean isObserver(){
        HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
        org.json.JSONObject json = getAgent(request);
        String observer = json.has("observer") ? json.getString("observer") : "";
        //为演示模式
        if(StringUtils.isNotBlank(observer)&&"1".equals(observer)){
            return true;
        }
        return false;
    }
    public String getAgentUID() {
        try {
            HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
            String userAgent = request.getHeader("userAgent");
            if (org.springframework.util.StringUtils.isEmpty(userAgent)) {
                userAgent = request.getHeader("User-Agent");
            }
            JSONObject json = JSON.parseObject(userAgent);
            return json.getString("uid");
        } catch (Exception e) {
            return null;
        }
    }
}

+ 4 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/consult/ConsultService.java

@ -204,6 +204,10 @@ public class ConsultService {
            } else {
                endId = d.getId();
                endName = d.getName();
                if(org.apache.commons.lang3.StringUtils.isNotBlank(consultTeam.getDoctor())&&!endOperator.equals(consultTeam.getDoctor())){
                    //没权限关闭
                    return -3;
                }
            }
            obj = imUtil.endTopics(consultTeam.getDoctor(), endId, endName, consultTeam.getConsult());
        }

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

@ -241,7 +241,7 @@ public class ConsultTeamService {
                BasePatientDO family3 = patientDao.findById(patientId);
                messageUtil.putTemplateWxMessage(wxId,"template_error_notice","jjhjyctz",family3.getOpenid(),patientDO.getName()+"发起紧急呼叫",null,null,36,templateJson, DateUtil.getStringDate(),"紧急呼叫",title+",请及时核实处理");
                messageUtil.putTemplateWxMessage(wxId,"template_error_notice","jjhjyctz",family3.getOpenid(),patientDO.getName()+"发起紧急呼叫",null,null,3,templateJson, DateUtil.getStringDate(),"紧急呼叫",title+",请及时核实处理");
            }
        }
@ -466,7 +466,7 @@ public class ConsultTeamService {
                BasePatientDO family3 = patientDao.findById(patientId);
                messageUtil.putTemplateWxMessage(wxId,"template_error_notice","afjhyctz",family3.getOpenid(),title,null,null,36,templateJson, DateUtil.getStringDate(),"安防监护",title+",请及时核实处理");
                messageUtil.putTemplateWxMessage(wxId,"template_error_notice","afjhyctz",family3.getOpenid(),title,null,null,3,templateJson, DateUtil.getStringDate(),"安防监护",title+",请及时核实处理");
            }
        }
@ -513,7 +513,7 @@ public class ConsultTeamService {
        }
        ConsultDo consult = consultDao.findOne(consultTeam.getConsult());
        String sessionId = patient + consultTeam.getType();
        String sessionId = patient + "_"+consultTeam.getType();
        String operatorId = endOperator;
        String operatorName=null;
        if (endType==1){
@ -524,7 +524,7 @@ public class ConsultTeamService {
            operatorName = doctorDO.getName();
        }
        try {
            JSONObject obj =  imUtill.endTopics(sessionId,operatorId,operatorName,consultTeam.getConsult());
                JSONObject obj =  imUtill.endTopics(sessionId,operatorId,operatorName,consultTeam.getConsult());
            if (obj == null||obj.getInteger("status") == -1) {
                return false;
            }
@ -549,14 +549,6 @@ public class ConsultTeamService {
            return -1;
        }
//        //新增续方咨询结束判断 (续方未审核时不可由医生或居民关闭)
//        if (consultTeam.getType() == 8) {
//            Prescription prescription = prescriptionDao.findByCode(consultTeam.getRelationCode());
//            if (prescription.getStatus() == 0) {
//                return -2;
//            }
//        }
        String endName = "";
        String endId = "";
        //结束咨询才发送推送给IM文字消息
@ -575,6 +567,11 @@ public class ConsultTeamService {
            }
        }
        if(StringUtils.isNotBlank(consultTeam.getDoctor())&&!endOperator.equals(consultTeam.getDoctor())){
            //没权限关闭
            return -3;
        }
        JSONObject obj = imUtill.endTopics(consultTeam.getPatient(), endId, endName, consultTeam.getConsult());
        if (obj == null) {
            throw new RuntimeException("IM消息结束异常!");

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

@ -15,6 +15,7 @@ import com.yihu.jw.entity.care.doorCoach.BaseDoorCoachOrderDO;
import com.yihu.jw.hospital.dict.WlyyHospitalSysDictDao;
import com.yihu.jw.im.service.ImService;
import com.yihu.jw.org.dao.BaseOrgDao;
import com.yihu.jw.patient.service.BasePatientService;
import com.yihu.jw.restmodel.web.PageEnvelop;
import com.yihu.jw.util.common.IdCardUtil;
import com.yihu.jw.util.date.DateUtil;
@ -63,6 +64,8 @@ public class CareDoctorService extends BaseJpaService<BaseDoctorDO, BaseDoctorDa
    private DeviceService deviceService;
    @Autowired
    private BirthdayWishesService birthdayWishesService;
    @Autowired
    private BasePatientService basePatientService;
    /**
     * 更新在线状态
@ -173,7 +176,7 @@ public class CareDoctorService extends BaseJpaService<BaseDoctorDO, BaseDoctorDa
        Integer sex = jsonObject.getInteger("sex");
        String introduce = jsonObject.get("introduce").toString();
        String expertise = jsonObject.get("expertise").toString();
        String photo = jsonObject.get("photo").toString();
        String photo = null==jsonObject.get("photo")?null:jsonObject.get("photo").toString();
        BaseDoctorDO doctorDO = baseDoctorDao.findOne(doctorId);
        if (doctorDO!=null){
            doctorDO.setIntroduce(introduce);
@ -181,6 +184,17 @@ public class CareDoctorService extends BaseJpaService<BaseDoctorDO, BaseDoctorDa
            doctorDO.setPhoto(photo);
            doctorDO.setName(name);
            doctorDO.setSex(sex);
            if (org.apache.commons.lang3.StringUtils.isBlank(doctorDO.getPhoto())){
                String hzPhoto= basePatientService.getHzAvatar(2,doctorDO.getLevel()+"",null,null==doctorDO.getSex()?"":doctorDO.getSex()+"",doctorDO.getIdcard());
                doctorDO.setPhoto(hzPhoto);
            }else {
                String sql = " select count(id) from wlyy_hospital_sys_dict where dict_name='hz_default_avatar' and dict_value='"+doctorDO.getPhoto()+"' ";
                Integer defaultAvatar =  jdbcTemplate.queryForObject(sql,Integer.class);
                if (defaultAvatar>0){
                    String hzPhoto= basePatientService.getHzAvatar(2,doctorDO.getLevel()+"",null,null==doctorDO.getSex()?"":doctorDO.getSex()+"",doctorDO.getIdcard());
                    doctorDO.setPhoto(hzPhoto);
                }
            }
            baseDoctorDao.save(doctorDO);
        }
        return true;
@ -573,7 +587,7 @@ public class CareDoctorService extends BaseJpaService<BaseDoctorDO, BaseDoctorDa
                "   base_life_care_order o  " +
                " LEFT JOIN base_patient p ON o.patient = p.id " +
                " WHERE  " +
                "  o.hospital = 'hospital' "+
                "  o.hospital = '"+hospital+"' "+
                " AND o.status = 1 and o.pay_status>0  ";
        Long count = jdbcTemplate.queryForObject(countSql,Long.class);
        if (count>0){
@ -628,7 +642,7 @@ public class CareDoctorService extends BaseJpaService<BaseDoctorDO, BaseDoctorDa
                "   base_life_care_order o  " +
                " LEFT JOIN base_patient p ON o.patient = p.id " +
                " WHERE  " +
                "  o.hospital = 'hospital' "+
                "  o.hospital = '"+hospital+"' "+
                " AND o.status = 1 and o.pay_status>0  ";
        Long count = jdbcTemplate.queryForObject(countSql,Long.class);
        if (count>0){

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

@ -495,6 +495,9 @@ public class DoctorDoorCoachOrderService {
        if (null == doorServiceOrder) {
            throw new Exception("该工单不存在");
        }
        if(!receiver.equals(doorServiceOrder.getDoctor())){
            throw new Exception("该操作没有权限");
        }
        //给代预约医生发消息
        if (doorServiceOrder.getType() != null && doorServiceOrder.getType() == 3) {
            BaseDoctorDO baseDoctorDO = baseDoctorDao.findById(doorServiceOrder.getProxyPatient());//·

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

@ -10,6 +10,7 @@ import com.yihu.jw.entity.base.patient.BasePatientFamilyMemberDO;
import com.yihu.jw.entity.base.servicePackage.ServicePackageSignRecordDO;
import com.yihu.jw.im.util.ImUtil;
import com.yihu.jw.patient.dao.BasePatientDao;
import com.yihu.jw.patient.service.BasePatientService;
import com.yihu.jw.restmodel.ResponseContant;
import com.yihu.jw.util.common.IdCardUtil;
import com.yihu.jw.util.security.MD5;
@ -41,7 +42,8 @@ public class PatientFamilyMemberService extends BaseJpaService<BasePatientFamily
    private WeiXinAccessTokenUtils weiXinAccessTokenUtils;
    @Autowired
    private ImUtil imUtil;
    @Autowired
    private BasePatientService basePatientService;
    static {
@ -209,12 +211,34 @@ public class PatientFamilyMemberService extends BaseJpaService<BasePatientFamily
            if (m.getOpenidTime() == null) {
                m.setOpenidTime(new Date());
            }
            if (org.apache.commons.lang3.StringUtils.isBlank(m.getPhoto())){
                String hzPhoto= basePatientService.getHzAvatar(1,null,m.getArchiveType()+"",null==m.getSex()?"":m.getSex()+"",m.getIdcard());
                m.setPhoto(hzPhoto);
            }else{
                String sql = " select count(id) from wlyy_hospital_sys_dict where dict_name='hz_default_avatar' and dict_value='"+m.getPhoto()+"' ";
                Integer defaultAvatar =  jdbcTemplate.queryForObject(sql,Integer.class);
                if (defaultAvatar>0){
                    String hzPhoto= basePatientService.getHzAvatar(1,null,m.getArchiveType()+"",null==m.getSex()?"":m.getSex()+"",m.getIdcard());
                    m.setPhoto(hzPhoto);
                }
            }
            patientDao.save(m);
        } else if (StringUtils.isBlank(p.getOpenid()) && StringUtils.isNotBlank(m.getOpenid()) && !"undefined".equals(m.getOpenid())) {
            p.setOpenid(m.getOpenid());
            if (p.getOpenidTime() == null) {
                p.setOpenidTime(new Date());
            }
            if (org.apache.commons.lang3.StringUtils.isBlank(p.getPhoto())){
                String hzPhoto= basePatientService.getHzAvatar(1,null,p.getArchiveType()+"",null==p.getSex()?"":p.getSex()+"",p.getIdcard());
                p.setPhoto(hzPhoto);
            }else{
                String sql = " select count(id) from wlyy_hospital_sys_dict where dict_name='hz_default_avatar' and dict_value='"+p.getPhoto()+"' ";
                Integer defaultAvatar =  jdbcTemplate.queryForObject(sql,Integer.class);
                if (defaultAvatar>0){
                    String hzPhoto= basePatientService.getHzAvatar(1,null,p.getArchiveType()+"",null==p.getSex()?"":p.getSex()+"",p.getIdcard());
                    p.setPhoto(hzPhoto);
                }
            }
            patientDao.save(p);
        }
@ -278,6 +302,17 @@ public class PatientFamilyMemberService extends BaseJpaService<BasePatientFamily
                basePatientDO.setDel("1");
                basePatientDO.setLocked(0);
                basePatientDO.setEnabled(1);
                if (org.apache.commons.lang3.StringUtils.isBlank(basePatientDO.getPhoto())){
                    String hzPhoto= basePatientService.getHzAvatar(1,null,basePatientDO.getArchiveType()+"",null==basePatientDO.getSex()?"":basePatientDO.getSex()+"",basePatientDO.getIdcard());
                    basePatientDO.setPhoto(hzPhoto);
                }else{
                    String sql = " select count(id) from wlyy_hospital_sys_dict where dict_name='hz_default_avatar' and dict_value='"+basePatientDO.getPhoto()+"' ";
                    Integer defaultAvatar =  jdbcTemplate.queryForObject(sql,Integer.class);
                    if (defaultAvatar>0){
                        String hzPhoto= basePatientService.getHzAvatar(1,null,basePatientDO.getArchiveType()+"",null==basePatientDO.getSex()?"":basePatientDO.getSex()+"",basePatientDO.getIdcard());
                        basePatientDO.setPhoto(hzPhoto);
                    }
                }
                patientDao.save(basePatientDO);
                addPatient = basePatientDO;
            }else {

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

@ -116,11 +116,11 @@ public class PatientLableService extends BaseJpaService<WlyyPatientLabelDO, Wlyy
        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 " +
                    "   WHERE ph.patient = p.id and ph.doctor='"+doctor+"' and p.del=1 and ph.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 ";
                    "   WHERE ph.patient = p.id and ph.doctor='"+doctor+"' and p.del=1 and ph.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+"%') ";

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

@ -559,7 +559,9 @@ public class LifeCareOrderService extends BaseJpaService<LifeCareOrderDO, LifeCa
                    logger.error(failMsg);
                    return result;
                }
                orderDO.setPayStatus(1);
                orderDO.setPayWay(1);
                orderDO.setPayTime(new Date());
            }
            Integer type = orderDO.getType();
            if (type==1||type==2){

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

@ -366,7 +366,7 @@ public class DoctorMessageService {
                    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 ";
                                "WHERE  o.hospital = '"+hospital+"'  AND o.`status` = 1 ";
                        total += jdbcTemplate.queryForObject(sql,Integer.class);
                    }
                }
@ -402,8 +402,8 @@ public class DoctorMessageService {
                    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 ";
                        sql =" SELECT count(o.id)   FROM  base_life_care_order o LEFT JOIN base_patient p ON o.patient = p.id and p.del=1  " +
                                "WHERE  o.hospital = '"+hospital+"'  AND o.`status` = 1 ";
                        total += jdbcTemplate.queryForObject(sql,Integer.class);
                    }
                }
@ -413,59 +413,47 @@ public class DoctorMessageService {
    }
    //助老员
    public JSONObject getHelperPreventLost(String doctor,String id,String type){
    public JSONObject helperTodoWork(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 = new ArrayList<>();
            if(doctorServicePermissionsService.isPermission(doctor,10)==1){
                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 ";
                        sqlResult  = jdbcTemplate.queryForList(sql);
            }
            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 = new ArrayList<>();
            if(doctorServicePermissionsService.isPermission(doctor,8)==1){
                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 ";
                sqlResult  = jdbcTemplate.queryForList(sql);
            }
            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<BaseDoctorHospitalDO> doctorHospitalDOs = doctorHospitalDao.findByDoctorCode(doctor);
            List<Map<String,Object>> sqlResult = new ArrayList<>();
            if(doctorServicePermissionsService.isPermission(doctor,7)==1){
                String sql = "";
                if (doctorHospitalDOs.size()>0) {
                    sql =" SELECT o.id,o.patient_name,DATE_FORMAT(o.create_time,'%Y-%m-%d %H:%i:%S') create_time,'fifeCare' as service_type   FROM  base_life_care_order o LEFT JOIN base_patient p ON o.patient = p.id and p.del=1  " +
                            "WHERE  o.hospital = '"+doctorHospitalDOs.get(0).getOrgCode()+"'  AND o.`status` = 1 ";
                    sqlResult  = jdbcTemplate.queryForList(sql);
                }
            }
            List<Map<String,Object>> sqlResult  = jdbcTemplate.queryForList(sql);
            result.put("fifeCare",sqlResult);
        }

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

@ -22,6 +22,7 @@ import com.yihu.jw.entity.care.sign.CapacityAssessmentRecordDO;
import com.yihu.jw.im.util.ImUtil;
import com.yihu.jw.patient.dao.BasePatientDao;
import com.yihu.jw.patient.service.BasePatientMedicardCardService;
import com.yihu.jw.patient.service.BasePatientService;
import com.yihu.jw.restmodel.ResponseContant;
import com.yihu.jw.restmodel.web.PageEnvelop;
import com.yihu.jw.sms.dao.HospitalSysDictDao;
@ -83,6 +84,8 @@ public class CarePatientService extends BaseJpaService<BasePatientDO, BasePatien
    private BaseCapacityLabelDao capacityLabelDao;
    @Autowired
    private ObjectMapper objectMapper;
    @Autowired
    private BasePatientService basePatientService;
    /**
     * 获取能力状况
@ -306,6 +309,17 @@ public class CarePatientService extends BaseJpaService<BasePatientDO, BasePatien
            patientBrief.setMobile(patientDetail.getMobile());
        }
        patientBrief.setMobileRemarks(patientDetail.getMobileRemarks());
        if (org.apache.commons.lang3.StringUtils.isBlank(patientBrief.getPhoto())){
            String hzPhoto= basePatientService.getHzAvatar(1,null,patientBrief.getArchiveType()+"",null==patientBrief.getSex()?"":patientBrief.getSex()+"",patientBrief.getIdcard());
            patientBrief.setPhoto(hzPhoto);
        }else{
            String sql = " select count(id) from wlyy_hospital_sys_dict where dict_name='hz_default_avatar' and dict_value='"+patientBrief.getPhoto()+"' ";
            Integer defaultAvatar =  jdbcTemplate.queryForObject(sql,Integer.class);
            if (defaultAvatar>0){
                String hzPhoto= basePatientService.getHzAvatar(1,null,patientBrief.getArchiveType()+"",null==patientBrief.getSex()?"":patientBrief.getSex()+"",patientBrief.getIdcard());
                patientBrief.setPhoto(hzPhoto);
            }
        }
        patientDao.save(patientBrief);
        JSONObject jsonObject1 = null;
        if (jsonObject.containsKey("signRecordDO")){

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

@ -9,6 +9,7 @@ import com.yihu.jw.care.dao.device.*;
import com.yihu.jw.care.dao.security.*;
import com.yihu.jw.care.dao.team.BaseTeamMemberDao;
import com.yihu.jw.care.service.common.DictService;
import com.yihu.jw.care.service.common.PermissionService;
import com.yihu.jw.care.service.consult.ConsultTeamService;
import com.yihu.jw.care.service.contacts.ContactsService;
import com.yihu.jw.care.service.device.DeviceService;
@ -145,6 +146,8 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
    private HealthIndexUtil healthIndexUtil;
    @Autowired
    private DeviceService deviceService;
    @Autowired
    private PermissionService permissionService;
    private Logger logger = LoggerFactory.getLogger(SecurityMonitoringOrderService.class);
@ -1322,6 +1325,13 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
                one.setUpdateUserName(doctorDO.getName());
            }
        }
        //安防救助编辑服务小结前不会有医生
        if(permissionService.isOlderServerDoctor(doctor,one.getPatient())){
            String failMsg = "该操作没有权限";
            result.put(ResponseContant.resultFlag, ResponseContant.fail);
            result.put(ResponseContant.resultMsg,failMsg);
            return result;
        }
        if (one == null) {
            String failMsg = "工单不存在";
            result.put("resultFlag", 0);

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

@ -11,6 +11,7 @@ import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.entity.care.archive.ArchiveDO;
import com.yihu.jw.patient.dao.BasePatientDao;
import com.yihu.jw.patient.dao.BasePatientMedicareCardDao;
import com.yihu.jw.patient.service.BasePatientService;
import com.yihu.jw.restmodel.web.PageEnvelop;
import com.yihu.jw.util.common.IdCardUtil;
import com.yihu.mysql.query.BaseJpaService;
@ -50,6 +51,8 @@ public class ArchiveService extends BaseJpaService<ArchiveDO, ArchiveDao> {
    private ServicePackageService servicePackageService;
    @Autowired
    private DeviceService deviceService;
    @Autowired
    private BasePatientService basePatientService;
    /**
@ -164,6 +167,17 @@ public class ArchiveService extends BaseJpaService<ArchiveDO, ArchiveDao> {
        patientDO.setCreateTime(new Date());
        patientDO.setUpdateTime(new Date());
        patientDO.setPatientStatus("1");
        if (org.apache.commons.lang3.StringUtils.isBlank(patientDO.getPhoto())){
            String hzPhoto= basePatientService.getHzAvatar(1,null,patientDO.getArchiveType()+"",null==patientDO.getSex()?"":patientDO.getSex()+"",patientDO.getIdcard());
            patientDO.setPhoto(hzPhoto);
        }else{
            String sql = " select count(id) from wlyy_hospital_sys_dict where dict_name='hz_default_avatar' and dict_value='"+patientDO.getPhoto()+"' ";
            Integer defaultAvatar =  jdbcTemplate.queryForObject(sql,Integer.class);
            if (defaultAvatar>0){
                String hzPhoto= basePatientService.getHzAvatar(1,null,patientDO.getArchiveType()+"",null==patientDO.getSex()?"":patientDO.getSex()+"",patientDO.getIdcard());
                patientDO.setPhoto(hzPhoto);
            }
        }
        if(!patientDao.existsByIdcardAndDel(idcard,"1")){
            patientDO = patientDao.save(patientDO);
        }
@ -222,9 +236,8 @@ public class ArchiveService extends BaseJpaService<ArchiveDO, ArchiveDao> {
        if(StringUtils.isNotBlank(name)){
            filters += " and p.name like '%"+name+"%' ";
        }
        filters+= " GROUP BY p.id ";
        String orderBy = "  ORDER BY ph.create_time DESC " +
        String orderBy = " GROUP BY p.id ORDER BY ph.create_time DESC " +
                "LIMIT "+ (page - 1) * size + "," + size;
        List<Map<String,Object>> list = jdbcTemplate.queryForList(sql+filters+orderBy);
@ -247,7 +260,7 @@ public class ArchiveService extends BaseJpaService<ArchiveDO, ArchiveDao> {
        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){
    public PageEnvelop<List<Map<String,Object>>> helperArchiveList(String doctorId,String hospital, int page, int size,Integer signStatus,String name,String filterMyPatient){
        BaseDoctorDO doctorDO = doctorDao.findById(doctorId);
        if (null==doctorDO){
            return null;
@ -262,14 +275,16 @@ public class ArchiveService extends BaseJpaService<ArchiveDO, ArchiveDao> {
                    "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)){//
        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 ) ";
        if (StringUtils.isNotBlank(filterMyPatient)){//
            filter += " and p.id not in (select patient from base_patient_helper where doctor='"+doctorId+"' and del=1) ";
        }
        sql= sql+filter+ " group by p.id   "+"LIMIT "+ (page - 1) * size + "," + size ;
        List<Map<String,Object>> list = jdbcTemplate.queryForList(sql);

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

@ -330,7 +330,7 @@ public class ServicePackageService extends BaseJpaService<ServicePackageDO, Serv
    public List<Map<String,Object>> fingdDoctorByPaitenId(String patientId,Integer doctorLevel){
        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  " +
                "               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 = '"+patientId+"' and d.doctor_level='"+doctorLevel+"' " ;
                "               and m.del = '1' and sr.patient = '"+patientId+"' and d.doctor_level='"+doctorLevel+"' and d.del=1 " ;
        return jdbcTemplate.queryForList(sql);
    }
@ -853,48 +853,56 @@ public class ServicePackageService extends BaseJpaService<ServicePackageDO, Serv
     */
    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[] patients = patient.split(",");
        List<BasePatientHelperDO> list = new ArrayList<>();
        for (String tmp:patients){
            BasePatientHelperDO patientHelperDO =  patientHelperDao.findByPatientAndDoctor(tmp,doctor);
            if (null!=patientHelperDO){
                result.put(ResponseContant.resultFlag,-1);
                result.put(ResponseContant.resultMsg,patientHelperDO.getPatientName()+"居民已存在,无需重复添加");
                return result;
            }
            BasePatientDO patientDO = patientDao.findById(tmp);
            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='"+tmp+"' ) ";
            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(tmp);
            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());
            list.add(patientHelperDO);
        }
        //只有存在签约的居民才可被助老员关联
        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;
        if (list.size()>0){
            patientHelperDao.save(list);
        }
        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;
@ -903,29 +911,37 @@ public class ServicePackageService extends BaseJpaService<ServicePackageDO, Serv
    /**
     * 助老员删除监护老人
     */
    public JSONObject helperDelPatient(String patient,String doctor){
    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;
        String[] patients = patient.split(",");
        List<BasePatientHelperDO> list = new ArrayList<>();
        for (String tmp : patients) {
            BasePatientHelperDO patientHelperDO = patientHelperDao.findByPatientAndDoctor(tmp, 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());
            list.add(patientHelperDO);
        }
        BaseDoctorDO doctorDO = doctorDao.findById(doctor);
        if (null==doctorDO){
            result.put(ResponseContant.resultFlag,-1);
            result.put(ResponseContant.resultMsg,"助老员不存在,无法操作");
            return result;
        if (list.size() > 0) {
            patientHelperDao.save(list);
        }
        patientHelperDO.setDel("0");
        patientHelperDO.setUpdateTime(new Date());
        patientHelperDO.setUpdateUser(doctorDO.getId());
        patientHelperDO.setUpdateUserName(doctorDO.getName());
        result.put(ResponseContant.resultFlag,200);
        result.put(ResponseContant.resultMsg,"删除成功");
        result.put(ResponseContant.resultFlag, 200);
        result.put(ResponseContant.resultMsg, "删除成功");
        return result;
    }
    }
    /**********************************助老员部分******************************************************/
    /**
     * 根据居民和服务项查找医生

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

@ -132,7 +132,7 @@ public class BaseVisitService {
     * @param visitContent
     * @param visitImg
     */
    public void adminAddVisit(String doctorCode,String patientCode,String visitContent,String visitImg) throws Exception{
    public void adminAddVisit(String doctorCode,String patientCode,String visitContent,String visitImg,String deviceMaintenance,String health,String lifeConsult) throws Exception{
        BaseVisitDO visitDO = new BaseVisitDO();
        //获取患者信息
        BasePatientDO patient = patientDao.findById(patientCode);
@ -153,6 +153,9 @@ public class BaseVisitService {
        visitDO.setVisitDate(new Date());
        visitDO.setStatus("1");
        visitDO.setType("2");
        visitDO.setDeviceMaintenance(deviceMaintenance);
        visitDO.setHealth(health);
        visitDO.setLifeConsult(lifeConsult);
        visitDO.setVisitContent(visitContent);
        visitDO.setVisitImg(visitImg);
        baseVisitDao.save(visitDO);
@ -198,6 +201,9 @@ public class BaseVisitService {
        re.put("patientName", visitDO.getPatientName());
        re.put("visitImg",visitDO.getVisitImg());
        re.put("visitContent",visitDO.getVisitContent());
        re.put("deviceMaintenance",visitDO.getDeviceMaintenance());
        re.put("health",visitDO.getHealth());
        re.put("lifeConsult",visitDO.getLifeConsult());
        BasePatientDO patient = patientDao.findById(visitDO.getPatient());
        if (patient != null) {

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

@ -279,8 +279,8 @@ 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"));
            case 38://设备异常通知
                wxTemplateConfigDO.setUrl(wxTemplateConfigDO.getUrl()+"?openid=" + openid+"&type=43");
                break;
        }
        return wxTemplateConfigDO;

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

@ -408,7 +408,7 @@ public class DeviceService {
                                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);
                                            boolean success = messageUtil.putTemplateWxMessage(wxId,"template_error_notice","lrjjztgxtz",tmp.get("openid").toString(),first,null,null,3,new JSONObject(),DateUtil.getStringDate(),keyword2,keyword3);
                                        }
                                    }
                                }

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

@ -210,39 +210,40 @@ public class DeviceUploadService {
                    //发送模板消息通知家属
                    List<Map<String,Object>> families = patientFamilyService.getPatientFamilyList(patientDO.getId(),"3");
                    if (families.size()>0){
                        String keyword1 = "";
                        String keyword1 = DateUtil.getStringDate();
                        String keyword2 = "";
                        String keyword3 = "";
                        String keyword4 = "请注意日常饮食";
                        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】";
                            keyword3 = "【"+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;
                                case "1":keyword2 = "早餐前血糖"; break;
                                case "2":keyword2 = "早餐后血糖"; break;
                                case "3":keyword2 = "午餐前血糖"; break;
                                case "4":keyword2 = "午餐后血糖"; break;
                                case "5":keyword2 = "晚餐前血糖"; break;
                                case "6":keyword2 = "晚餐后血糖"; break;
                                case "7":keyword2 = "睡前血糖";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,"请注意日常饮食");
                                        boolean success = messageUtil.putTemplateWxMessage(wxId,"template_measure_result_notice","jktzcljgtz",patientDO.getOpenid(),first,null,null,3,new com.alibaba.fastjson.JSONObject(),keyword1,keyword2,keyword3,keyword4);
                                    }
                                }
                            }
                        }
                        if ("2".equals(result.getType())){//血压
                            first= patientDO.getName()+" 最新测量血压值反馈";
                            keyword1 = "【收缩压:"+result.getValue1()+"mmgh 舒张压:"+result.getValue2()+"mmgh】";
                            keyword2 = "血压";
                            keyword3 = "【收缩压:"+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,"请注意日常饮食");
                                        boolean success = messageUtil.putTemplateWxMessage(wxId,"template_measure_result_notice","jktzcljgtz",patientDO.getOpenid(),first,null,null,3,new com.alibaba.fastjson.JSONObject(),keyword1,keyword2,keyword3,keyword4);
                                    }
                                }
                            }

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

@ -279,8 +279,8 @@ 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"));
            case 38://设备异常通知
                wxTemplateConfigDO.setUrl(wxTemplateConfigDO.getUrl()+"?openid=" + openid+"&type=43");
                break;
        }
        return wxTemplateConfigDO;

Різницю між файлами не показано, бо вона завелика
+ 225 - 27
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/job/data/SaveDataPushJob.java


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

@ -0,0 +1,169 @@
package com.yihu.jw.care.service.device;
import com.yihu.jw.care.job.data.SaveDataPushJob;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Service
public class InitializeDataJobService {
    @Autowired
    JdbcTemplate jdbcTemplate;
    @Autowired
    SaveDataPushJob saveDataPushJob;
    public Object initialize(String date,String type){
        String filterOrg = "";//排除的测试机构
        String sqlOgr = "SELECT dict_code from wlyy_hospital_sys_dict WHERE dict_name = 'jkzl_org' and dict_code is not null ";
        List<String> Orglist =  jdbcTemplate.queryForList(sqlOgr,String.class);
        Map<String,String> jkzlOrgMap = new HashMap<>();
        if(Orglist.size()>0){
            jkzlOrgMap = Orglist.stream().collect(Collectors.toMap(String::toString,String::toString));
            filterOrg = " '" +String.join("','",Orglist)+ "' ";
        }
        String filterUser = " ";//排除的测试用户
        String sqltmp = "SELECT dict_code from wlyy_hospital_sys_dict WHERE (dict_name = 'jkzl_child' or dict_name = 'jkzl_older' " +
                "  or dict_name = 'jkzl_user' or dict_name = 'jkzl_helper'  or dict_name = 'jkzl_teacher' ) and dict_code is not null";
        List<String> listtmp = jdbcTemplate.queryForList(sqltmp,String.class);
        Map<String,String> jkzlUserMap = new HashMap<>();
        if (listtmp.size() > 0) {
            jkzlUserMap = listtmp.stream().collect(Collectors.toMap(String::toString,String::toString));
            filterUser = " '" +String.join("','",listtmp)+ "' ";
        }
        //签约老人id
        String signOlderSql="SELECT " +
                " DISTINCT p.id " +
                " FROM  " +
                " base_patient p INNER JOIN base_service_package_sign_record sr on p.id = sr.patient and sr.`status`=1 and  " +
                " p.id not in ("+filterUser+") " +
                " WHERE p.del = 1 and p.archive_type =1  " ;
        List<String> signOlderList = jdbcTemplate.queryForList(signOlderSql,String.class);
        Map<String,String> signOlderMap = signOlderList.stream().collect(Collectors.toMap(String::toString,String::toString));
        /**********************push start**************************/
        switch(type){
            case "1":
                //安防监护工单
                saveDataPushJob.saveSecurityMonitoringOrder(date,signOlderMap);
                break;
            case "2":
                //上门辅导工单
                saveDataPushJob.saveDoorCoachOrder(date,jkzlUserMap);
                //上门辅导 服务工单价格
                saveDataPushJob.saveDoorCoachFeeDetail(date);
                break;
            case "3":
                // 生活照料 工单
                saveDataPushJob.saveLifeCareOrder(date,signOlderMap);
                //生活照料 价格
                saveDataPushJob.saveLifeCareFeeDetail(date);
                break;
            case "4":
                //紧急救助工单
                saveDataPushJob.saveEmergencyAssistanceOrder(date,signOlderMap);
                break;
            case "5":
                //老人居民信息
                saveDataPushJob.saveOlderInfo(date,signOlderMap);
                //幼儿基本信息
                saveDataPushJob.saveInfantInfo(date);
                //服务项
                saveDataPushJob.saveServicePackageItem(date);
                break;
            case "6":
                //设备表
                saveDataPushJob.saveWlyyDevice(date);
                //老人签约信息
                saveDataPushJob.saveSignOlderInfo(date);
                //教师信息
                saveDataPushJob.saveTeacherInfo(date);
                break;
            case "7":
                //居民设备采集信息
                saveDataPushJob.saveDevicePushLog(date); //"2022-01-07"
                break;
            case "8":
                //机构
                saveDataPushJob.saveOldOrg(date,jkzlOrgMap);
                saveDataPushJob.saveHospitalOrg(date,jkzlOrgMap);
                saveDataPushJob.saveInfantOrg(date,jkzlOrgMap);
                break;
            case "9":
                //幼儿 活动 公艺 报名
                saveDataPushJob.saveActivity(date);
                //日常走访
                saveDataPushJob.saveVisit(date);
                break;
        }
        /**********************push end****************************/
        System.gc();
        return 1;
    }
    public void executeList(String[] sqls){
        for (String sql : sqls) {
            jdbcTemplate.execute(sql);
        }
    }
    public void deletePushData(){
        InitializeDataJobService initializeDataJobService = new InitializeDataJobService();
        /**********************del start*****************************/
        String[] sql = new String[20];
        //患者设备表
        //厦门设备信息表
        sql[1] = "DELETE from gsq_zhjd_zhylyjkglxt.wlyy_devices";
        //服务项
        sql[2] = "DELETE from gsq_zhjd_zhylyjkglxt.base_service_package_item";
        //安防监护服务工单
        sql[3] = "DELETE from gsq_zhjd_zhylyjkglxt.base_security_monitoring_order";
        //居民信息(居民就是患者)
        sql[4] = "DELETE from gsq_zhjd_zhylyjkglxt.base_patient";
        //生活照料工单
        sql[5] = "DELETE from gsq_zhjd_zhylyjkglxt.base_life_care_order";
        //服务工单价格明细(服务项价格,医生出诊费用)
        sql[6] ="DELETE from gsq_zhjd_zhylyjkglxt.base_life_care_fee_detail";
        //居民紧急救助服务工单
        sql[7] ="DELETE from gsq_zhjd_zhylyjkglxt.base_emergency_assistance_order";
        //上门辅导服务工单
        sql[8] = "DELETE from gsq_zhjd_zhylyjkglxt.base_door_coach_order";
        //上门辅导服务工单价格明细(服务项价格,医生出诊费用)
        sql[9]  ="DELETE from gsq_zhjd_zhylyjkglxt.base_door_coach_fee_detail";
        //烟感气感实时数据
        sql[10] ="DELETE from gsq_zhjd_zhylyjkglxt.base_device_health_index";
        //幼儿基本信息
        sql[11] ="DELETE from gsq_zhjd_zhylyjkglxt.base_infant_info";
        //服务包签约记录表
        sql[12] ="DELETE from gsq_zhjd_zhylyjkglxt.base_service_package_sign_record";
        //爱牵挂睡眠带数据
        sql[13] ="DELETE from gsq_zhjd_zhylyjkglxt.base_sleep_device";
        //爱牵挂X1手表睡眠数据
        sql[14] = "DELETE from gsq_zhjd_zhylyjkglxt.base_sleep_x1device";
        //云芯拐杖设备上传记录
        sql[15] ="DELETE from gsq_zhjd_zhylyjkglxt.base_yxdevice_index";
        //设备项目推送数据日志
        sql[16] ="DELETE from gsq_zhjd_zhylyjkglxt.device_data_push_log";
        //居民标签类别表
        sql[17] ="DELETE from gsq_zhjd_zhylyjkglxt.wlyy_patient_label";
        sql[18]  = "DELETE from gsq_zhjd_zhylyjkglxt.wlyy_patient_device";
        sql[19] = "DELETE from gsq_zhjd_zhylyjkglxt.base_life_care_order";
        initializeDataJobService.executeList(sql);
        /**********************del end*****************************/
    }
}

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

@ -57,6 +57,7 @@ public class PressureGlucoseNotService {
                    String first = "";
                    String keyword2="";
                    String keyword3="";
                    String remark = "";
                    String patientName = null==tmp.get("name")?"":tmp.get("name").toString();
                    String category_code = tmp.get("category_code").toString();
                    JSONObject jsonObject = new JSONObject();
@ -67,15 +68,17 @@ public class PressureGlucoseNotService {
                            keyword2="【血糖测量】";
                            keyword3=patientName+"血糖超7天未测量,请及时跟进";
                            jsonObject.put("type","1");
                            remark="血糖未测量通知";
                            break;
                        case "2":
                            first = patientName+"血压未测量";
                            keyword2="【血压测量】";
                            keyword3=patientName+"昨日未测量血压,请及时跟进";
                            jsonObject.put("type","2");
                            remark="血压未测量通知";
                            break;
                    }
                    messageUtil.putTemplateWxMessage(wxId,"template_error_notice","xyxtwcltz",familyTmo.get("openid").toString(),first,null,null,37,jsonObject,keyword1,keyword2,keyword3);
                    messageUtil.putTemplateWxMessage(wxId,"template_error_notice","xyxtwcltz",familyTmo.get("openid").toString(),first,null,remark,3,jsonObject,keyword1,keyword2,keyword3);
                }
            }
        }

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

@ -119,16 +119,16 @@ public class DeviceLostMessageUtil {
                    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);
                        }
                    }
//                    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,38,new JSONObject(),keyword1,keyword2,keyword3);
//                        }
//                    }
                }
            }

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

@ -160,8 +160,8 @@ 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"));
            case 38://设备异常通知
                wxTemplateConfigDO.setUrl(wxTemplateConfigDO.getUrl()+"?openid=" + openid+"&type=43");
                break;
        }
        return wxTemplateConfigDO;

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

@ -10,7 +10,7 @@ import com.yihu.jw.care.job.message.PatientSendUnreadJob;
import com.yihu.jw.care.service.BirthdayReminderService;
import com.yihu.jw.care.service.JobService;
import com.yihu.jw.care.service.WlyysimFlowVoiceService;
import com.yihu.jw.care.util.DateUtil;
import com.yihu.jw.care.service.device.InitializeDataJobService;
import com.yihu.jw.care.util.SystemConf;
import com.yihu.jw.restmodel.web.ObjEnvelop;
import io.swagger.annotations.Api;
@ -24,9 +24,7 @@ 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;
import java.util.HashMap;
import java.util.UUID;
/**
 * 任务启动
@ -48,6 +46,8 @@ public class JobController extends BaseController {
    private WlyysimFlowVoiceService wlyysimFlowVoiceService;
    @Autowired
    private YunXunDeviceService yunXunDeviceService;
    @Autowired
    private InitializeDataJobService initializeDataJobService;
    @RequestMapping(value = "/deviceLostAssociationJob", method = RequestMethod.POST)
    @ApiOperation("医养物联网检测大屏失联率")
@ -322,6 +322,28 @@ public class JobController extends BaseController {
        }
    }
    @RequestMapping(value = "/initialize",method = RequestMethod.POST)
    public String initializeDataJob(String date,String type){
        try {
            initializeDataJobService.initialize(date,type);
            return write(200,"成功");
        } catch (Exception e) {
            error(e);
            return error(-1,e.getMessage());
        }
    }
    //@RequestMapping(value = "/deletePushData",method = RequestMethod.POST)
    public String deletePushData(){
        try {
            initializeDataJobService.deletePushData();
            return write(200,"成功");
        } catch (Exception e) {
            error(e);
            return error(-1,e.getMessage());
        }
    }
    @RequestMapping(value = "/wlyySimFlowVoice", method = RequestMethod.POST)
    @ApiOperation("物联网卡流量语音初始化查询")

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

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

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

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

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

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

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

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

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

@ -0,0 +1,423 @@
package com.yihu.jw.care.zhylyjkglxt.entity;
import com.yihu.jw.entity.AssignedIdentityEntityWithOperator;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.util.Date;
@Table(name = "base_org")
@Entity
public class ZhBaseOrgDO extends AssignedIdentityEntityWithOperator {
    private String code; //机构代码,在工商局注册的代码,不能重复
    private String provinceCode; //省份标识
    private String provinceName; //省份名称
    private String cityCode; //城市标识
    private String cityName; //城市名称
    private String townCode; //区县标识
    private String townName; //区县名称
    private String streetCode; //街道标识
    private String streetName; //街道名称
    private String name; //机构名称
    private String alias; //机构别名
    private String spell; //机构名称拼音首字母
    private String type; //机构类型: 1.等级医院 2.社区医院3.养老机构 4.教育机构
    private String brief; //
    private String address; //
    private String photo; //
    private String longitude; //
    private String latitude; //
    private String legalperson; //
    private String orgAdmin; //
    private String orgUrl; //
    private String intro; //
    private String qrcode; //
    private String del; //
    private String createUser; //
    private String createUserName; //
    private Date createTime; //
    private String updateUser; //
    private String updateUserName; //
    private Date updateTime; //
    private String saasid; //
    private Integer orgLevel; //
    private String winNo; //
    private String mobile; //
    private Integer sort; //
    private String hisId; //
    private String credentials; //
    private String reportChapter; //
    private String logo; //
    private String adminMobile; //
    @Column(name = "code")
    public String getCode() {
        return code;
    }
    public void setCode(String code) {
        this.code = code;
    }
    @Column(name = "province_code")
    public String getProvinceCode() {
        return provinceCode;
    }
    public void setProvinceCode(String provinceCode) {
        this.provinceCode = provinceCode;
    }
    @Column(name = "province_name")
    public String getProvinceName() {
        return provinceName;
    }
    public void setProvinceName(String provinceName) {
        this.provinceName = provinceName;
    }
    @Column(name = "city_code")
    public String getCityCode() {
        return cityCode;
    }
    public void setCityCode(String cityCode) {
        this.cityCode = cityCode;
    }
    @Column(name = "city_name")
    public String getCityName() {
        return cityName;
    }
    public void setCityName(String cityName) {
        this.cityName = cityName;
    }
    @Column(name = "town_code")
    public String getTownCode() {
        return townCode;
    }
    public void setTownCode(String townCode) {
        this.townCode = townCode;
    }
    @Column(name = "town_name")
    public String getTownName() {
        return townName;
    }
    public void setTownName(String townName) {
        this.townName = townName;
    }
    @Column(name = "street_code")
    public String getStreetCode() {
        return streetCode;
    }
    public void setStreetCode(String streetCode) {
        this.streetCode = streetCode;
    }
    @Column(name = "street_name")
    public String getStreetName() {
        return streetName;
    }
    public void setStreetName(String streetName) {
        this.streetName = streetName;
    }
    @Column(name = "name")
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    @Column(name = "alias")
    public String getAlias() {
        return alias;
    }
    public void setAlias(String alias) {
        this.alias = alias;
    }
    @Column(name = "spell")
    public String getSpell() {
        return spell;
    }
    public void setSpell(String spell) {
        this.spell = spell;
    }
    @Column(name = "type")
    public String getType() {
        return type;
    }
    public void setType(String type) {
        this.type = type;
    }
    @Column(name = "brief")
    public String getBrief() {
        return brief;
    }
    public void setBrief(String brief) {
        this.brief = brief;
    }
    @Column(name = "address")
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
    @Column(name = "photo")
    public String getPhoto() {
        return photo;
    }
    public void setPhoto(String photo) {
        this.photo = photo;
    }
    @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;
    }
    @Column(name = "legalperson")
    public String getLegalperson() {
        return legalperson;
    }
    public void setLegalperson(String legalperson) {
        this.legalperson = legalperson;
    }
    @Column(name = "org_admin")
    public String getOrgAdmin() {
        return orgAdmin;
    }
    public void setOrgAdmin(String orgAdmin) {
        this.orgAdmin = orgAdmin;
    }
    @Column(name = "org_url")
    public String getOrgUrl() {
        return orgUrl;
    }
    public void setOrgUrl(String orgUrl) {
        this.orgUrl = orgUrl;
    }
    @Column(name = "intro")
    public String getIntro() {
        return intro;
    }
    public void setIntro(String intro) {
        this.intro = intro;
    }
    @Column(name = "qrcode")
    public String getQrcode() {
        return qrcode;
    }
    public void setQrcode(String qrcode) {
        this.qrcode = qrcode;
    }
    @Column(name = "del")
    public String getDel() {
        return del;
    }
    public void setDel(String del) {
        this.del = del;
    }
    @Override
    public String getCreateUser() {
        return createUser;
    }
    @Override
    public void setCreateUser(String createUser) {
        this.createUser = createUser;
    }
    @Override
    public String getCreateUserName() {
        return createUserName;
    }
    @Override
    public void setCreateUserName(String createUserName) {
        this.createUserName = createUserName;
    }
    @Override
    public String getUpdateUser() {
        return updateUser;
    }
    @Override
    public void setUpdateUser(String updateUser) {
        this.updateUser = updateUser;
    }
    @Override
    public String getUpdateUserName() {
        return updateUserName;
    }
    @Override
    public void setUpdateUserName(String updateUserName) {
        this.updateUserName = updateUserName;
    }
    @Override
    public Date getCreateTime() {
        return createTime;
    }
    @Override
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    @Override
    public Date getUpdateTime() {
        return updateTime;
    }
    @Override
    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }
    @Column(name = "saasid")
    public String getSaasid() {
        return saasid;
    }
    public void setSaasid(String saasid) {
        this.saasid = saasid;
    }
    @Column(name = "org_level")
    public Integer getOrgLevel() {
        return orgLevel;
    }
    public void setOrgLevel(Integer orgLevel) {
        this.orgLevel = orgLevel;
    }
    @Column(name = "win_no")
    public String getWinNo() {
        return winNo;
    }
    public void setWinNo(String winNo) {
        this.winNo = winNo;
    }
    @Column(name = "mobile")
    public String getMobile() {
        return mobile;
    }
    public void setMobile(String mobile) {
        this.mobile = mobile;
    }
    @Column(name = "sort")
    public Integer getSort() {
        return sort;
    }
    public void setSort(Integer sort) {
        this.sort = sort;
    }
    @Column(name = "his_id")
    public String getHisId() {
        return hisId;
    }
    public void setHisId(String hisId) {
        this.hisId = hisId;
    }
    @Column(name = "credentials")
    public String getCredentials() {
        return credentials;
    }
    public void setCredentials(String credentials) {
        this.credentials = credentials;
    }
    @Column(name = "report_chapter")
    public String getReportChapter() {
        return reportChapter;
    }
    public void setReportChapter(String reportChapter) {
        this.reportChapter = reportChapter;
    }
    @Column(name = "logo")
    public String getLogo() {
        return logo;
    }
    public void setLogo(String logo) {
        this.logo = logo;
    }
    @Column(name = "admin_mobile")
    public String getAdminMobile() {
        return adminMobile;
    }
    public void setAdminMobile(String adminMobile) {
        this.adminMobile = adminMobile;
    }
}

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

@ -0,0 +1,159 @@
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_visit")
public class ZhBaseVisitDO extends AssignedIdentityEntity {
    private String patient; //
    private String patientName; //
    private String type; //类型 1老人日常走访
    private String status; //状态 0计划中 1 已完成 2计划超时
    private Date visitDate; //完成走访时间
    private Date visitPlanDate; //计划走访时间
    private String doctor; //
    private String doctorName; //
    private String visitContent; //走访记录
    private String visitImg; //走访图片
    private Date createTime; //
    private String deviceMaintenance; //设备维护
    private String health; //健康情况
    private String lifeConsult; //生活咨询
    @Column(name = "patient")
    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 = "type")
    public String getType() {
        return type;
    }
    public void setType(String type) {
        this.type = type;
    }
    @Column(name = "status")
    public String getStatus() {
        return status;
    }
    public void setStatus(String status) {
        this.status = status;
    }
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+08:00")
    @Column(name = "visit_date")
    public Date getVisitDate() {
        return visitDate;
    }
    public void setVisitDate(Date visitDate) {
        this.visitDate = visitDate;
    }
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+08:00")
    @Column(name = "visit_plan_date")
    public Date getVisitPlanDate() {
        return visitPlanDate;
    }
    public void setVisitPlanDate(Date visitPlanDate) {
        this.visitPlanDate = visitPlanDate;
    }
    @Column(name = "doctor")
    public String getDoctor() {
        return doctor;
    }
    public void setDoctor(String doctor) {
        this.doctor = doctor;
    }
    @Column(name = "doctor_name")
    public String getDoctorName() {
        return doctorName;
    }
    public void setDoctorName(String doctorName) {
        this.doctorName = doctorName;
    }
    @Column(name = "visit_content")
    public String getVisitContent() {
        return visitContent;
    }
    public void setVisitContent(String visitContent) {
        this.visitContent = visitContent;
    }
    @Column(name = "visit_img")
    public String getVisitImg() {
        return visitImg;
    }
    public void setVisitImg(String visitImg) {
        this.visitImg = visitImg;
    }
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+08:00")
    @Column(name = "create_time")
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    @Column(name = "device_maintenance")
    public String getDeviceMaintenance() {
        return deviceMaintenance;
    }
    public void setDeviceMaintenance(String deviceMaintenance) {
        this.deviceMaintenance = deviceMaintenance;
    }
    @Column(name = "health")
    public String getHealth() {
        return health;
    }
    public void setHealth(String health) {
        this.health = health;
    }
    @Column(name = "life_consult")
    public String getLifeConsult() {
        return lifeConsult;
    }
    public void setLifeConsult(String lifeConsult) {
        this.lifeConsult = lifeConsult;
    }
}

+ 6 - 5
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/zhylyjkglxt/entity/ZhDeviceDetail.java

@ -1,12 +1,13 @@
package com.yihu.jw.care.zhylyjkglxt.entity;
import com.yihu.jw.entity.iot.gateway.IdEntity;
import com.yihu.jw.entity.AssignedIdentityEntity;
import javax.persistence.*;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
/**
 * Created by ysj on 2018/01/10.
@ -15,7 +16,7 @@ import java.util.Map;
@Entity
@Table(name = "wlyy_devices")
@SequenceGenerator(name="id_generated", sequenceName="wlyy_devices")
public class ZhDeviceDetail extends IdEntity {
public class ZhDeviceDetail extends AssignedIdentityEntity {
    private String deviceName;//设备名称
    private String deviceModel;//型号
    private String deviceCode;//设备唯一标识

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

@ -0,0 +1,42 @@
package com.yihu.jw.care.zhylyjkglxt.entity;
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_activity")
public class ZhInfantActivityDO extends AssignedIdentityEntity implements java.io.Serializable {
    private String type;
    private String total;
    private Date updateTime; //
    public String getType() {
        return type;
    }
    public void setType(String type) {
        this.type = type;
    }
    public String getTotal() {
        return total;
    }
    public void setTotal(String total) {
        this.total = total;
    }
    @Column(name = "update_time")
    public Date getUpdateTime() {
        return updateTime;
    }
    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }
}

+ 100 - 0
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/zhylyjkglxt/entity/ZhTeacherInfoDO.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.Table;
import java.util.Date;
@Table(name = "wlyy_teacher_info")
@Entity
public class ZhTeacherInfoDO extends AssignedIdentityEntity {
    private String name; //教师姓名
    private String sex; //教师性别
    private String age; //年龄
    private String jobTitle; //职称
    private String del; //作废标识,1正常,0作废
    private String mobile; //手机号
    private Date createTime; //
    private Date updateTime; //
    @Column(name = "name")
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    @Column(name = "sex")
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    @Column(name = "age")
    public String getAge() {
        return age;
    }
    public void setAge(String age) {
        this.age = age;
    }
    @Column(name = "job_title")
    public String getJobTitle() {
        return jobTitle;
    }
    public void setJobTitle(String jobTitle) {
        this.jobTitle = jobTitle;
    }
    @Column(name = "del")
    public String getDel() {
        return del;
    }
    public void setDel(String del) {
        this.del = del;
    }
    @Column(name = "mobile")
    public String getMobile() {
        return mobile;
    }
    public void setMobile(String mobile) {
        this.mobile = mobile;
    }
    @JsonFormat(pattern = "yyyy-MM-dd", 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", timezone = "GMT+08:00")
    @Column(name = "update_time")
    public Date getUpdateTime() {
        return updateTime;
    }
    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }
}

+ 98 - 0
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/zhylyjkglxt/sql记录.sql

@ -575,3 +575,101 @@ CREATE TABLE `base_service_package_sign_record` (
                                                    PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci ROW_FORMAT=COMPACT COMMENT='服务包签约记录表';
-- 教师基本信息表
CREATE TABLE `wlyy_teacher_info` (
                                     `id` varchar(50) NOT NULL COMMENT 'uuid唯一标识',
                                     `name` varchar(10) DEFAULT NULL COMMENT '姓名',
                                     `sex` varchar(50) DEFAULT NULL COMMENT '性别',
                                     `age` varchar(4) DEFAULT NULL COMMENT '年龄',
                                     `job_title` VARCHAR(20) DEFAULT NULL COMMENT '职位',
                                     `del` VARCHAR(1) DEFAULT '1' COMMENT '作废标识,1正常,0作废',
                                     `mobile` varchar(20) DEFAULT NULL COMMENT '手机号',
                                     `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间',
                                     `update_time` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
                                     PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='教师基本信息表';
-- 日常走访
CREATE TABLE `base_visit` (
                              `id` varchar(50) NOT NULL,
                              `patient` varchar(50) DEFAULT NULL,
                              `patient_name` varchar(50) DEFAULT NULL,
                              `type` varchar(1) DEFAULT NULL COMMENT '类型 1老人日常走访',
                              `status` varchar(1) DEFAULT NULL COMMENT '状态 0计划中 1 已完成 2计划超时',
                              `visit_date` datetime DEFAULT NULL COMMENT '完成走访时间',
                              `visit_plan_date` datetime DEFAULT NULL COMMENT '计划走访时间',
                              `doctor` varchar(50) DEFAULT NULL,
                              `doctor_name` varchar(50) DEFAULT NULL,
                              `visit_content` varchar(1000) DEFAULT NULL COMMENT '走访记录',
                              `visit_img` varchar(2000) DEFAULT NULL COMMENT '走访图片',
                              `create_time` datetime DEFAULT NULL,
                              `device_maintenance` varchar(500) DEFAULT NULL COMMENT '设备维护',
                              `health` varchar(500) DEFAULT NULL COMMENT '健康情况',
                              `life_consult` varchar(500) DEFAULT NULL COMMENT '生活咨询',
                              PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='走访表';
-- 机构
CREATE TABLE `base_org` (
                            `id` varchar(50) NOT NULL COMMENT 'uuid,uuid唯一标识,',
                            `code` varchar(50) DEFAULT NULL COMMENT '机构代码,在工商局注册的代码,不能重复',
                            `province_code` varchar(50) DEFAULT NULL COMMENT '省份标识',
                            `province_name` varchar(20) DEFAULT NULL COMMENT '省份名称\n',
                            `city_code` varchar(50) DEFAULT NULL COMMENT '城市标识',
                            `city_name` varchar(20) DEFAULT NULL COMMENT '城市名称\n',
                            `town_code` varchar(50) DEFAULT NULL COMMENT '区县标识',
                            `town_name` varchar(30) DEFAULT NULL COMMENT '区县名称\n',
                            `street_code` varchar(50) DEFAULT NULL COMMENT '街道标识',
                            `street_name` varchar(50) DEFAULT NULL COMMENT '街道名称',
                            `name` varchar(100) DEFAULT NULL COMMENT '机构名称',
                            `alias` varchar(10) DEFAULT NULL COMMENT '机构别名',
                            `spell` varchar(20) DEFAULT NULL COMMENT '机构名称拼音首字母',
                            `type` char(2) DEFAULT '1' COMMENT '机构类型: 1.等级医院 2.社区医院3.养老机构 4.教育机构',
                            `brief` text COMMENT '机构简介',
                            `address` varchar(300) DEFAULT NULL COMMENT '机构详细地址',
                            `photo` varchar(1000) DEFAULT NULL COMMENT '机构图片',
                            `longitude` varchar(20) DEFAULT NULL COMMENT '经度',
                            `latitude` varchar(20) DEFAULT NULL COMMENT '纬度',
                            `legalperson` varchar(50) DEFAULT NULL COMMENT '法人',
                            `org_admin` varchar(50) DEFAULT NULL COMMENT '机构管理员',
                            `org_url` varchar(200) DEFAULT NULL COMMENT '机构网址',
                            `intro` text COMMENT '机构简介',
                            `qrcode` varchar(30) DEFAULT NULL COMMENT '机构二维码',
                            `del` varchar(1) DEFAULT '1' COMMENT '作废标识,1正常,0作废',
                            `create_user` varchar(100) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '创建人',
                            `create_user_name` varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '创建人名',
                            `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间',
                            `update_user` varchar(100) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '修改人',
                            `update_user_name` varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '修改人名',
                            `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
                            `saasid` varchar(50) DEFAULT NULL,
                            `org_level` int(2) DEFAULT NULL COMMENT '11.一级甲等,12一级乙等,13一级丙等,21二级甲等,22二级乙等,23二级丙等,31三级特等,32三级甲等,33三级乙等,34三级丙级',
                            `win_no` varchar(50) DEFAULT NULL COMMENT '机构分部号,每个机构都不一样,例如中山医院:6总部7金榜8夏禾,眼科(0思北1五缘湾)',
                            `mobile` varchar(15) DEFAULT NULL COMMENT '手机号码',
                            `sort` int(11) DEFAULT NULL COMMENT '排序',
                            `his_id` varchar(100) DEFAULT NULL,
                            `credentials` varchar(500) DEFAULT NULL COMMENT '资格证书',
                            `report_chapter` varchar(500) DEFAULT NULL COMMENT '报告单专用章',
                            `logo` varchar(500) DEFAULT NULL COMMENT 'logo',
                            `admin_mobile` varchar(30) DEFAULT NULL,
                            PRIMARY KEY (`id`),
                            KEY `idx_id` (`id`),
                            KEY `idx_saasid` (`code`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='机构信息(医院)';
-- 幼儿活动指标
CREATE TABLE `base_infant_activity` (
                                        `id` int(50) NOT NULL AUTO_INCREMENT,
                                        `type` varchar(3) DEFAULT NULL COMMENT '类型 1活动浏览次数 2公艺课程播放 3幼儿活动报名数 4咨询',
                                        `total` varchar(50) DEFAULT NULL COMMENT '总数-指标',
                                        `update_time` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
                                        PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='幼儿活动指标';