Browse Source

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

吴世龙 3 years ago
parent
commit
22f41d1907
100 changed files with 3884 additions and 434 deletions
  1. 140 30
      business/base-service/src/main/java/com/yihu/jw/healthCare/service/HealthCareService.java
  2. 9 2
      business/base-service/src/main/java/com/yihu/jw/hospital/family/service/WlyyFamilyMemberService.java
  3. 135 41
      business/base-service/src/main/java/com/yihu/jw/hospital/prescription/service/PrescriptionService.java
  4. 22 0
      business/base-service/src/main/java/com/yihu/jw/hospital/prescription/service/YkyyPrescriptionService.java
  5. 435 98
      business/base-service/src/main/java/com/yihu/jw/hospital/prescription/service/entrance/EntranceService.java
  6. 75 0
      business/base-service/src/main/java/com/yihu/jw/hospital/prescription/service/entrance/HcyyEntranceService.java
  7. 15 0
      business/base-service/src/main/java/com/yihu/jw/hospital/prescription/service/entrance/util/ConvertUtil.java
  8. 143 1
      business/base-service/src/main/java/com/yihu/jw/hospital/ykyy/service/YkyyService.java
  9. 11 0
      business/base-service/src/main/java/com/yihu/jw/order/BusinessOrderService.java
  10. 3 1
      business/base-service/src/main/java/com/yihu/jw/order/pay/ylz/YlzPayService.java
  11. 2 0
      business/base-service/src/main/java/com/yihu/jw/patient/dao/BasePatientDao.java
  12. 3 0
      business/base-service/src/main/java/com/yihu/jw/patient/dao/BasePatientMedicareCardDao.java
  13. 115 1
      business/base-service/src/main/java/com/yihu/jw/patient/service/BasePatientService.java
  14. 31 1
      business/base-service/src/main/java/com/yihu/jw/utils/PinYinUtils.java
  15. 31 0
      business/base-service/src/main/java/com/yihu/jw/wechat/dao/WxAppletsAccessTokenDao.java
  16. 41 0
      business/base-service/src/main/java/com/yihu/jw/wechat/service/WechatInfoService.java
  17. 127 1
      business/base-service/src/main/java/com/yihu/jw/wechat/service/WxAccessTokenService.java
  18. 12 0
      business/base-service/src/mqConfig/esbmq-config.xml
  19. 3 3
      business/im-service/src/main/java/com/yihu/jw/im/util/ImUtil.java
  20. 26 1
      common/common-entity/sql记录
  21. 14 1
      common/common-entity/src/main/java/com/yihu/jw/entity/base/doctor/BaseDoctorDO.java
  22. 10 0
      common/common-entity/src/main/java/com/yihu/jw/entity/base/login/BaseLoginLogDO.java
  23. 11 0
      common/common-entity/src/main/java/com/yihu/jw/entity/base/patient/BasePatientDO.java
  24. 63 0
      common/common-entity/src/main/java/com/yihu/jw/entity/base/servicePackage/BasePatientHelperDO.java
  25. 1 1
      common/common-entity/src/main/java/com/yihu/jw/entity/base/servicePackage/ServicePackageSignRecordDO.java
  26. 84 0
      common/common-entity/src/main/java/com/yihu/jw/entity/base/wx/WxAppletsAccessTokenDO.java
  27. 2 0
      common/common-entity/src/main/java/com/yihu/jw/entity/care/birthday/BirthDayWishesToPatient.java
  28. 2 0
      common/common-entity/src/main/java/com/yihu/jw/entity/care/birthday/BirthdayWishesTemplate.java
  29. 2 4
      common/common-entity/src/main/java/com/yihu/jw/entity/care/contacts/PatientSosContactsDO.java
  30. 2 0
      common/common-entity/src/main/java/com/yihu/jw/entity/care/device/BasePatientOutBed.java
  31. 2 0
      common/common-entity/src/main/java/com/yihu/jw/entity/care/device/BasePatientStepDo.java
  32. 2 0
      common/common-entity/src/main/java/com/yihu/jw/entity/care/device/BaseSleepDeviceReport.java
  33. 2 0
      common/common-entity/src/main/java/com/yihu/jw/entity/care/device/BaseSleepNightRecord.java
  34. 2 4
      common/common-entity/src/main/java/com/yihu/jw/entity/care/device/BaseSleepPlanDetail.java
  35. 2 0
      common/common-entity/src/main/java/com/yihu/jw/entity/care/device/DeviceDataPushLog.java
  36. 3 1
      common/common-entity/src/main/java/com/yihu/jw/entity/care/device/PatientSafeAreaConfirm.java
  37. 2 0
      common/common-entity/src/main/java/com/yihu/jw/entity/care/device/PatientSafeAreaDO.java
  38. 2 0
      common/common-entity/src/main/java/com/yihu/jw/entity/care/device/YsConfigDo.java
  39. 2 0
      common/common-entity/src/main/java/com/yihu/jw/entity/care/device/YsDeviceDo.java
  40. 1 1
      common/common-entity/src/main/java/com/yihu/jw/entity/care/message/BaseServiceNews.java
  41. 3 1
      common/common-entity/src/main/java/com/yihu/jw/entity/care/securitymonitoring/BaseEmergencyWarnLogDO.java
  42. 27 0
      common/common-entity/src/main/java/com/yihu/jw/entity/care/visit/BaseVisitDO.java
  43. 11 0
      common/common-entity/src/main/java/com/yihu/jw/entity/order/BusinessOrderDO.java
  44. 17 0
      gateway/ag-basic/src/main/java/com/yihu/jw/gateway/config/MultipartConfig.java
  45. 114 0
      gateway/ag-basic/src/main/java/com/yihu/jw/gateway/filter/CsrfFilter.java
  46. 5 0
      gateway/ag-basic/src/main/resources/application.yml
  47. 12 0
      server/svr-authentication/pom.xml
  48. 1 1
      server/svr-authentication/src/main/java/com/yihu/jw/security/core/userdetails/jdbc/WlyyUserDetailsService.java
  49. 14 0
      server/svr-authentication/src/main/java/com/yihu/jw/security/dao/WlyyHttpLogDao.java
  50. 145 114
      server/svr-authentication/src/main/java/com/yihu/jw/security/oauth2/provider/endpoint/WlyyLoginEndpoint.java
  51. 208 0
      server/svr-authentication/src/main/java/com/yihu/jw/security/service/HcyyService.java
  52. 11 0
      server/svr-authentication/src/main/java/com/yihu/jw/security/service/RegisterService.java
  53. 1 1
      server/svr-authentication/src/main/java/com/yihu/jw/security/service/YkyyService.java
  54. 3 3
      server/svr-authentication/src/main/java/com/yihu/jw/security/utils/ImUtil.java
  55. 72 0
      server/svr-authentication/src/main/java/com/yihu/jw/security/utils/WebserviceUtil.java
  56. 29 0
      svr/svr-base/src/main/java/com/yihu/jw/base/service/doctor/BaseDoctorService.java
  57. 11 4
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/config/MvcConfig.java
  58. 21 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/dao/common/BaseLoginLogDao.java
  59. 15 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/dao/sign/BasePatientHelperDao.java
  60. 8 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/apply/PatientBedApplyEndPoint.java
  61. 97 3
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/assistance/EmergencyAssistanceEndpoint.java
  62. 5 2
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/consult/DoctorConsultController.java
  63. 28 1
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/consult/DoctorConsultEndpoint.java
  64. 13 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/course/DoctorCourseEndpoint.java
  65. 18 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/course/RecruitStudentsEndpoint.java
  66. 2 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/device/DeviceController.java
  67. 3 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/device/PatientDeviceController.java
  68. 45 9
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/doctor/DoctorBirthdayWishesEndpoint.java
  69. 104 3
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/doctor/DoctorEndpoint.java
  70. 38 2
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/doctor/DoctorToDoWorkEndpoint.java
  71. 28 5
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/doorCoach/DoctorDoorCoachOrderController.java
  72. 38 2
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/label/PatientLabelEndpoint.java
  73. 1 1
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/safeArea/DoctorSafeAreaController.java
  74. 1 1
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/security/SecurityMonitoringOrderEndpoint.java
  75. 86 1
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/sign/SignEndpoint.java
  76. 2 2
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/statistics/DetectionPlatformEndpoint.java
  77. 1 1
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/statistics/OpenStatisticsEndpoint.java
  78. 1 1
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/third/platForm/PatientInfoPlatFormEndpoint.java
  79. 16 5
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/visit/VisitEndpoint.java
  80. 34 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/interceptors/CrosXssFilter.java
  81. 120 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/interceptors/XssHttpServletRequestWrapper.java
  82. 1 1
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/activity/ChildActivityRegistrationService.java
  83. 2 2
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/apply/PatientBedApplyService.java
  84. 179 11
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/assistance/EmergencyAssistanceService.java
  85. 59 8
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/birthday/BirthdayWishesService.java
  86. 180 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/common/PermissionService.java
  87. 4 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/consult/ConsultService.java
  88. 14 13
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/consult/ConsultTeamService.java
  89. 2 2
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/device/PatientDeviceService.java
  90. 69 6
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/doctor/CareDoctorService.java
  91. 3 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/doorCoach/DoctorDoorCoachOrderService.java
  92. 36 1
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/family/PatientFamilyMemberService.java
  93. 68 4
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/label/PatientLableService.java
  94. 3 1
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/lifeCare/LifeCareOrderService.java
  95. 76 2
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/message/DoctorMessageService.java
  96. 16 2
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/patient/CarePatientService.java
  97. 2 2
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/patient/OnlineContactService.java
  98. 70 23
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/security/SecurityMonitoringOrderService.java
  99. 101 1
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/sign/ArchiveService.java
  100. 0 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/sign/CapacityAssessmentRecordService.java

+ 140 - 30
business/base-service/src/main/java/com/yihu/jw/healthCare/service/HealthCareService.java

@ -3,6 +3,7 @@ package com.yihu.jw.healthCare.service;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.sun.corba.se.spi.ior.IdentifiableFactory;
import com.yihu.jw.doctor.dao.BaseDoctorDao;
import com.yihu.jw.doctor.dao.BaseDoctorHospitalDao;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
@ -12,21 +13,16 @@ import com.yihu.jw.entity.hospital.consult.WlyyHospitalSysDictDO;
import com.yihu.jw.entity.hospital.healthCare.*;
import com.yihu.jw.entity.hospital.httplog.YlzHttpLogDO;
import com.yihu.jw.entity.hospital.mapping.DoctorMappingDO;
import com.yihu.jw.entity.hospital.prescription.WlyyOutpatientDO;
import com.yihu.jw.entity.hospital.prescription.WlyyPrescriptionDO;
import com.yihu.jw.entity.hospital.prescription.*;
import com.yihu.jw.entity.hospital.mapping.PatientMappingDO;
import com.yihu.jw.entity.hospital.prescription.WlyyPrescriptionExpressageDO;
import com.yihu.jw.entity.hospital.prescription.WlyyPrescriptionInfoDO;
import com.yihu.jw.healthCare.utils.AES;
import com.yihu.jw.healthCare.utils.SafeUtil;
import com.yihu.jw.hospital.dict.WlyyHospitalSysDictDao;
import com.yihu.jw.hospital.healthCare.*;
import com.yihu.jw.hospital.httplog.dao.YlzHttpLogDao;
import com.yihu.jw.hospital.mapping.dao.PatientMappingDao;
import com.yihu.jw.hospital.prescription.dao.OutpatientDao;
import com.yihu.jw.hospital.prescription.dao.PrescriptionDao;
import com.yihu.jw.hospital.prescription.dao.PrescriptionExpressageDao;
import com.yihu.jw.hospital.prescription.dao.PrescriptionInfoDao;
import com.yihu.jw.hospital.prescription.dao.*;
import com.yihu.jw.hospital.prescription.service.entrance.EntranceService;
import com.yihu.jw.hospital.prescription.service.entrance.XzzxEntranceService;
import com.yihu.jw.patient.dao.BasePatientDao;
import com.yihu.jw.util.common.LatitudeUtils;
@ -34,6 +30,7 @@ import com.yihu.jw.util.date.DateUtil;
import com.yihu.jw.hospital.mapping.dao.DoctorMappingDao;
import com.yihu.jw.util.common.IdCardUtil;
import com.yihu.jw.util.http.HttpClientUtil;
import net.sf.json.util.JSONTokener;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -90,6 +87,10 @@ public class HealthCareService {
    private YlzMedicailMxDao ylzMedicailMxDao;
    @Autowired
    private XzzxEntranceService xzzxEntranceService;
    @Autowired
    private EntranceService entranceService;
    @Autowired
    private PrescriptionDiagnosisDao prescriptionDiagnosisDao;
    private String ylzConfigUrl;
    private String ylzConfigAppid;
@ -386,6 +387,12 @@ public class HealthCareService {
            throw new Exception("门诊信息不存在");
        }
        BaseDoctorDO baseDoctorDO = doctorDao.findById(outpatientDO.getDoctor());
        DoctorMappingDO doctorMappingDO = doctorMappingDao.findByDoctor(outpatientDO.getDoctor());
        WlyyHospitalSysDictDO hospitalSysDictDO = hospitalSysDictDao.findById("ylzConfigOrgCode");
        if(hospitalSysDictDO == null){
            throw new Exception("未配置网点编号");
@ -395,30 +402,131 @@ public class HealthCareService {
        String his_serial = outpatientDO.getRegisterNo();
        String org_code = hospitalSysDictDO.getDictCode();
        JSONObject data;
        JSONObject data = new JSONObject();
        if (StringUtils.isNoneBlank(wxId)){
            if (wxId.equalsIgnoreCase("xm_xzzx_wx")){}
        }
        //获取his处方信息
        JSONObject infoObject= xzzxEntranceService.presUploadToEntrance(icCardNo,his_serial,org_code);
       /* if (infoObject!=null){
            if (wxId.equalsIgnoreCase("xm_xzzx_wx")){
                //获取his处方信息
                JSONObject infoObject= xzzxEntranceService.presUploadToEntrance(icCardNo,his_serial,org_code);
                JSONObject info = infoObject.getJSONArray("data").getJSONObject(0);
                if("0".equals(info.getString("ret_code"))){
                    data = info;
                }else {
                    throw new Exception("获取his处方信息失败:"+infoObject.getString("ret_mess"));
                }
        }*/
       JSONObject info = infoObject.getJSONArray("data").getJSONObject(0);
        if("0".equals(info.getString("ret_code"))){
            data = info;
        }else {
            throw new Exception("获取his处方信息失败:"+infoObject.getString("ret_mess"));
                data.remove("ret_code");
                data.remove("ret_mess");
                data.remove("log_no");
                data.put("order_id",prescriptionId);
            }else if(wxId.equalsIgnoreCase("xm_zsyy_wx")){
                net.sf.json.JSONArray result = entranceService.BS10108(outpatientDO.getCardNo(),outpatientDO.getIdcard(),null,null,null,null,his_serial,false);
                if (result!=null&&result.size()!=0){
                    net.sf.json.JSONObject object = result.getJSONObject(0);
                    net.sf.json.JSONObject jsonObject = object.getJSONObject("retInfo");
                    net.sf.json.JSONObject msgInfoJson = object.getJSONObject("msgInfo");
                    if (jsonObject.getString("retCode").equalsIgnoreCase("00")){
                        if (msgInfoJson!=null){
                            net.sf.json.JSONObject resultJSON = msgInfoJson.getJSONObject("receipt");
                            if (resultJSON!=null){
                                data.put("name",resultJSON.getString("xming0"));
                                data.put("cert_type","01");
                                data.put("region_code","3502");
                                data.put("order_id",resultJSON.getString("xtgzh0"));
                                data.put("medical_mode","10");
                                data.put("prescription_code",resultJSON.getString("xtgzh0"));
                                data.put("idcard",resultJSON.getString("id0000"));
                                data.put("cert_type","01");
                                data.put("sex",resultJSON.getString("brnl00"));
                                data.put("birth", com.yihu.jw.util.idcard.IdCardUtil.getBirthdayForIdcardStr(resultJSON.getString("id0000")));
                                data.put("phone",outpatientDO.getMobile());
                                data.put("medical_type","11");
                                data.put("medical_type_name","普通门诊");
                                data.put("medical_time",DateUtil.dateToStrLong(outpatientDO.getCreateTime()));
                                data.put("disease_code",outpatientDO.getIcd10());
                                data.put("dept_code",outpatientDO.getDept());
                                data.put("dept_name",outpatientDO.getDeptName());
                                data.put("doctor_idcard",baseDoctorDO.getIdcard());
                                data.put("doctor_code",doctorMappingDO.getMappingCode());
                                data.put("doctor_name",baseDoctorDO.getName());
                                data.put("prescription_date",DateUtil.dateToStrLong(wlyyPrescriptionDO.getCreateTime()));
                                data.put("prescription_counts",resultJSON.getString("cfxms0"));
                                data.put("prescription_source",0);
                                List<WlyyPrescriptionDiagnosisDO> diagnosisDOList = prescriptionDiagnosisDao.findByPrescriptionId(prescriptionId,1);
                                JSONArray diagnosisArray = new JSONArray();
                                for (WlyyPrescriptionDiagnosisDO diagnosisDO:diagnosisDOList){
                                    JSONObject diagnosisObj = new JSONObject();
                                    diagnosisObj.put("disease_code_icd10",diagnosisDO.getCode());
                                    diagnosisObj.put("disease_name_icd10",diagnosisDO.getName());
                                    diagnosisObj.put("disease_type","01");
                                    diagnosisObj.put("disease_order","01");
                                    diagnosisArray.add(diagnosisObj);
                                }
                                data.put("zdlist",diagnosisArray);
                                JSONArray infoList = new JSONArray();
                                Object json = new JSONTokener(resultJSON.getString("mxlists")).nextValue();
                                if(json instanceof JSONObject){
                                    JSONObject mxListJSON = (JSONObject)json;
                                    JSONObject mxlistObj = mxListJSON.getJSONObject("mxlist");
                                    JSONObject infoJson = new JSONObject();
                                    infoJson.put("his_item_name",mxlistObj.getString("xmmc00"));
                                    infoJson.put("his_item_code",mxlistObj.getString("xmbh00"));
                                    infoJson.put("item_name",mxlistObj.getString("xmmc00"));
                                    infoJson.put("item_code",mxlistObj.getString("xmbh00"));
                                    infoJson.put("his_drug_no",mxlistObj.getString("xmbh00"));
                                    infoJson.put("his_detail_sn",mxlistObj.getString("cfhao0"));
                                    infoJson.put("invoice_type","01");
                                    infoJson.put("specification_type",mxlistObj.getString("xmgg00"));
                                    infoJson.put("dosage_form",mxlistObj.getString("jx0000"));
                                    infoJson.put("charge_unit",mxlistObj.getString("xmdw00"));
                                    infoJson.put("price",mxlistObj.getString("xmdj00"));
                                    infoJson.put("amount",mxlistObj.getString("xmsl00"));
                                    infoJson.put("total_money",mxlistObj.getString("xmje00"));
                                    infoJson.put("single_dose",mxlistObj.getString("dcyydw"));
                                    infoJson.put("use_frequency",mxlistObj.getString("yppl00"));
                                    infoJson.put("medical_way",mxlistObj.getString("gytj00"));
                                    infoJson.put("prescription_date",mxlistObj.getString("jzrq"));
                                    infoJson.put("medication_days",mxlistObj.getString("ylts00"));
                                    infoJson.put("his_dept_code",outpatientDO.getDept());
                                    infoJson.put("his_dept_name",outpatientDO.getDeptName());
                                    infoJson.put("limit_type",mxlistObj.getString("sfybxm"));
                                    infoList.add(infoJson);
                                }else if (json instanceof JSONArray){
                                    JSONArray mxListArray = (JSONArray)json;
                                    for (int j=0;j<mxListArray.size();j++){
                                        JSONObject mxlistObj = mxListArray.getJSONObject(j);
                                        JSONObject infoJson = new JSONObject();
                                        infoJson.put("his_item_name",mxlistObj.getString("xmmc00"));
                                        infoJson.put("his_item_code",mxlistObj.getString("xmbh00"));
                                        infoJson.put("item_name",mxlistObj.getString("xmmc00"));
                                        infoJson.put("item_code",mxlistObj.getString("xmbh00"));
                                        infoJson.put("his_drug_no",mxlistObj.getString("xmbh00"));
                                        infoJson.put("his_detail_sn",mxlistObj.getString("cfhao0"));
                                        infoJson.put("invoice_type","01");
                                        infoJson.put("specification_type",mxlistObj.getString("xmgg00"));
                                        infoJson.put("dosage_form",mxlistObj.getString("jx0000"));
                                        infoJson.put("charge_unit",mxlistObj.getString("xmdw00"));
                                        infoJson.put("price",mxlistObj.getString("xmdj00"));
                                        infoJson.put("amount",mxlistObj.getString("xmsl00"));
                                        infoJson.put("total_money",mxlistObj.getString("xmje00"));
                                        infoJson.put("single_dose",mxlistObj.getString("dcyydw"));
                                        infoJson.put("use_frequency",mxlistObj.getString("yppl00"));
                                        infoJson.put("medical_way",mxlistObj.getString("gytj00"));
                                        infoJson.put("prescription_date",mxlistObj.getString("jzrq"));
                                        infoJson.put("medication_days",mxlistObj.getString("ylts00"));
                                        infoJson.put("his_dept_code",outpatientDO.getDept());
                                        infoJson.put("his_dept_name",outpatientDO.getDeptName());
                                        infoJson.put("limit_type",mxlistObj.getString("sfybxm"));
                                        infoList.add(infoJson);
                                    }
                                }
                                data.put("mxlist",infoList);
                            }
                        }
                    }
                }
            }
        }
        data.remove("ret_code");
        data.remove("ret_mess");
        data.remove("log_no");
        data.put("order_id",prescriptionId);
        YlzMedicalPrescriptionUploadDO uploadDO = new YlzMedicalPrescriptionUploadDO();
        uploadDO.setOrgCode(org_code);
        uploadDO.setIcCardNo(icCardNo);
@ -427,7 +535,7 @@ public class HealthCareService {
        uploadDO.setPrescriptionId(prescriptionId);
        uploadDO.setRegionCode(data.getString("region_code"));
        uploadDO.setName(data.getString("name"));
        uploadDO.setIdcard(data.getString("idcard"));
        uploadDO.setIdcard(outpatientDO.getIdcard());
        uploadDO.setCertType(data.getString("cert_type"));
        uploadDO.setDataSource("53");//53移动支付
        uploadDO.setInsuranceSerial(data.getString("insurance_serial"));
@ -446,6 +554,8 @@ public class HealthCareService {
        return result;
    }
    /**
     * 2.4.2	医师开方上传
     *

+ 9 - 2
business/base-service/src/main/java/com/yihu/jw/hospital/family/service/WlyyFamilyMemberService.java

@ -534,8 +534,13 @@ public class WlyyFamilyMemberService extends BaseJpaService<WlyyPatientFamilyMem
        String familyAge = String.valueOf(IdCardUtil.getAgeForIdcard(patientDO.getIdcard()));
        result.setAge(familyAge);
        result.setDel(1);
        result.setIdType("1");
        result.setIdTypeName("身份证");
        if (StringUtils.isNotBlank(patientDO.getCardType())&&patientDO.getCardType().equalsIgnoreCase("1")){
            result.setIdType("1");
            result.setIdTypeName("身份证");
        }else {
            result.setIdType("0");
            result.setIdTypeName("其他");
        }
        result.setPatient(patientId);
        result.setIdcard(patientDO.getIdcard());
        result.setMobile(patientDO.getMobile());
@ -806,6 +811,7 @@ public class WlyyFamilyMemberService extends BaseJpaService<WlyyPatientFamilyMem
                                if (StringUtils.isNotBlank(jsonObject1.getString("TEL"))){
                                    List<BasePatientDO> listpatients=basePatientDao.findByMobileAndDel(jsonObject1.getString("TEL"),"1");
                                    if (listpatients!=null&&listpatients.size()>0){
                                    }else {
                                        patientDO.setMobile(jsonObject1.getString("TEL"));
                                    }
@ -822,6 +828,7 @@ public class WlyyFamilyMemberService extends BaseJpaService<WlyyPatientFamilyMem
                                }else{
                                    pw = idcard.substring(idcard.length()-6);
                                }
                                patientDO.setYktId(jsonObject1.getString("ID"));
                                patientDO.setPassword(MD5.md5Hex(pw + "{" + salt + "}"));
                                patientDO.setSalt(salt);
                                patientDO.setIdcard(jsonObject1.getString("IDCARD"));

+ 135 - 41
business/base-service/src/main/java/com/yihu/jw/hospital/prescription/service/PrescriptionService.java

@ -28,7 +28,6 @@ import com.yihu.jw.entity.base.doctor.BaseDoctorHospitalDO;
import com.yihu.jw.entity.base.im.ConsultTeamDo;
import com.yihu.jw.entity.base.org.BaseDoctorPatientFollowDO;
import com.yihu.jw.entity.base.org.BaseOrgDO;
import com.yihu.jw.entity.base.patient.BaseNatPatientFamilyMemberDO;
import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.entity.base.patient.PatientMedicareCardDO;
import com.yihu.jw.entity.base.words.BaseSensitiveDO;
@ -102,7 +101,6 @@ import com.yihu.jw.util.wechat.WeixinMessagePushUtils;
import com.yihu.jw.utils.*;
import com.yihu.jw.utils.Pkis.PKIService_PortType;
import com.yihu.jw.utils.Pkis.PKIService_ServiceLocator;
import com.yihu.jw.utils.encode.Base64;
import com.yihu.jw.utils.hibernate.HibenateUtils;
import com.yihu.jw.utils.sfutils.HttpClientUtils;
import com.yihu.jw.wechat.dao.BasePatientWechatDao;
@ -120,9 +118,6 @@ import com.ylzinfo.ehc.EhcHandler;
import com.ylzinfo.ehc.common.utils.DateUtils;
import com.ylzinfo.ehc.trans.TransRequest;
import com.ylzinfo.ehc.trans.TransResponse;
import com.zaxxer.hikari.HikariDataSource;
import com.zaxxer.hikari.HikariPoolMXBean;
import jxl.format.*;
import jxl.format.VerticalAlignment;
import jxl.write.*;
import net.sf.json.JSONArray;
@ -144,14 +139,9 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import javax.management.JMX;
import javax.management.MBeanServer;
import javax.management.ObjectName;
import java.io.DataOutput;
import java.io.IOException;
import java.io.OutputStream;
import java.lang.Boolean;
import java.lang.management.ManagementFactory;
import java.math.BigDecimal;
import java.net.URL;
import java.net.URLEncoder;
@ -160,7 +150,7 @@ import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
/**
 * Created by Trick on 2019/5/17.
@ -733,7 +723,7 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
        rs.put("patientId", basePatientDO.getId());
        rs.put("idCard", basePatientDO.getIdcard());
        rs.put("sex", basePatientDO.getSex());
        PatientMedicareCardDO cardDO = basePatientMedicareCardDao.findByTypeAndPatientCodeAndDel(PatientMedicareCardDO.Type.MedicareCard.getType(), outpatientDO.getPatient(), "1");
        PatientMedicareCardDO cardDO = basePatientMedicareCardDao.findByCodeAndPatientCodeAndDel(outpatientDO.getCardNo(), outpatientDO.getPatient());
        rs.put("ssc", cardDO);
        rs.put("age", IdCardUtil.getAgeForIdcard(basePatientDO.getIdcard()));
        rs.put("address", basePatientDO.getAddress());
@ -4328,11 +4318,17 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
        return rs.size();
    }
    public Map<String, Object> findDoctorInfo(String doctor, String withWork,String patient) {
        BaseDoctorDO doctorDO = baseDoctorDao.findById(doctor);
    public Map<String, Object> findDoctorInfo(String doctor,String idcard, String withWork,String patient) {
        BaseDoctorDO doctorDO = new BaseDoctorDO();
        if (StringUtils.isNoneBlank(doctor)){
            doctorDO = baseDoctorDao.findById(doctor);
        }else {
            doctorDO = baseDoctorDao.findByIdcardAndId(idcard);
        }
        Map<String, Object> rs = new HashedMap();
        if (doctorDO != null) {
            rs.put("doctor", doctor);
            rs.put("id", doctorDO.getId());
            rs.put("doctorSex", doctorDO.getSex());
            if (StringUtils.isNoneBlank(doctorDO.getIdcard())) {
                rs.put("doctorAge", IdCardUtil.getAgeForIdcard(doctorDO.getIdcard()));
@ -4362,6 +4358,7 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
            rs.put("sex",doctorDO.getSex());
            rs.put("popularity",doctorDO.getPopularity());
            rs.put("qrcode",doctorDO.getQrcode());
            rs.put("appletQrcode",doctorDO.getAppletQrCode());
            List<Map<String,Object>> chargeDictDOLists = new ArrayList<>();
            String sqlCharge = "SELECT\n" +
                    "\tm.req_fee as \"twfzFee\",\n" +
@ -8219,6 +8216,45 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
        return waitVideoCount;
    }
    /**
     * 根据类型获取总问诊量
     *
     * @param doctor
     * @param outpatient_type 1复诊  2协同
     * @param type            1图文 2视频
     * @return
     */
    public Long getVideoCount(String doctor, String type, String outpatient_type, String wxId) {
        String sql = "SELECT " +
                "count(outpatient.id) AS \"total\" " +
                "FROM " +
                "wlyy_outpatient outpatient," +
                "base_patient patient " +
                "WHERE " +
                "outpatient.patient=patient.id " +
                "AND outpatient.status in (0,1,2,3) " +
                "AND outpatient.doctor='" + doctor + "' " +
                "AND outpatient.pay_status = 1 " +
                "AND outpatient.outpatient_type= '" + outpatient_type + "'  ";
        if (!"xm_ihealth_wx".contains(wxId)){
            if ("1".equals(outpatient_type)||"3".equals(outpatient_type)) {//复诊
                sql = sql + " AND outpatient.type= '" + type + "' ";
            }
        }
        logger.info("接口名称:doctorReviewConsultCount-->sql="+sql);
        List<Map<String, Object>> rstotal = jdbcTemplate.queryForList(sql);
        Long waitVideoCount = 0l;
        if (rstotal != null && rstotal.size() > 0) {
            waitVideoCount = Long.parseLong(rstotal.get(0).get("total").toString());
        }
        return waitVideoCount;
    }
    /**
     * 保存在线排班
     *
@ -12381,7 +12417,42 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
                            baseNatAppointmentDO.setRealOrder(realOrder);
                            baseNatAppointmentDO.setIsSuccess("1");
                            baseNatAppointmentDO.setVoucherNo(voucherNo);
                            if (chargeAmount.equalsIgnoreCase("0")){
                                baseNatAppointmentDO.setPayStatus("1");
                            }
                            baseNatAppointmentDO =baseNatAppointmentDao.save(baseNatAppointmentDO);
                            if (chargeAmount.equalsIgnoreCase("0")) {
                                BasePatientDO patientDO = basePatientDao.findById(baseNatAppointmentDO.getPatientId());
                                //发送预约成功通知
                                String name1 = patientDO.getName();
                                String idcard = patientDO.getIdcard();
                                String mobile1 = patientDO.getMobile();
                                String url = "https://hlwyy.xmzsh.com/hlwyy/ims-wx/#/nucleicTest/detail?id=" + baseNatAppointmentDO.getId();
                                String date = DateUtil.dateToStrLong(baseNatAppointmentDO.getAppointmentTime());
                                String first = "尊敬的用户" + baseNatAppointmentDO.getName() + ",您已完成线上自助核酸检测预约申请";
                                String contentMsg = "申请人:" + baseNatAppointmentDO.getName() + "\r\n 预约时间:" + date + " \r\n发票流水号:" + baseNatAppointmentDO.getRealOrder();
                                String remark = "1、请您持核酸预约申请信息和发票流水号、医保卡/就诊卡/电子健康卡,准时至我院五号楼北侧(急诊部后侧)核酸检测点领取标本试管窗口绑定检测。\r\n" +
                                        "2、核酸检测标本采集6-8小时后出具报告。请关注厦门大学附属中山医院微信公众号查询;如需打印,请至厦门大学附属中山医院核酸检测点自助机打印。";
                                String responseMsg = "";
                                responseMsg = entranceService.ehospitalNotice(
                                        name1,
                                        idcard,
                                        mobile1,
                                        first,
                                        url,
                                        contentMsg,
                                        remark);
                                logger.info("中山发送模板消息返回结果=" + responseMsg);
                                System.out.println("结束发送模板消息");
                                WlyyHttpLogDO wlyyHttpLogDO = new WlyyHttpLogDO();
                                wlyyHttpLogDO.setRequest(url);
                                wlyyHttpLogDO.setName("核酸检测模板消息推送");
                                wlyyHttpLogDO.setCode(baseNatAppointmentDO.getId().toString());
                                wlyyHttpLogDO.setCreateTime(new Date());
                                wlyyHttpLogDO.setRequest(url);
                                wlyyHttpLogDO.setResponse(responseMsg);
                                wlyyHttpLogDao.save(wlyyHttpLogDO);
                            }
                            /*logger.info("模板消息推送标识pushFlag"+pushFlag);
                            if (!StringUtils.isNoneBlank(pushFlag)){
                                String recipeTime = DateUtil.dateToStr(new Date(), "yyyyMMddHHmmss");
@ -12543,26 +12614,35 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
            if(StringUtils.isNoneBlank(itemPrice)){
                natFee= Double.parseDouble(itemPrice)*100;
            }
            //先预约号源
            Date format2 = null;
            format2 = new SimpleDateFormat("yyyy-MM-dd").parse(natTime);
            String shortDate = new SimpleDateFormat("yyyyMMdd").format(format2);
            System.out.println("yyyy-MM-dd转yyyyMMdd:"+shortDate);
            String regRes=tasyNatService.saveRegOrder(regDept,shortDate,pm,preNo,cardNo,mobile,name,"3");
            com.alibaba.fastjson.JSONObject regObj = com.alibaba.fastjson.JSONObject.parseObject(regRes);
            String HisSeqNo="";
            String orderNum="";
            if (regObj!=null){
                if ("true".equalsIgnoreCase(regObj.getString("success"))){
                    com.alibaba.fastjson.JSONObject dataObj = com.alibaba.fastjson.JSONObject.parseObject(regObj.getString("data"));
                    HisSeqNo=dataObj.getString("HisSeqNo").trim();
                    orderNum=dataObj.getString("OrderNumber").trim();
                }else {
                    returnMap.put("msg",regObj.getString("data"));
                    returnMap.put("status","-1");
                    return  returnMap;
            WlyyHospitalSysDictDO tasyTime = wlyyHospitalSysDictDao.findById("natTime");
            if (tasyTime!=null){
                String natTimeC   = tasyTime.getDictValue();
                if (natTimeC.equalsIgnoreCase("1")){
                    //先预约号源
                    Date format2 = null;
                    format2 = new SimpleDateFormat("yyyy-MM-dd").parse(natTime);
                    String shortDate = new SimpleDateFormat("yyyyMMdd").format(format2);
                    System.out.println("yyyy-MM-dd转yyyyMMdd:"+shortDate);
                    String regRes=tasyNatService.saveRegOrder(regDept,shortDate,pm,preNo,cardNo,mobile,name,"3");
                    com.alibaba.fastjson.JSONObject regObj = com.alibaba.fastjson.JSONObject.parseObject(regRes);
                    if (regObj!=null){
                        if ("true".equalsIgnoreCase(regObj.getString("success"))){
                            com.alibaba.fastjson.JSONObject dataObj = com.alibaba.fastjson.JSONObject.parseObject(regObj.getString("data"));
                            HisSeqNo=dataObj.getString("HisSeqNo").trim();
                            orderNum=dataObj.getString("OrderNumber").trim();
                        }else {
                            returnMap.put("msg",regObj.getString("data"));
                            returnMap.put("status","-1");
                            return  returnMap;
                        }
                    }
                }
            }
            //先进行核算检测预约
            String realOrder="";
            String addressNow=provinceName+cityName+townName+streetName+address;
@ -12577,7 +12657,9 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
                    if ("0".equalsIgnoreCase(returnCode)){
                        returnMap.put("msg",object.getString("data"));
                        returnMap.put("status","-1");
                        tasyNatService.cancleOrder(cardNo,HisSeqNo,orderNum);
                        if (tasyTime.getDictValue().equalsIgnoreCase("1")){
                            tasyNatService.cancleOrder(cardNo,HisSeqNo,orderNum);
                        }
                        return  returnMap;
                    }else {
                        flag = true;
@ -12600,7 +12682,11 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
                baseNatAppointmentDO.setCardType(cardType);
                baseNatAppointmentDO.setIdnoType(idnoType);
                baseNatAppointmentDO.setAddress(address);
                baseNatAppointmentDO.setAppointmentTime(DateUtil.strToDateLong(natTime));
                if (tasyTime.getDictValue().equalsIgnoreCase("1")){
                    baseNatAppointmentDO.setAppointmentTime(DateUtil.strToDateLong(natTime));
                }else {
                    baseNatAppointmentDO.setAppointmentTime(new Date());
                }
                baseNatAppointmentDO.setOderNum(orderNum);
                baseNatAppointmentDO.setCityName(cityName);
                baseNatAppointmentDO.setFirstJobCode(firstJobCode);
@ -13153,10 +13239,15 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
                    }else if("xm_tasy_wx".equalsIgnoreCase(wechatId)){
                        if (StringUtils.isNoneBlank(baseNatAppointmentDO.getRealOrder())){
                            logger.info("同步his订单状态"+baseNatAppointmentDO.getRealOrder());
                            //取消号源
                            String registerCancel =tasyNatService.cancleOrder(baseNatAppointmentDO.getCardNo(),baseNatAppointmentDO.getRegisterNo(),baseNatAppointmentDO.getOderNum());
                            com.alibaba.fastjson.JSONObject jsonObject = JSON.parseObject(registerCancel);
                            String isSuccess=jsonObject.getString("success");
                            WlyyHospitalSysDictDO tasyTime = wlyyHospitalSysDictDao.findById("natTime");
                            if (tasyTime!=null){
                                if (tasyTime.getDictValue().equalsIgnoreCase("1")){
                                    //取消号源
                                    String registerCancel =tasyNatService.cancleOrder(baseNatAppointmentDO.getCardNo(),baseNatAppointmentDO.getRegisterNo(),baseNatAppointmentDO.getOderNum());
                                    com.alibaba.fastjson.JSONObject jsonObject = JSON.parseObject(registerCancel);
                                    String isSuccess=jsonObject.getString("success");
                                }
                            }
                            String natCancel=tasyNatService.cancelNat(baseNatAppointmentDO.getRealOrder(),baseNatAppointmentDO.getMedicare().trim(),baseNatAppointmentDO.getName());
                            com.alibaba.fastjson.JSONObject jsonObject1 = JSON.parseObject(natCancel);
                            String returnCode=jsonObject1.getString("ReturnCode");
@ -13931,27 +14022,30 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
            object.put("deptName",outpatientDO.getPatientName());
            return object;
        }else {
            /*entranceService.BS10108()*/
            /*entrance(outpatientDO.getCardNo(),registerNo,sysDictDO.getDictValue());*/
            logger.info("获取患者待结算信息开始!");
            entranceService.getSettleInfo(outpatientDO.getCardNo(),outpatientDO.getIdcard(),outpatientDO.getId());
            logger.info("获取患者待结算信息结束!");
            logger.info("医保挂号开始!");
            String register = healthCareService.register(registerNo);
            logger.info("医保挂号结束!");
            logger.info("医保费用明细上传开始!");
            String feeDetailUpload= healthCareService.feeDetailUploadToEntrance(registerNo);
            String feeDetailUpload= healthCareService.feeDetailUpload(registerNo);
            logger.info("医保费用明细上传结束!");
            logger.info("医保预结算信息开始!");
            YlzMedicalRelationDO ylzMedicalRelationDO =  healthCareService.preSettlementToEntrance(registerNo);
            YlzMedicalRelationDO ylzMedicalRelationDO =  healthCareService.preSettlement(registerNo);
            logger.info("医保预结算信息结束!");
            JSONObject object = new JSONObject();
            if (flag==1){
                logger.info("获取医保结算页面地址开始!");
                String getSettlementResultUrl = healthCareService.getSettlementResultUrlToEntrance(registerNo);
                String getSettlementResultUrl = healthCareService.getSettlementResultUrl(registerNo);
                logger.info("获取医保结算页面地址结束!");
                object.put("getSettlementResultUrl",getSettlementResultUrl);
            }else if (flag==2){
                logger.info("获取医保结算页面地址开始!");
                String getSettlementResultUrlBase64 = healthCareService.getSettlementResultUrlBase64ToEntrance(registerNo);
                String getSettlementResultUrlBase64 = healthCareService.getSettlementResultUrlBase64(registerNo);
                logger.info("获取医保结算页面地址结束!");
                object.put("getSettlementResultUrlBase64",getSettlementResultUrlBase64);
            }

+ 22 - 0
business/base-service/src/main/java/com/yihu/jw/hospital/prescription/service/YkyyPrescriptionService.java

@ -21,6 +21,7 @@ import com.yihu.jw.entity.hospital.consult.WlyyHospitalSysDictDO;
import com.yihu.jw.entity.hospital.consult.WlyyHospitalWaitingRoomDO;
import com.yihu.jw.entity.hospital.dict.WlyyChargeDictDO;
import com.yihu.jw.entity.hospital.doctor.WlyyPatientRegisterTimeDO;
import com.yihu.jw.entity.hospital.family.WlyyPatientFamilyMemberDO;
import com.yihu.jw.entity.hospital.mapping.DoctorMappingDO;
import com.yihu.jw.entity.hospital.mapping.PatientMappingDO;
import com.yihu.jw.entity.hospital.prescription.WlyyOutpatientDO;
@ -32,6 +33,7 @@ import com.yihu.jw.hospital.dict.WlyyChargeDictDao;
import com.yihu.jw.hospital.dict.WlyyHospitalSysDictDao;
import com.yihu.jw.hospital.doctor.dao.PatientRegisterTimeDao;
import com.yihu.jw.hospital.drugstore.dao.BaseDrugStoreDao;
import com.yihu.jw.hospital.family.dao.WlyyPatientFamilyMemberDao;
import com.yihu.jw.hospital.mapping.dao.DoctorMappingDao;
import com.yihu.jw.hospital.mapping.dao.PatientMappingDao;
import com.yihu.jw.hospital.mapping.service.PatientMappingService;
@ -127,6 +129,8 @@ public class YkyyPrescriptionService extends BaseJpaService<WlyyPrescriptionDO,
    private WlyyHospitalSysDictDao hospitalSysDictDao;
    @Autowired
    private BaseDoctorDao doctorDao;
    @Autowired
    private WlyyPatientFamilyMemberDao patientFamilyMemberDao;
    @Autowired
    private HttpClientUtil httpClientUtil;
@ -1113,4 +1117,22 @@ public class YkyyPrescriptionService extends BaseJpaService<WlyyPrescriptionDO,
    }
    /**
     * 门诊费用
     * @param familyId
     * @param startDate
     * @param endDate
     * @return
     */
    public String GetFYQD(String familyId,String startDate,String endDate,String loginId){
        WlyyPatientFamilyMemberDO patientFamilyMemberDO =patientFamilyMemberDao.findByIdAndDel(familyId);
        BasePatientDO basePatientDO = basePatientDao.findById(loginId);
        if (patientFamilyMemberDO!=null){
            return ykyyService.GetFYQD(patientFamilyMemberDO.getYktFamilyId(),"7A585AB3-ED33-B40D-C3E3-A8BB0A1195D8",startDate,endDate,basePatientDO.getVerifyCode());
        }else {
            return "患者不存在";
        }
    }
}

File diff suppressed because it is too large
+ 435 - 98
business/base-service/src/main/java/com/yihu/jw/hospital/prescription/service/entrance/EntranceService.java


+ 75 - 0
business/base-service/src/main/java/com/yihu/jw/hospital/prescription/service/entrance/HcyyEntranceService.java

@ -125,6 +125,8 @@ public class HcyyEntranceService {
    private static String key="bvvsf3JA0mUXMU+mVnMaOQ==";
    private static String caKey = "bvvsf3JA0mUXMU+mVnMaOQ==";
    //发送微信模板消息
    /*@Value("${wechat.url}")*/
    private String sendMessageUrl="http://172.16.100.37:8090/hospitalPortal-sms/sms/sendMessage";
@ -2921,5 +2923,78 @@ public class HcyyEntranceService {
    //===========================CA签名================================
    public String XMCA_DCS_UnifiedInterface(String apiName,String apiCode,String jsonData) throws Exception {
        String api = "XMCA_DCS_UnifiedInterface";
        String msgHeader ="<?xml version=\"1.0\" encoding=\"utf-8\"?> " +
                "<root> " +
                "   <serverName>"+api+"</serverName>  " +
                "   <format>xml</format>" +
                "   <callOperator></callOperator> " +
                "   <certificate>"+caKey+"</certificate> " +
                "</root>";
        String condition ="{\"apiName\":\""+apiCode+"\",\"version\":\"v1\",\"jsonData\":\""+jsonData+"\"}";
        String msgBody ="<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
                "<root>"+condition+"</root>";
        Map<String,String> params = new HashedMap();
        WlyyHttpLogDO wlyyHttpLogDO = new WlyyHttpLogDO();
        params.put("msgHeader",msgHeader);
        params.put("msgBody",msgBody);
        wlyyHttpLogDO.setRequest(params.toString());
        logger.info(apiName+" params:"+params.toString());
        String xml = getHcyyCAWebServiceInfo("CallInterface",params,getCaServiceUrl());
        XMLSerializer xmlSerializer = new XMLSerializer();
        String jsonObject = xmlSerializer.read(xml).toString();
        wlyyHttpLogDO.setResponse(jsonObject);
        wlyyHttpLogDO.setCreateTime(new Date());
        wlyyHttpLogDO.setCode(apiCode);
        wlyyHttpLogDO.setName(apiName);
        wlyyHttpLogDao.save(wlyyHttpLogDO);
        logger.info(apiName+" json:"+jsonObject);
        return jsonObject;
    }
    /**
     * 获取医生手写签名图片的base64编码
     *
     *
      * @param docIdcard 医生身份证
     * @return
     * @throws Exception
     */
    public String XMCA_downloadDoctorHandwrSignPicts(String docIdcard) throws Exception {
        String api = "XMCA_downloadDoctorHandwrSignPicts";
        String msgHeader ="<?xml version=\"1.0\" encoding=\"utf-8\"?> " +
                "<root> " +
                "   <serverName>"+api+"</serverName>  " +
                "   <format>xml</format>" +
                "   <callOperator></callOperator> " +
                "   <certificate>"+caKey+"</certificate> " +
                "</root>";
        String condition ="<strUserFileName>"+docIdcard+".png</strUserFileName>";
        String msgBody ="<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
                "<root>"+condition+"</root>";
        Map<String,String> params = new HashedMap();
        WlyyHttpLogDO wlyyHttpLogDO = new WlyyHttpLogDO();
        params.put("msgHeader",msgHeader);
        params.put("msgBody",msgBody);
        wlyyHttpLogDO.setRequest(params.toString());
        logger.info("获取医生手写签名图片的base64编码 params:"+params.toString());
        String xml = getHcyyCAWebServiceInfo("CallInterface",params,getCaServiceUrl());
        XMLSerializer xmlSerializer = new XMLSerializer();
        String jsonObject = xmlSerializer.read(xml).toString();
        wlyyHttpLogDO.setResponse(jsonObject);
        wlyyHttpLogDO.setCreateTime(new Date());
        wlyyHttpLogDO.setCode(api);
        wlyyHttpLogDO.setName("获取医生手写签名图片的base64编码");
        wlyyHttpLogDao.save(wlyyHttpLogDO);
        logger.info("获取医生手写签名图片的base64编码 json:"+jsonObject);
        return jsonObject;
    }
    //===========================CA签名==================================
}

+ 15 - 0
business/base-service/src/main/java/com/yihu/jw/hospital/prescription/service/entrance/util/ConvertUtil.java

@ -75,6 +75,21 @@ public class ConvertUtil {
            return  null;
        }
    }
    /**
     * 返回对象数组数据解析
     * @param obj
     * @return
     * @throws Exception
     */
    public static  JSONArray convertListEnvelop(String obj)throws Exception{
        JSONObject jsonObject=JSONObject.fromObject(obj);
        if(null!=jsonObject&&"1".equals(jsonObject.get("code").toString())){
            JSONArray jsonObjectMgsInfo=JSONArray.fromObject(jsonObject.get("MsgInfo"));
            return jsonObjectMgsInfo;
        }else {
            return  null;
        }
    }
    /**
     * 返回对象数组数据解析

+ 143 - 1
business/base-service/src/main/java/com/yihu/jw/hospital/ykyy/service/YkyyService.java

@ -3,11 +3,18 @@ package com.yihu.jw.hospital.ykyy.service;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.doctor.dao.BaseDoctorDao;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.entity.ca.OauthCaConfigDO;
import com.yihu.jw.hospital.prescription.dao.OauthCaConfigDao;
import com.yihu.jw.patient.dao.BasePatientDao;
import com.yihu.jw.util.common.StringUtil;
import com.yihu.jw.util.date.DateUtil;
import com.yihu.jw.util.http.HttpClientUtil;
import com.yihu.jw.util.idcard.IdCardUtil;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.collections.map.HashedMap;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
@ -15,6 +22,7 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;
@ -37,7 +45,10 @@ public class YkyyService {
    private static String yktUrl = "http://www.yanketong.com:133/api/";
    private static String yktUrl_90 = "http://www.yanketong.com:90/";
    @Autowired
    private OauthCaConfigDao oauthCaConfigDao;
    @Autowired
    private BaseDoctorDao baseDoctorDao;
    public String selectCards(String patient) throws Exception {
@ -764,4 +775,135 @@ public class YkyyService {
        logger.info("修改眼科通家人关系结果"+response);
        return response;
    }
    /**
     * OAuth登陆-获取用户信息
     * @param qrCode
     * @return
     */
    public JSONObject getTokeninfo(String qrCode){
        try {
            OauthCaConfigDO oauthCaConfigDO = oauthCaConfigDao.findOne("oauth_ca_config");
            String url = "";
            if (oauthCaConfigDO!=null){
                url=oauthCaConfigDO.getUrl()+"/pkiserver/v1/queryQRCode";
            }
            JSONObject jsonObject = new JSONObject();
            jsonObject.put("qrCode",qrCode);
            String response = requestCaParams(url,jsonObject.toJSONString());
            logger.info("验证二维码 getQueryQRCode :"+response);
            return JSONObject.parseObject(response);
        }catch (Exception e){
            e.printStackTrace();
        }
        return null;
    }
    /**
     * 业务数据签名
     * @param idCardNo
     * @param content
     * @param extInfo
     * @param type
     * @return
     */
    public JSONObject signTimeStamp(String idCardNo,String content,String extInfo,String type){
        try {
            OauthCaConfigDO oauthCaConfigDO = oauthCaConfigDao.findOne("oauth_ca_config");
            String url = "";
            if (oauthCaConfigDO!=null){
                url=oauthCaConfigDO.getUrl()+"/signDataWithExtraInfo/signTimeStamp";
            }
            JSONObject jsonObject = new JSONObject();
            jsonObject.put("idCardNo",idCardNo);
            jsonObject.put("inData",content);
            jsonObject.put("extInfo",extInfo);
            jsonObject.put("type",type);
            String response = requestCaParams(url,jsonObject.toJSONString());
            logger.info("业务数据签名 signTimeStamp :"+response);
            return JSONObject.parseObject(response);
        }catch (Exception e){
            e.printStackTrace();
        }
        return null;
    }
    /**
     * 获取医生签名图片
     * @param doctor
     * @return
     */
    public JSONObject getSignPicture(String doctor){
        try {
            BaseDoctorDO doctorDO = baseDoctorDao.findById(doctor);
            OauthCaConfigDO oauthCaConfigDO = oauthCaConfigDao.findOne("oauth_ca_config");
            String url = "";
            if (oauthCaConfigDO!=null){
                url=oauthCaConfigDO.getUrl()+"/pkiserver/v1/getSignPicture";
            }
            JSONObject jsonObject = new JSONObject();
            jsonObject.put("idCardNo",doctorDO.getIdcard());
            String response = requestCaParams(url,jsonObject.toJSONString());
            JSONObject object = new JSONObject();
            if (StringUtils.isNoneBlank(response)){
                object = JSONObject.parseObject(response);
                if (object.getString("code").equalsIgnoreCase("200")){
                    JSONObject object1 = object.getJSONObject("data");
                    object.put("code","1000");
                    if (object1.getString("resultCode").equalsIgnoreCase("0")){
                        object1.put("image",object1.getString("picData"));
                    }
                }
            }
            logger.info("医生签名图片 getSignPicture :"+response);
            return object;
        }catch (Exception e){
            e.printStackTrace();
        }
        return null;
    }
    /**
     * CA签名服务调用方式
     * @param url
     * @param data
     * @return
     */
    public String requestCaParams(String url,String data) throws UnsupportedEncodingException {
        OauthCaConfigDO oauthCaConfigDO = oauthCaConfigDao.findOne("oauth_ca_config");
        String time = DateUtil.getStringDateUpper();
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("appid",oauthCaConfigDO.getClientId());
        System.out.println("业务数据为:" + data);
        String dataInfo = Base64.encodeBase64String(data.getBytes("utf-8"));
        jsonObject.put("data", dataInfo);
        jsonObject.put("timestamp",time);
        String digest = DigestUtils.sha256Hex((oauthCaConfigDO.getClientId() + dataInfo + time + oauthCaConfigDO.getClientSecret()));
        jsonObject.put("digest",digest);
        logger.info("请求url"+url+"请求参数"+jsonObject);
        String res = httpClientUtil.postBody(url,jsonObject);
        logger.info("返回参数"+res);
        return res;
    }
    /**
     *获取门诊费用清单
     * hospitalId = 7A585AB3-ED33-B40D-C3E3-A8BB0A1195D8
     * @return
     */
    public String GetFYQD(String patientId,String hospitalId,String startDate,String endDate,String verifyCode){
        String response="";
        String url = "http://www.yanketong.com:90/api/His/GetFYQD?patientId="+patientId+"&hospitalId="+hospitalId+"&beginDate="+URLEncoder.encode(startDate)+"&endDate="+URLEncoder.encode(endDate);
        Map<String,String> headerMap = new HashedMap();
        headerMap.put("VerifyCode",verifyCode);
        logger.info("获取门诊结算信息请求参数:"+url);
        response = httpClientUtil.sendGet(url,headerMap);
        logger.info("获取门诊结算信息:"+response);
        return response;
    }
}

+ 11 - 0
business/base-service/src/main/java/com/yihu/jw/order/BusinessOrderService.java

@ -1851,6 +1851,7 @@ public class BusinessOrderService extends BaseJpaService<BusinessOrderDO,Busines
            }
            businessOrderDO.setPayType(4);
            businessOrderDO.setOrderNo("HLWYY"+System.currentTimeMillis()+(int)(Math.random()*900)+100);
            businessOrderDO.setDepositType(depositType);
            businessOrderDao.save(businessOrderDO);
            List<BasePatientWechatDo> patientWechatDos = patientWechatDao.findByWechatIdAndPatientId(wechatId,businessOrderDO.getPatient());
            if (patientWechatDos!=null&&patientWechatDos.size()!=0){
@ -1888,6 +1889,16 @@ public class BusinessOrderService extends BaseJpaService<BusinessOrderDO,Busines
                    response = object.toJSONString();
                }
            }else {
                JSONObject object = JSONObject.parseObject(response);
                if (object!=null){
                    JSONObject jsonObject = object.getJSONObject("param");
                    if (object.getString("respCode").equalsIgnoreCase("000000")){
                        String traceNo = jsonObject.getString("traceNo");
                        businessOrderDO.setTraceNo(traceNo);
                        businessOrderDao.save(businessOrderDO);
                    }
                }
            }
        }else {
            return "找不到订单!";

+ 3 - 1
business/base-service/src/main/java/com/yihu/jw/order/pay/ylz/YlzPayService.java

@ -171,6 +171,7 @@ public class YlzPayService {
            param.setWithdrawMode(withdrawMode);
            param.setOutChargeNo(outChargeNo);
            param.setOutRefundNo(outRefundNo);
            param.setRefundType("hisDecide");
            param.setIdNo(idNo);
            ResponseParams<RefundResult> response = onepayClient.refund(param);
            if (response.getRespCode().equals("000000")){
@ -516,6 +517,7 @@ public class YlzPayService {
            param.setIdNo(idNo);
            param.setUserName(userName);
            ResponseParams<RefundResult> respnse = onepayClient.refund(param);
            System.out.println("易联众退款结果:"+JSON.toJSONString(respnse));
            if (respnse.getRespCode().equals("000000")){
                jsonObject = JSON.toJSONString(respnse);
            }else {
@ -530,7 +532,7 @@ public class YlzPayService {
            e.printStackTrace(pw);
            error = sw.toString();
        }
        logService.saveHttpLog(isSuccess, "hop.trade.refund", "互联网预交金退款", "POST", null,JSON.toJSONString(param), jsonObject, error, logService.shoppatType);
        logService.saveHttpLog(isSuccess, "hop.trade.refund", "互联网预交金退款", "POST", null,null, jsonObject, error, logService.shoppatType);
        return jsonObject;
    }

+ 2 - 0
business/base-service/src/main/java/com/yihu/jw/patient/dao/BasePatientDao.java

@ -45,6 +45,8 @@ public interface BasePatientDao extends PagingAndSortingRepository<BasePatientDO
    
    BasePatientDO findByIdcard(String idcard);
    @Query("from BasePatientDO p where p.mobile = ?1 and p.mobile = ?2 and p.del=1")
    BasePatientDO findByIdcardAndMobile(String idcard,String mobile);
//    @Modifying
//    @Query(" update BasePatientDO a set a.openid=?2 where a.id=?1 ")
//    int updateOpenId(String id, String openId);

+ 3 - 0
business/base-service/src/main/java/com/yihu/jw/patient/dao/BasePatientMedicareCardDao.java

@ -23,6 +23,9 @@ public interface BasePatientMedicareCardDao extends PagingAndSortingRepository<P
    @Query("from  PatientMedicareCardDO where  code= ?1 and patientCode = ?2")
    PatientMedicareCardDO findByCodeAndPatientCode(String code ,String patientCode);
    @Query("from  PatientMedicareCardDO where  code= ?1 and patientCode = ?2 and del=1")
    PatientMedicareCardDO findByCodeAndPatientCodeAndDel(String code ,String patientCode);
    PatientMedicareCardDO findByTypeAndPatientCodeAndDel(String Type,String patientCode,String del);
    boolean existsByCodeAndDel(String code,String del);

+ 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".equals(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".equals(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;
    }
}

+ 31 - 1
business/base-service/src/main/java/com/yihu/jw/utils/PinYinUtils.java

@ -1,5 +1,6 @@
package com.yihu.jw.utils;
import com.alibaba.fastjson.JSONArray;
import net.sourceforge.pinyin4j.PinyinHelper;
import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
@ -134,7 +135,36 @@ public class PinYinUtils {
	}
	public static void main(String[] args)  throws  Exception{
		System.out.println(getFirstSpell("广西"));
		/*String r = "[\"钟公庙街道\",\n" +
				"\"中河街道\",\n" +
				"\"章水镇\",\n" +
				"\"云龙镇\",\n" +
				"\"鄞江镇\",\n" +
				"\"曕岐镇\",\n" +
				"\"咸祥镇\",\n" +
				"\"下应街道\",\n" +
				"\"五乡镇\",\n" +
				"\"塘溪镇\",\n" +
				"\"首南街道\",\n" +
				"\"石碶\",\n" +
				"\"邱隘镇\",\n" +
				"\"梅墟\",\n" +
				"\"龙观乡\",\n" +
				"\"姜山镇\",\n" +
				"\"集士港镇\",\n" +
				"\"横溪镇\",\n" +
				"\"横街镇\",\n" +
				"\"古林镇\",\n" +
				"\"高桥镇\",\n" +
				"\"洞桥镇\",\n" +
				"\"东吴镇\",\n" +
				"\"东钱湖镇\"]";
		JSONArray array = JSONArray.parseArray(r);
		for (int i=0;i<array.size();i++){
			System.out.println(getFirstSpell(array.getString(i)));
		}
*/
		System.out.print(getFirstSpell("曕岐镇"));
	}
}

+ 31 - 0
business/base-service/src/main/java/com/yihu/jw/wechat/dao/WxAppletsAccessTokenDao.java

@ -0,0 +1,31 @@
package com.yihu.jw.wechat.dao;
import com.yihu.jw.entity.base.wx.WxAccessTokenDO;
import com.yihu.jw.entity.base.wx.WxAppletsAccessTokenDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
/**
 * Created by Administrator on 2017/5/18 0018.
 */
public interface WxAppletsAccessTokenDao extends PagingAndSortingRepository<WxAppletsAccessTokenDO, String>, JpaSpecificationExecutor<WxAppletsAccessTokenDO> {
    @Query("from WxAppletsAccessTokenDO w where w.wechatId =?1 order by w.addTimestamp desc")
    List<WxAppletsAccessTokenDO> getWxAccessTokenById(String wechatId);
    
    @Modifying
    @Query("delete from WxAppletsAccessTokenDO p where p.wechatId=?1 ")
    void deleteByWechatId(String wechatId);
    @Query("select p from WxAppletsAccessTokenDO p where p.code = ?1 order by p.addTimestamp desc")
    Iterable<WxAppletsAccessTokenDO> findAccessToken(String accId);
    @Modifying
    @Query("delete from WxAppletsAccessTokenDO p where p.code=?1 ")
    void deleteByAccId(String accId);
}

+ 41 - 0
business/base-service/src/main/java/com/yihu/jw/wechat/service/WechatInfoService.java

@ -1,5 +1,6 @@
package com.yihu.jw.wechat.service;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
import com.yihu.jw.entity.base.wx.JsApiTicket;
import com.yihu.jw.entity.base.wx.WxWechatDO;
import com.yihu.jw.hospital.prescription.service.entrance.EntranceService;
@ -7,13 +8,18 @@ import com.yihu.jw.hospital.prescription.service.entrance.HcyyEntranceService;
import com.yihu.jw.hospital.prescription.service.entrance.TnyyEntranceService;
import com.yihu.jw.hospital.prescription.service.entrance.XzzxEntranceService;
import com.yihu.jw.util.wechat.wxhttp.HttpUtil;
import com.yihu.jw.utils.StringUtil;
import com.yihu.jw.wechat.dao.WechatDao;
import org.apache.commons.lang3.StringUtils;
import org.json.JSONObject;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
@Service
public class WechatInfoService {
    private static final org.slf4j.Logger LOGGER = LoggerFactory.getLogger(WechatInfoService.class);
    @Autowired
    private WechatDao wechatDao;
@ -29,6 +35,9 @@ public class WechatInfoService {
    @Autowired
    private HcyyEntranceService hcyyEntranceService;
    @Value("${wechat.id}")
    private String wxId;
    /**
     * 通过code获取判断openid
     *
@ -148,4 +157,36 @@ public class WechatInfoService {
            throw new Exception(e.getMessage());
        }
    }
    /**
     * 根据小程序获取用户手机号
     *
     * @param code
     * @return
     * @throws Exception
     */
    public String getUserPhoneByApplets(String code) throws Exception {
        System.out.println("code"+code);
        String token = wxAccessTokenService.getWxAppletsAccessTokenById(wxId).getAccessToken();
        System.out.println("token"+token);
        System.out.println("wxId"+wxId);
        if (StringUtils.isNoneBlank(code)){
            String token_url = "https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token=" + token;
            String params = "{\"code\": \""+code+"\"}";
            LOGGER.info("参数:"+params);
            String result = HttpUtil.sendPost(token_url, params);
            LOGGER.info("步骤1:"+result);
            if (StringUtils.isNoneBlank(result)){
                com.alibaba.fastjson.JSONObject object = com.alibaba.fastjson.JSONObject.parseObject(result);
                if (object.getString("errcode").equalsIgnoreCase("0")){
                    com.alibaba.fastjson.JSONObject jsonObject= object.getJSONObject("phone_info");
                    return jsonObject.getString("phoneNumber");
                }
            }
            return null;
        }else {
            return null;
        }
    }
}

+ 127 - 1
business/base-service/src/main/java/com/yihu/jw/wechat/service/WxAccessTokenService.java

@ -2,6 +2,7 @@ package com.yihu.jw.wechat.service;
import com.yihu.jw.entity.base.wx.JsApiTicket;
import com.yihu.jw.entity.base.wx.WxAccessTokenDO;
import com.yihu.jw.entity.base.wx.WxAppletsAccessTokenDO;
import com.yihu.jw.entity.base.wx.WxWechatDO;
import com.yihu.jw.exception.ApiException;
import com.yihu.jw.exception.code.ExceptionCode;
@ -10,6 +11,7 @@ import com.yihu.jw.rm.base.WechatRequestMapping;
import com.yihu.jw.wechat.dao.JsapiTicketDao;
import com.yihu.jw.wechat.dao.WechatDao;
import com.yihu.jw.wechat.dao.WxAccessTokenDao;
import com.yihu.jw.wechat.dao.WxAppletsAccessTokenDao;
import com.yihu.mysql.query.BaseJpaService;
import com.yihu.utils.network.HttpUtils;
import org.json.JSONObject;
@ -41,6 +43,8 @@ public class WxAccessTokenService extends BaseJpaService<WxAccessTokenDO, WxAcce
    private JsapiTicketDao jsapiTicketDao;
    @Autowired
    private TnyyEntranceService tnyyEntranceService;
    @Autowired
    private WxAppletsAccessTokenDao wxAppletsAccessTokenDao;
    public WxWechatDO getWxInfo(String wxId){
@ -118,7 +122,17 @@ public class WxAccessTokenService extends BaseJpaService<WxAccessTokenDO, WxAcce
    public void deleteByWechatId(String wechatId){
        wxAccessTokenDao.deleteByWechatId(wechatId);
    }
    
    /**
     * wechatId 删除无效小程序token wechatId
     * @param wechatId
     */
    @Transactional
    public void deleteAppletsByWechatId(String wechatId){
        wxAppletsAccessTokenDao.deleteByWechatId(wechatId);
    }
    /**
     * 过期后删掉accesstoken,  重新获取
     * @param wechatId
@ -168,6 +182,55 @@ public class WxAccessTokenService extends BaseJpaService<WxAccessTokenDO, WxAcce
        }
    }
    /**
     * 过期后删掉小程序accesstoken,  重新获取
     * @param wechatId
     * @return
     */
    @Transactional
    public String updateAppletsAccessToken(String wechatId){
        try {
            //根据wechatCode查找出appid和appSecret
            WxWechatDO wxWechat = wechatDao.findById(wechatId);
            String token_url = "https://api.weixin.qq.com/cgi-bin/token";
            String appId="";
            String appSecret="";
            appId = wxWechat.getApplets();
            appSecret = wxWechat.getAppletsSecret();
            if (StringUtils.isEmpty(appId)){
                throw new ApiException(WechatRequestMapping.WxConfig.message_fail_appId_is_null, ExceptionCode.common_error_params_code);
            }
            if (StringUtils.isEmpty(appSecret)){
                throw new ApiException(WechatRequestMapping.WxConfig.message_fail_appSecret_is_null, ExceptionCode.common_error_params_code);
            }
            Map<String, Object> params = new HashMap<>();
            params.put("grant_type", "client_credential");
            params.put("appid", appId);
            params.put("secret", appSecret);
            String result = HttpUtils.doGet(token_url, params).getContent();
            logger.info("--------------wechat token return:"+result+"---------------");
            JSONObject json = new JSONObject(result);
            if (json.has("access_token")) {
                String token = json.get("access_token").toString();
                String expires_in = json.get("expires_in").toString();
                WxAppletsAccessTokenDO newaccessToken = new WxAppletsAccessTokenDO();
                newaccessToken.setAccessToken(token);
                newaccessToken.setExpiresIn(Long.parseLong(expires_in));
                newaccessToken.setAddTimestamp(System.currentTimeMillis());
                newaccessToken.setCzrq(new Date());
                newaccessToken.setCode(UUID.randomUUID().toString().replace("-",""));
                newaccessToken.setWechatId(wechatId);
                wxAppletsAccessTokenDao.save(newaccessToken);
                return token;
            } else {
                return null;
            }
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
    public WxAccessTokenDO getWxAccessTokenById(String wechatId) {
        try {
            //根据wechatCode查找出appid和appSecret
@ -229,6 +292,69 @@ public class WxAccessTokenService extends BaseJpaService<WxAccessTokenDO, WxAcce
    }
    /**
     * 生成小程序token
     * @param wechatId
     * @return
     */
    public WxAppletsAccessTokenDO getWxAppletsAccessTokenById(String wechatId) {
        try {
            //根据wechatCode查找出appid和appSecret
            WxWechatDO wxWechat = wechatDao.findById(wechatId);
            List<WxAppletsAccessTokenDO> wxAccessTokens =  wxAppletsAccessTokenDao.getWxAccessTokenById(wechatId);
            if(wxWechat==null){
                throw new ApiException(WechatRequestMapping.WxConfig.message_fail_wxWechat_is_no_exist, ExceptionCode.common_error_params_code);
            }
            if(wxAccessTokens!=null&&wxAccessTokens.size()>0){
                for (WxAppletsAccessTokenDO accessToken : wxAccessTokens) {
                    if ((System.currentTimeMillis() - accessToken.getAddTimestamp()) < (accessToken.getExpiresIn() * 500)) {
                        return accessToken;
                    } else {
                        wxAppletsAccessTokenDao.delete(accessToken);
                        break;
                    }
                }
            }
            String token_url = "https://api.weixin.qq.com/cgi-bin/token";
            String appId="";
            String appSecret="";
            appId = wxWechat.getApplets();
            appSecret = wxWechat.getAppletsSecret();
            if (StringUtils.isEmpty(appId)){
                throw new ApiException(WechatRequestMapping.WxConfig.message_fail_appId_is_null, ExceptionCode.common_error_params_code);
            }
            if (StringUtils.isEmpty(appSecret)){
                throw new ApiException(WechatRequestMapping.WxConfig.message_fail_appSecret_is_null, ExceptionCode.common_error_params_code);
            }
            Map<String, Object> params = new HashMap<>();
            params.put("grant_type", "client_credential");
            params.put("appid", appId);
            params.put("secret", appSecret);
            String result = HttpUtils.doGet(token_url, params).getContent();
            logger.info("--------------wechat token return:"+result+"---------------");
            JSONObject json = new JSONObject(result);
            if (json.has("access_token")) {
                String token = json.get("access_token").toString();
                String expires_in = json.get("expires_in").toString();
                WxAppletsAccessTokenDO newaccessToken = new WxAppletsAccessTokenDO();
                newaccessToken.setAccessToken(token);
                newaccessToken.setExpiresIn(Long.parseLong(expires_in));
                newaccessToken.setAddTimestamp(System.currentTimeMillis());
                newaccessToken.setCzrq(new Date());
                newaccessToken.setCode(UUID.randomUUID().toString().replace("-",""));
                newaccessToken.setWechatId(wechatId);
                wxAppletsAccessTokenDao.save(newaccessToken);
                return newaccessToken;
            } else {
                return null;
            }
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
    /**
     * 泰安获取token
     * @param wechatId

+ 12 - 0
business/base-service/src/mqConfig/esbmq-config.xml

@ -85,6 +85,18 @@
				<BS10008_0>EwellQ.S60.BS10008.PUT</BS10008_0>
				<BS10008_1>EwellQ.S60.BS10008.GET</BS10008_1>
				<!--查询待扣费处方信息-->
				<BS15036_0>EwellQ.S60.BS15036.PUT</BS15036_0>
				<BS15036_1>EwellQ.S60.BS15036.GET</BS15036_1>
				<!--诊间结算-->
				<BS10108_0>EwellQ.S60.BS10108.PUT</BS10108_0>
				<BS10108_1>EwellQ.S60.BS10108.GET</BS10108_1>
				<!--his退费接口-->
				<BS15051_0>EwellQ.S60.BS15051.PUT</BS15051_0>
				<BS15051_1>EwellQ.S60.BS15051.GET</BS15051_1>
				<!--检查检验start-->
				<BS20030_0>EwellQ.S60.BS20030.PUT</BS20030_0>
				<BS20030_1>EwellQ.S60.BS20030.GET</BS20030_1>

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

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

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

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

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

@ -285,7 +285,8 @@ public class BaseDoctorDO extends UuidIdentityEntityWithOperator {
    private String visitTime;
    /**
     * 类型 1社区医生,2助老员, 3教师
     *
     * 类型 1社区医生,2社工, 3教师,4助老员
     */
    private Integer level;
    private String doctorLat;//医生当前定位地址纬度
@ -294,6 +295,18 @@ public class BaseDoctorDO extends UuidIdentityEntityWithOperator {
    private String levelName;
    private String isSign;
    private Date lastSignTime;
    private String appletQrCode;
    @Column(name = "applet_qr_code")
    public String getAppletQrCode() {
        return appletQrCode;
    }
    public void setAppletQrCode(String appletQrCode) {
        this.appletQrCode = appletQrCode;
    }
    @Column(name = "is_sign")
    public String getIsSign() {
        return isSign;

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

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

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

@ -295,6 +295,8 @@ public class BasePatientDO extends UuidIdentityEntityWithOperator {
    private String homeLatLon;//家庭经纬度
    private Integer homeState;//居家状态 1居家0离家;
    private String verifyCode;//眼科token
    @Column(name = "medical_state")
    public String getMedicalState() {
@ -941,4 +943,13 @@ public class BasePatientDO extends UuidIdentityEntityWithOperator {
    public void setHomeState(Integer homeState) {
        this.homeState = homeState;
    }
    @Column(name="verify_code")
    public String getVerifyCode() {
        return verifyCode;
    }
    public void setVerifyCode(String verifyCode) {
        this.verifyCode = verifyCode;
    }
}

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

@ -0,0 +1,63 @@
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;
/**
 * Created by Bing on 2022/3/11.
 * 老人助老员关联实体
 */
@Entity
@Table(name = "base_patient_helper")
@SequenceGenerator(name="id_generated", sequenceName="seq_base_patient_helper")
public class BasePatientHelperDO extends IntegerIdentityEntityWithOperator {
    private String patient;
    private String patientName;
    private String doctor;
    private String doctorName;
    private String del;//状态(1有效0无效)
    public String getPatient() {
        return patient;
    }
    public void setPatient(String patient) {
        this.patient = patient;
    }
    public String getPatientName() {
        return patientName;
    }
    public void setPatientName(String patientName) {
        this.patientName = patientName;
    }
    public String getDoctor() {
        return doctor;
    }
    public void setDoctor(String doctor) {
        this.doctor = doctor;
    }
    public String getDoctorName() {
        return doctorName;
    }
    public void setDoctorName(String doctorName) {
        this.doctorName = doctorName;
    }
    public String getDel() {
        return del;
    }
    public void setDel(String del) {
        this.del = del;
    }
}

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

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

+ 84 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/base/wx/WxAppletsAccessTokenDO.java

@ -0,0 +1,84 @@
package com.yihu.jw.entity.base.wx;
import com.yihu.jw.entity.UuidIdentityEntity;
import javax.persistence.*;
import java.util.Date;
/**
 * 微信 accesstoken表
 */
@Entity
@Table(name = "wx_applets_access_token")
public class WxAppletsAccessTokenDO extends UuidIdentityEntity implements java.io.Serializable {
	// Fields
	private String wechatId;//关联的微信code 关联表 Wx_Wechat
	private String accessToken;//调用微信返回的accesstoken
	private Long addTimestamp;//创建时间 秒数
	private Long expiresIn;//凭证有效时间(秒)
	private Date czrq;//操作时间
	private String code;
	/** default constructor */
	public WxAppletsAccessTokenDO() {
	}
	@Column(name = "wechat_id", length = 64)
	public String getWechatId() {
		return wechatId;
	}
	public void setWechatId(String wechatId) {
		this.wechatId = wechatId;
	}
	@Column(name = "access_token", nullable = false, length = 300)
	public String getAccessToken() {
		return this.accessToken;
	}
	public void setAccessToken(String accessToken) {
		this.accessToken = accessToken;
	}
	@Column(name = "add_timestamp", nullable = false, precision = 15, scale = 0)
	public long getAddTimestamp() {
		return this.addTimestamp;
	}
	public void setAddTimestamp(long addTimestamp) {
		this.addTimestamp = addTimestamp;
	}
	@Column(name = "expires_in", nullable = false)
	public Long getExpiresIn() {
		return this.expiresIn;
	}
	@Temporal(TemporalType.TIMESTAMP)
	@Column(name = "czrq", nullable = false, length = 0)
	public Date getCzrq() {
		return this.czrq;
	}
	public void setCzrq(Date czrq) {
		this.czrq = czrq;
	}
	public String getCode() {
		return code;
	}
	public void setCode(String code) {
		this.code = code;
	}
	public void setExpiresIn(long expiresIn) {
		this.expiresIn = expiresIn;
	}
}

+ 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;

+ 3 - 1
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,10 +14,11 @@ 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;
    private String doctorCode;//助老员code
    private String doctorCode;//社工code
    private String safeId; //安全区域id 关联居民电子围栏id
    private String del;//作废标识,1正常,0作废
    private Integer manageStatus;//电子围栏确认情况 0待确认 1已确认

+ 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;

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

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

+ 3 - 1
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,12 +15,13 @@ 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;
    public String userCode;
    public String userName;
    public Integer userType; //用户类型 1居民 2助老员
    public Integer userType; //用户类型 1居民 2社工
    public String content;
    public Date createTime;

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

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

+ 11 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/order/BusinessOrderDO.java

@ -55,6 +55,8 @@ public class BusinessOrderDO extends IntegerIdentityEntity {
    private String traceNo;//支付平台的订单号
    private Long lastPayTime;//订单截至支付日期 13位时间戳
    private String historyOrder;
    private String depositType; //原充值类型
    @Column(name = "history_order")
    public String getHistoryOrder() {
        return historyOrder;
@ -312,4 +314,13 @@ public class BusinessOrderDO extends IntegerIdentityEntity {
    public void setLastPayTime(Long lastPayTime) {
        this.lastPayTime = lastPayTime;
    }
    @Column(name = "deposit_type")
    public String getDepositType() {
        return depositType;
    }
    public void setDepositType(String depositType) {
        this.depositType = depositType;
    }
}

+ 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;
    }
}

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

@ -0,0 +1,114 @@
package com.yihu.jw.gateway.filter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
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 {
    private Logger log = LoggerFactory.getLogger(CsrfFilter.class);
    /**
     * 过滤器配置对象
     */
    FilterConfig filterConfig = null;
    /**
     * 是否启用
     */
    @Value("${security.csrf.enable}")
    private boolean enable;
    /**
     * 忽略的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(!enable ||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

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

@ -77,6 +77,18 @@
            <!-- <scope>runtime</scope> -->
        </dependency>
        <dependency>
            <groupId>net.sf.json-lib</groupId>
            <artifactId>json-lib</artifactId>
            <version>2.4</version>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!-- Redis  -->
        <dependency>
            <groupId>org.springframework.boot</groupId>

+ 1 - 1
server/svr-authentication/src/main/java/com/yihu/jw/security/core/userdetails/jdbc/WlyyUserDetailsService.java

@ -861,7 +861,7 @@ public class WlyyUserDetailsService extends JdbcDaoSupport implements UserDetail
        HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
        KeyPair keyPair = (KeyPair) request.getSession().getAttribute("privateKey");
        String idcard = com.yihu.jw.security.utils.RSAUtils.decryptBase64(request.getParameter("idcard"), keyPair);
        logger.info("idcard"+idcard);
        return idcard;
    }

+ 14 - 0
server/svr-authentication/src/main/java/com/yihu/jw/security/dao/WlyyHttpLogDao.java

@ -0,0 +1,14 @@
package com.yihu.jw.security.dao;
import com.yihu.jw.entity.hospital.httplog.WlyyHttpLogDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
/**
 * Created by Trick on 2019/6/25.
 */
public interface WlyyHttpLogDao extends PagingAndSortingRepository<WlyyHttpLogDO, String>, JpaSpecificationExecutor<WlyyHttpLogDO> {
}

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

@ -165,6 +165,8 @@ public class WlyyLoginEndpoint extends AbstractEndpoint {
    private WlyyHospitalSysDictDao wlyyhospitalSysdictDao;
    @Autowired
    private HttpClientUtil httpClientUtil;
    @Autowired
    private HcyyService hcyyService;
    @PostConstruct
@ -260,136 +262,151 @@ public class WlyyLoginEndpoint extends AbstractEndpoint {
     */
    @RequestMapping(value = "/oauth/login", method = RequestMethod.POST)
    public ResponseEntity<Oauth2Envelop<WlyyUserSimple>> login(@RequestParam Map<String, String> parameters, HttpSession httpSession) throws Exception {
        try{
            logger.info("login:登录进入1");
            //图形验证码验证
            String key = parameters.get("key");
            String text = parameters.get("text");
        logger.info("login:登录进入1");
        //图形验证码验证
        String key = parameters.get("key");
        String text = parameters.get("text");
        if(org.apache.commons.lang3.StringUtils.isNotBlank(key)&& org.apache.commons.lang3.StringUtils.isNotBlank(text)){
            if(!verifyCaptcha(key,text)){
                throw new ImgCaptchaException("img_captcha error");
            if(org.apache.commons.lang3.StringUtils.isNotBlank(key)&& org.apache.commons.lang3.StringUtils.isNotBlank(text)){
                if(!verifyCaptcha(key,text)){
                    throw new ImgCaptchaException("img_captcha error");
                }
            }
        }
        logger.info("login:登录进入2");
            logger.info("login:登录进入2");
        String flag = parameters.get("flag");
            String flag = parameters.get("flag");
        String username = parameters.get("username");
        if (StringUtils.isEmpty(username)&&StringUtils.isEmpty(flag)) {
            throw new InvalidRequestException("username");
        }
        String client_id = parameters.get("client_id");
        if (StringUtils.isEmpty(client_id)) {
            throw new InvalidRequestException("client_id");
        }
        if("alipay".equals(flag)||"family".equals(flag)){
            //支付宝登录||家人登录
            parameters.put("grant_type", flag);
            String encdata = parameters.get("encdata");
            if("alipay".equals(flag)){
                encdata = AES.decrypt(encdata);
            }else{
                encdata = AesEncryptUtils.agDecrypt(encdata);
            }
            String data[] = encdata.split(":");
            username = data[1];
            parameters.put("username", username);
        }else if (StringUtils.isEmpty(parameters.get("captcha"))) {
            parameters.put("grant_type", "password");
            //解密密码
            if (parameters.get("password") != null) {
                KeyPair keyPair = (KeyPair) httpSession.getAttribute("privateKey");
                String password = com.yihu.jw.security.utils.RSAUtils.decryptBase64(parameters.get("password"), keyPair);
                parameters.put("password", password);
            String username = parameters.get("username");
            logger.info(username);
            if (StringUtils.isEmpty(username)&&StringUtils.isEmpty(flag)) {
                throw new InvalidRequestException("username");
            }
            String client_id = parameters.get("client_id");
            if (StringUtils.isEmpty(client_id)) {
                throw new InvalidRequestException("client_id");
            }
            if("alipay".equals(flag)||"family".equals(flag)){
                //支付宝登录||家人登录
                parameters.put("grant_type", flag);
                String encdata = parameters.get("encdata");
                if("alipay".equals(flag)){
                    encdata = AES.decrypt(encdata);
                }else{
                    encdata = AesEncryptUtils.agDecrypt(encdata);
                }
                String data[] = encdata.split(":");
                username = data[1];
                parameters.put("username", username);
            }else if (StringUtils.isEmpty(parameters.get("captcha"))) {
                parameters.put("grant_type", "password");
                //解密密码
                if (parameters.get("password") != null) {
                    KeyPair keyPair = (KeyPair) httpSession.getAttribute("privateKey");
                    String password = com.yihu.jw.security.utils.RSAUtils.decryptBase64(parameters.get("password"), keyPair);
                    parameters.put("password", password);
                } else {
                    //第三方同步账号模式登录
                    parameters.put("grant_type", "ihealthCode");
                }
            } else {
                //第三方同步账号模式登录
                parameters.put("grant_type", "ihealthCode");
                parameters.put("grant_type", "captcha");
            }
        } else {
            parameters.put("grant_type", "captcha");
        }
        logger.info("login:登录进入3");
            logger.info("login:登录进入3");
        ClientDetails authenticatedClient = clientDetailsService.loadClientByClientId(client_id);
        if (null == authenticatedClient) {
            throw new InvalidRequestException("client_id");
        }
        logger.info("login:登录进入4"+authenticatedClient.getClientId());
            ClientDetails authenticatedClient = clientDetailsService.loadClientByClientId(client_id);
            if (null == authenticatedClient) {
                throw new InvalidRequestException("client_id");
            }
            logger.info("login:登录进入4"+authenticatedClient.getClientId());
        TokenRequest tokenRequest = oAuth2RequestFactory.createTokenRequest(parameters, authenticatedClient);
        oAuth2RequestValidator.validateScope(tokenRequest, authenticatedClient);
        OAuth2AccessToken token = getTokenGranter().grant(tokenRequest.getGrantType(), tokenRequest);
        if (token == null) {
            throw new UnsupportedGrantTypeException("Unsupported grant type: " + tokenRequest.getGrantType());
        }
            TokenRequest tokenRequest = oAuth2RequestFactory.createTokenRequest(parameters, authenticatedClient);
            oAuth2RequestValidator.validateScope(tokenRequest, authenticatedClient);
            OAuth2AccessToken token = getTokenGranter().grant(tokenRequest.getGrantType(), tokenRequest);
            if (token == null) {
                throw new UnsupportedGrantTypeException("Unsupported grant type: " + tokenRequest.getGrantType());
            }
        /*如果是移动端登陆则移除之前的token,
        在网关处通过HTTP状态码告知前端是过期(402)还是账号在别处登陆(403),
        实现同一账号只能在一处登陆*/
        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"))) {
                tokenStore.removeAccessToken(token.getValue());
                tokenStore.removeRefreshToken(token.getRefreshToken().getValue());
                token = getTokenGranter().grant(tokenRequest.getGrantType(), tokenRequest);
           /* if("1".equals(kickEachOther)){
                logger.info("");
                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){
                        tokenStore.removeAccessToken(token.getValue());
                        tokenStore.removeRefreshToken(token.getRefreshToken().getValue());
                        token = getTokenGranter().grant(tokenRequest.getGrantType(), tokenRequest);
                    }
                }
                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())) ){//医养平板端登录限制
                throw new InvalidGrantException("不允许登录该平台");
            }
            if (token == null) {
                throw new UnsupportedGrantTypeException("Unsupported grant type: " + tokenRequest.getGrantType());
            logger.info("wlyyUserSimple::"+wlyyUserSimple);
            wlyyUserSimple.setAccessToken(token.getValue());
            wlyyUserSimple.setTokenType(token.getTokenType());
            wlyyUserSimple.setExpiresIn(token.getExpiresIn());
            wlyyUserSimple.setRefreshToken(token.getRefreshToken().getValue());
            wlyyUserSimple.setUser(parameters.get("username"));
            wlyyUserSimple.setState(parameters.get("state"));
            String loginType = parameters.get("login_type");
            String openid = parameters.get("openid");
            String wechatId = parameters.get("wechatId");
            logger.info("login:登录进入7");
            //更新患者openId
            BaseLoginLogDO baseLoginLogDO = new BaseLoginLogDO();
            logger.info("gengxin开始");
            if (!StringUtils.isEmpty(openid) && !"undefined".equalsIgnoreCase(openid) && ("3".equals(loginType)||"4".equalsIgnoreCase(loginType))) {
                baseLoginLogDO.setOpenid(openid);
                logger.info("gengxin进入"+openid);
                userDetailsService.updateOpenId(openid, wlyyUserSimple.getId());
                if (!StringUtils.isEmpty(wechatId)&& !"undefined".equalsIgnoreCase(wechatId)){
                    logger.info("gengxin进入"+wechatId);
                    userDetailsService.updateOpenIdAndWechatId(openid,wlyyUserSimple.getId(),wechatId);
                }
            }
        }
        WlyyUserSimple wlyyUserSimple = userDetailsService.authSuccess(parameters.get("username"));
        if ("pad".equals(parameters.get("clientType"))&&!("1".equals(wlyyUserSimple.getArchiveType())) ){//医养平板端登录限制
            throw new InvalidGrantException("不允许登录该平台");
        }
        wlyyUserSimple.setAccessToken(token.getValue());
        wlyyUserSimple.setTokenType(token.getTokenType());
        wlyyUserSimple.setExpiresIn(token.getExpiresIn());
        wlyyUserSimple.setRefreshToken(token.getRefreshToken().getValue());
        wlyyUserSimple.setUser(parameters.get("username"));
        wlyyUserSimple.setState(parameters.get("state"));
        String loginType = parameters.get("login_type");
        String openid = parameters.get("openid");
        String wechatId = parameters.get("wechatId");
        logger.info("login:登录进入7");
        //更新患者openId
        BaseLoginLogDO baseLoginLogDO = new BaseLoginLogDO();
        logger.info("gengxin开始");
        if (!StringUtils.isEmpty(openid) && !"undefined".equalsIgnoreCase(openid) && ("3".equals(loginType)||"4".equalsIgnoreCase(loginType))) {
            baseLoginLogDO.setOpenid(openid);
            logger.info("gengxin进入"+openid);
            userDetailsService.updateOpenId(openid, wlyyUserSimple.getId());
            if (!StringUtils.isEmpty(wechatId)&& !"undefined".equalsIgnoreCase(wechatId)){
                logger.info("gengxin进入"+wechatId);
                userDetailsService.updateOpenIdAndWechatId(openid,wlyyUserSimple.getId(),wechatId);
            if (parameters.get("password") != null) {
                //使用密码登录成功后, 更新失败次数为 0
                userDetailsService.addFailureCount(username, 0);
            }
        }
        if (parameters.get("password") != null) {
            //使用密码登录成功后, 更新失败次数为 0
            userDetailsService.addFailureCount(username, 0);
        }
        userDetailsService.setRolePhth(loginType, token, wlyyUserSimple.getId(), redisTemplate);
            logger.info("login:登录进入8");
        String clientType = parameters.get("clientType");
        baseLoginLogDO.setUserId(wlyyUserSimple.getId());
        baseLoginLogDO.setCreateTime(new Date());
        String userAgent = JSONObject.toJSONString(wlyyUserSimple);
        baseLoginLogDO.setUserAgent(userAgent);
        baseLoginLogDO.setLoginType(loginType);
        baseLoginLogDO.setName(wlyyUserSimple.getName());
        baseLoginLogDO.setClientType(clientType);
        baseLoginLogService.save(baseLoginLogDO);
            userDetailsService.setRolePhth(loginType, token, wlyyUserSimple.getId(), redisTemplate);
        //个推 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);
            logger.info("login:登录进入9");
            String clientType = parameters.get("clientType");
            baseLoginLogDO.setUserId(wlyyUserSimple.getId());
            baseLoginLogDO.setCreateTime(new Date());
            String userAgent = JSONObject.toJSONString(wlyyUserSimple);
            baseLoginLogDO.setUserAgent(userAgent);
            baseLoginLogDO.setLoginType(loginType);
            baseLoginLogDO.setName(wlyyUserSimple.getName());
            baseLoginLogDO.setClientType(clientType);
            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);
            */
            return getResponse(wlyyUserSimple);
        }catch (Exception e){
            e.printStackTrace();
        }
        return null;
        return getResponse(wlyyUserSimple);
    }
@ -1443,6 +1460,8 @@ public class WlyyLoginEndpoint extends AbstractEndpoint {
            return ObjEnvelop.getSuccess("success", xzzxService.getQRCode());
        }else if (wechatId.equalsIgnoreCase("xm_ykyy_wx")){
            return ObjEnvelop.getSuccess("success", ykyyService.getQRCode());
        }else if (wechatId.equalsIgnoreCase("xm_hcyy_wx")){
            return ObjEnvelop.getSuccess("success", hcyyService.getQRCode());
        }else {
            return ObjEnvelop.getSuccess("success", null);
        }
@ -1500,6 +1519,17 @@ public class WlyyLoginEndpoint extends AbstractEndpoint {
            openId = jsonObject.getString("userJobNum");
            jsonObject.put("qrCodeStatus",jsonObject.getString("qrCodeStatus"));
            rs.put("code",1000);
        }else if (wechatId.equalsIgnoreCase("xm_hcyy_wx")){
            rs = hcyyService.getTokeninfo(qrcode);
            JSONObject jsonObject = rs.getJSONObject("data");
            logger.info("查询登录信息"+rs);
            String qrCodeStatus = rs.getString("code");
            if(!"10000".equalsIgnoreCase(qrCodeStatus)){
                return ObjEnvelop.getSuccess("error",rs);
            }
            username = jsonObject.getString("idcard");
            jsonObject.put("qrCodeStatus","LoginQrCodeBeenScan");
            rs.put("code",1000);
        }
        if (org.apache.commons.lang.StringUtils.isNotBlank(username)){
@ -2379,6 +2409,7 @@ public class WlyyLoginEndpoint extends AbstractEndpoint {
                                                basePatientDO.setSalt(salt);
                                                basePatientDO.setLocked(0);
                                                basePatientDO.setEnabled(1);
                                                basePatientDO.setVerifyCode(jsonObject.getString("TOKEN"));
                                                basePatientDO.setPatientStatus("1");
                                                basePatientDao.save(basePatientDO);
                                            }else {
@ -2449,7 +2480,7 @@ public class WlyyLoginEndpoint extends AbstractEndpoint {
                                        basePatientDO1.setName(tel);
                                    }
                                }
                                basePatientDO1.setVerifyCode(jsonObject.getString("TOKEN"));
                                basePatientDO1.setUserId(userId);
                                basePatientDao.save(basePatientDO1);
                                /*String familyList = ykyyService.getFamilyList(null,userId);

File diff suppressed because it is too large
+ 208 - 0
server/svr-authentication/src/main/java/com/yihu/jw/security/service/HcyyService.java


+ 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();

+ 1 - 1
server/svr-authentication/src/main/java/com/yihu/jw/security/service/YkyyService.java

@ -356,7 +356,7 @@ public class YkyyService {
    public String getRegisterUser(String telephone,String patientPwd,String code,String inviteCode,String equipmentType,String equipmentGuid){
        String response="";
        String url = yktUrl+"user_center/patient_register01?telephone="+telephone+"&patient_pwd="+patientPwd+"&code="+code+"&invite_code="+inviteCode+"&equipment_type="+equipmentType+
                "&equipment_guid="+equipmentGuid;
                "&equipment_guid="+equipmentGuid+"&createsource=hlwyy";
        response = httpClientUtil.get(url,"GBK");
        logger.info("眼科通用户注册:"+response);
        return response;

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

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

+ 72 - 0
server/svr-authentication/src/main/java/com/yihu/jw/security/utils/WebserviceUtil.java

@ -0,0 +1,72 @@
package com.yihu.jw.security.utils;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.xml.namespace.QName;
import java.util.Map;
/**
 * Created by hzp on 2017/7/31.
 * webservice调用服务
 **/
public class WebserviceUtil {
    private static Logger logger = LoggerFactory.getLogger(WebserviceUtil.class);
    /**
     * webservice 调用接口
     */
    public static String post(String urlString,String namespace,String api, Map<String,String> params) throws Exception {
        try {
            logger.info("ca_url:"+urlString);
            logger.info("ca_namespace:"+namespace);
            logger.info("api:"+api);
            Service service = new Service();
            logger.info("=======>通过service创建call对象");
            Call call = (Call) service.createCall();// 通过service创建call对象
            logger.info("=======>设置service所在URL");
            // 设置service所在URL
            call.setTargetEndpointAddress(new java.net.URL(urlString));
            call.setOperationName(new QName(namespace, api));
            call.setUseSOAPAction(true);
            Object[] objs = null;
            logger.info("=======>组装参数:"+params.size());
            if(params!=null && params.size()>0)
            {
                logger.info("=======>遍历参数");
                objs = new Object[params.size()];
                int i=0;
                for(String key : params.keySet())
                {
                    logger.info("=======>参数key:"+key);
                    logger.info("=======>接口参数:"+key);
                    call.addParameter(new QName(key), org.apache.axis.encoding.XMLType.XSD_STRING,javax.xml.rpc.ParameterMode.IN);//接口的参数
                    logger.info("=======>参数值:"+params.get(key));
                    objs[i] = params.get(key);
                    i++;
                }
            }
            logger.info("=======>设置返回类型");
            call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);//设置返回类型
            logger.info("=======>开始请求");
            String  ret = (String)call.invoke(objs);
            logger.info("=======>请求结果:"+ret);
            logger.info("=======>请求结果.toString():"+ret.toString());
            return ret.toString();
        } catch (Exception e) {
            logger.info("=======>CA请求报错:"+e.getMessage());
            e.printStackTrace();
            throw e;
        }
    }
}

+ 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,baseDoctorDO.getLevel()+"",null,null==baseDoctorDO.getSex()?"":baseDoctorDO.getSex()+"",baseDoctorDO.getIdcard());
                      baseDoctorvo.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());
                          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);
}

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

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

+ 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);

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

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

+ 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是开 ")

+ 45 - 9
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,8 @@ public class DoctorBirthdayWishesEndpoint extends BaseController {
    private SystemMessageDao systemMessageDao;
    @Autowired
    private ImUtil imUtil;
    @Autowired
    private PermissionService permissionService;
    @RequestMapping(value = "/createTemplate", method = RequestMethod.POST)
    @ApiOperation(value = "创建模板")
@ -63,7 +69,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 +82,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 +100,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 +118,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 +138,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 +157,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 +168,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);
        }
@ -167,7 +202,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 +235,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);

+ 104 - 3
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);
@ -224,12 +275,17 @@ public class DoctorEndpoint extends EnvelopRestEndpoint {
    }
    @GetMapping(value = "getNotificationCount")
    @ApiOperation(value = "教师首页-上门辅导待完成工单、在线咨询未回复、消息列表未回复")
    @ApiOperation(value = "上门辅导待完成工单、在线咨询未回复、消息列表未回复")
    public ObjEnvelop getNotificationCount(
            @ApiParam(name = "doctor", value = "doctor", defaultValue = "4028030c796376b801796380a2b50003") @RequestParam(value = "doctor",required = true) String doctor
//            ,@ApiParam(name = "type", value = "type", defaultValue = "0") @RequestParam(value = "type",required = false) Integer type
    ){
        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);
@ -266,9 +328,14 @@ public class DoctorEndpoint extends EnvelopRestEndpoint {
    }
    @GetMapping(value = "/baseInfoCount")
    @ApiOperation(value = "医生首页服务数量获取")
    @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);
@ -296,4 +363,38 @@ public class DoctorEndpoint extends EnvelopRestEndpoint {
            return failedException2(e);
        }
    }
    /*******************************助老员部分**********************************************/
    @GetMapping(value = "helper/baseInfoCount")
    @ApiOperation(value = "首页养老服务数量获取")
    public ObjEnvelop baseHelperInfoCount(@ApiParam(name="doctor")@RequestParam(value = "doctor")String doctor){
        try {
            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);
        }
    }
    @GetMapping(value = "helper/patientCount")
    @ApiOperation(value = "获取我的居民统计数量")
    public ObjEnvelop helperPatientCount (
            @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);
        }
    }
}

+ 38 - 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;
@ -15,17 +17,19 @@ import org.springframework.web.bind.annotation.RestController;
/***
 * @ClassName: DoctorToDoWorkEndpoint
 * @Description: 助老员 待办工作
 * @Description: 社工 待办工作
 * @Auther: shi kejing
 * @Date: 2021/5/8 17:42
 */
@RestController
@RequestMapping(value = "doctor/todowork")
@Api(description = "助老员 - 待办工作")
@Api(description = "社工 - 待办工作")
public class DoctorToDoWorkEndpoint extends EnvelopRestEndpoint {
    @Autowired
    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);
@ -67,4 +81,26 @@ public class DoctorToDoWorkEndpoint extends EnvelopRestEndpoint {
            return failedPageEnvelopException2(e);
        }
    }
    /*************************************助老员部分*************************************************/
    @GetMapping(value = "helper/todowork")
    @ApiOperation("待办工作")
    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 {
            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) {

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

@ -0,0 +1,180 @@
package com.yihu.jw.care.service.common;
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.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 = loginLogDO.getUserId();
        //目前只判断医生端
        if("3".equals(loginLogDO.getLoginType())){
            //是否管理员
            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(){
        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();
    }
    //判断社工/助老员是否为患者的服务医生 true是 false否
    public boolean isOlderServerDoctor(String doctor,String patient){
        try {
            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?true:false;
        }catch (Exception e){
            e.printStackTrace();
            return false;
        }
    }
}

+ 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());
        }

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

@ -245,8 +245,10 @@ public class ConsultTeamService {
            }
        }
        //加入团队医生
        //加入签约社工
        List<Map<String,Object>> doctorList = servicePackageService.fingdDoctorByPaitenId(patient,2);
        //加入助老员
        doctorList.addAll(servicePackageService.findHelperByPatientId(patient));
        for(Map<String,Object> map:doctorList){
            participants.put(String.valueOf(map.get("id")), 0);
        }
@ -420,7 +422,7 @@ public class ConsultTeamService {
        //(im创建咨询) 安防警报咨询的sessionid为居民code+咨询类型
        String sessionId = patient + "_" + consultTeam.getType();
        //4、安防警报咨询-参与者  提供服务的助老员 老人本人 家属
        //4、安防警报咨询-参与者  提供服务的社工 老人本人 家属
        JSONObject participants = new JSONObject();
        participants.put(patient, 0);
        //家属
@ -468,8 +470,10 @@ public class ConsultTeamService {
            }
        }
        //加入团队医生
        //加入签约社工
        List<Map<String,Object>> doctorList = servicePackageService.fingdDoctorByPaitenId(patient,2);
        //加入助老员
        doctorList.addAll(servicePackageService.findHelperByPatientId(patient));
        for(Map<String,Object> map:doctorList){
            participants.put(String.valueOf(map.get("id")), 0);
        }
@ -509,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){
@ -520,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;
            }
@ -545,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文字消息
@ -571,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消息结束异常!");

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

@ -413,7 +413,7 @@ public class PatientDeviceService extends BaseJpaService<DevicePatientDevice, Pa
        String sql = "select Distinct p.id,p.`name`,dd.photo,pd.device_id deviceId,pd.category_code categoryCode,pd.device_name deviceName, " +
                " pd.device_sn deviceSn,pd.czrq,pd.doctor,pd.doctor_name doctorName,pd.agent,pd.agent_name agentName " +
                " from wlyy_patient_device pd,wlyy_devices wd,base_patient p,dm_device dd where p.id = pd.`user`  and pd.del = 0 " +
                " and pd.device_sn = wd.device_code and pd.category_code = dd.category_code and dd.model = wd.device_model";
                " and pd.device_sn = wd.device_code and pd.category_code = dd.category_code and dd.model = wd.device_model and p.del=1 ";
        if (StringUtils.isNotBlank(patientName)){
            sql += " AND (p.`name` LIKE '%" + patientName +"%' or  p.idcard LIKE '%" + patientName + "%') ";
        }
@ -1916,7 +1916,7 @@ public class PatientDeviceService extends BaseJpaService<DevicePatientDevice, Pa
    /**
     * 助老员新增电子围栏记录
     * 社工新增电子围栏记录
     */
    public com.alibaba.fastjson.JSONObject doctorNewSafeArea(String doctor,String patient,String safe_area) throws Exception{

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

+ 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 {

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

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

+ 3 - 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){

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

@ -339,7 +339,7 @@ public class DoctorMessageService {
                        " m.team_code = r.team_code  and m.doctor_code = '"+doctor+"'  and a.status = 1 ";
                total += jdbcTemplate.queryForObject(sql,Integer.class);
            }
            if (2==doctorDO.getLevel()){//助老员
            if (2==doctorDO.getLevel()){//社工
                //紧急救助、安防、生活
                if(doctorServicePermissionsService.isPermission(doctor,8)==1){
                    sql = " select count(ord.id) from base_emergency_assistance_order ord where 1=1  AND EXISTS (SELECT sr.patient from " +
@ -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);
                    }
                }
@ -382,8 +382,82 @@ public class DoctorMessageService {
                        " and h.del=1 where 1=1  and o.status in (3,4,5)and o.doctor= '"+doctor+"' ";
                total += jdbcTemplate.queryForObject(sql,Integer.class);
            }
            if (4==doctorDO.getLevel()){//助老员
                if(doctorServicePermissionsService.isPermission(doctor,8)==1){
                    sql = " select count(ord.id) from base_emergency_assistance_order ord where 1=1  AND EXISTS ( " +
                            " SELECT 1 from base_patient_helper ph inner join base_patient p on ph.patient = p.id and p.del=1  where ord.patient = ph.patient and ph.doctor='"+doctor+"' and ph.del=1 ) " +
                            " and ord.status in ('1') ";
                    total += jdbcTemplate.queryForObject(sql,Integer.class);
                }
                if(doctorServicePermissionsService.isPermission(doctor,10)==1){
                    sql = " select count(ord.id) from base_security_monitoring_order ord INNER JOIN base_patient p on p.id = ord.patient " +
                            " where 1=1    and  EXISTS ( SELECT 1 from base_patient_helper ph inner join base_patient p on ph.patient = p.id and p.del=1 where ord.patient = ph.patient and ph.doctor='"+doctor+"' and ph.del=1  ) " +
                            "  and ord.status='1'  ";
                    total += jdbcTemplate.queryForObject(sql,Integer.class);
                }
                if(doctorServicePermissionsService.isPermission(doctor,7)==1){
                    List<BaseDoctorHospitalDO> doctorHospitalDOs = doctorHospitalDao.findByDoctorCode(doctor);
                    if (doctorHospitalDOs.size()>0){
                        String hospital = doctorHospitalDOs.get(0).getOrgCode();
                        sql =" SELECT count(o.id)   FROM  base_life_care_order o LEFT JOIN base_patient p ON o.patient = p.id and p.del=1  " +
                                "WHERE  o.hospital = '"+hospital+"'  AND o.`status` = 1 ";
                        total += jdbcTemplate.queryForObject(sql,Integer.class);
                    }
                }
            }
        }
        return total;
    }
    //助老员
    public JSONObject helperTodoWork(String doctor,String id,String type){
        JSONObject result = new JSONObject();
        boolean typeNull = StringUtils.isBlank(type);
        if (typeNull||type.equals("preventLost")){//安全监护
            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);
            }
            result.put("preventLost",sqlResult);
        }
        if (typeNull||type.equals("emergencyAssistance")){//紧急救助
            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);
            }
            result.put("emergencyAssistance",sqlResult);
        }
        if (typeNull||type.equals("fifeCare")){//生活照料
            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);
                }
            }
            result.put("fifeCare",sqlResult);
        }
        return result;
    }
}

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

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

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

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

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

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


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