浏览代码

康复计划提价

wangjun 3 年之前
父节点
当前提交
c32c570d46
共有 100 个文件被更改,包括 7820 次插入648 次删除
  1. 5 0
      business/base-service/pom.xml
  2. 21 0
      business/base-service/src/main/java/com/yihu/jw/complaint/BaseComplaintDao.java
  3. 18 0
      business/base-service/src/main/java/com/yihu/jw/complaint/BaseComplaintDictDao.java
  4. 23 0
      business/base-service/src/main/java/com/yihu/jw/complaint/BaseComplaintDoctorDao.java
  5. 14 0
      business/base-service/src/main/java/com/yihu/jw/complaint/BaseComplaintOperateDao.java
  6. 720 0
      business/base-service/src/main/java/com/yihu/jw/complaint/BaseComplaintService.java
  7. 1 1
      business/base-service/src/main/java/com/yihu/jw/dict/dao/PrivateDictDao.java
  8. 3 2
      business/base-service/src/main/java/com/yihu/jw/dict/service/PrivateDictService.java
  9. 6 0
      business/base-service/src/main/java/com/yihu/jw/doctor/dao/BaseDoctorHospitalDao.java
  10. 9 0
      business/base-service/src/main/java/com/yihu/jw/doctor/dao/BaseDoctorSuggestDao.java
  11. 23 15
      business/base-service/src/main/java/com/yihu/jw/doctor/service/BaseDoctorInfoService.java
  12. 156 0
      business/base-service/src/main/java/com/yihu/jw/doctor/service/BaseDoctorSuggestService.java
  13. 36 0
      business/base-service/src/main/java/com/yihu/jw/file_upload/FileUploadService.java
  14. 22 0
      business/base-service/src/main/java/com/yihu/jw/hospital/HospitalDao.java
  15. 14 0
      business/base-service/src/main/java/com/yihu/jw/hospital/consult/dao/BaseAdviceTreatmentDao.java
  16. 5 4
      business/base-service/src/main/java/com/yihu/jw/hospital/dict/WlyyChargeDictDao.java
  17. 6 0
      business/base-service/src/main/java/com/yihu/jw/hospital/dict/WlyyHospitalSysDictDao.java
  18. 1 1
      business/base-service/src/main/java/com/yihu/jw/hospital/dict/service/WlyyHospitalSysDictService.java
  19. 9 0
      business/base-service/src/main/java/com/yihu/jw/hospital/httplog/dao/BaseOperateLogDao.java
  20. 152 0
      business/base-service/src/main/java/com/yihu/jw/hospital/httplog/service/BaseOperateLogService.java
  21. 3 1
      business/base-service/src/main/java/com/yihu/jw/hospital/httplog/service/WlyyHttpLogService.java
  22. 7 1
      business/base-service/src/main/java/com/yihu/jw/hospital/message/dao/SystemMessageDao.java
  23. 37 0
      business/base-service/src/main/java/com/yihu/jw/hospital/message/service/SystemMessageService.java
  24. 6 0
      business/base-service/src/main/java/com/yihu/jw/hospital/prescription/dao/OutpatientDao.java
  25. 82 7
      business/base-service/src/main/java/com/yihu/jw/hospital/prescription/service/InspectionService.java
  26. 1 1
      business/base-service/src/main/java/com/yihu/jw/hospital/prescription/service/PrescriptionExpressageService.java
  27. 766 222
      business/base-service/src/main/java/com/yihu/jw/hospital/prescription/service/PrescriptionService.java
  28. 157 1
      business/base-service/src/main/java/com/yihu/jw/hospital/prescription/service/XzyyPrescriptionService.java
  29. 55 27
      business/base-service/src/main/java/com/yihu/jw/hospital/prescription/service/entrance/EntranceService.java
  30. 39 11
      business/base-service/src/main/java/com/yihu/jw/hospital/prescription/service/entrance/XzzxEntranceService.java
  31. 19 0
      business/base-service/src/main/java/com/yihu/jw/hospital/team/dao/WlyyAdminTeamDao.java
  32. 16 0
      business/base-service/src/main/java/com/yihu/jw/hospital/team/dao/WlyyAdminTeamMemberDao.java
  33. 12 0
      business/base-service/src/main/java/com/yihu/jw/hospital/team/dao/WlyySignFamilyDao.java
  34. 129 0
      business/base-service/src/main/java/com/yihu/jw/hospital/team/service/WlyyAdminTeamService.java
  35. 4 2
      business/base-service/src/main/java/com/yihu/jw/internet/service/InternetCommonService.java
  36. 13 0
      business/base-service/src/main/java/com/yihu/jw/monitor/dao/BaseInterfaceDictDao.java
  37. 9 0
      business/base-service/src/main/java/com/yihu/jw/monitor/dao/BaseInterfaceMonitorDao.java
  38. 12 0
      business/base-service/src/main/java/com/yihu/jw/monitor/dao/BaseSourceDictDao.java
  39. 49 0
      business/base-service/src/main/java/com/yihu/jw/monitor/service/BaseInterfaceMonitorService.java
  40. 5 4
      business/base-service/src/main/java/com/yihu/jw/oauth/OauthSsoService.java
  41. 64 42
      business/base-service/src/main/java/com/yihu/jw/order/BusinessOrderService.java
  42. 5 0
      business/base-service/src/main/java/com/yihu/jw/order/dao/BusinessOrderDao.java
  43. 6 0
      business/base-service/src/main/java/com/yihu/jw/org/dao/BaseOrgDao.java
  44. 14 0
      business/base-service/src/main/java/com/yihu/jw/patient/dao/BasePatientGroupDao.java
  45. 18 0
      business/base-service/src/main/java/com/yihu/jw/patient/dao/BasePatientGroupDictDao.java
  46. 183 0
      business/base-service/src/main/java/com/yihu/jw/patient/service/BasePatientGroupDictService.java
  47. 406 33
      business/base-service/src/main/java/com/yihu/jw/patient/service/BasePatientService.java
  48. 17 0
      business/base-service/src/main/java/com/yihu/jw/pay/dao/WxPayHttpLogDao.java
  49. 105 0
      business/base-service/src/main/java/com/yihu/jw/pay/service/CloudCarePayService.java
  50. 97 0
      business/base-service/src/main/java/com/yihu/jw/utils/JDBCSqlServer.java
  51. 13 0
      business/base-service/src/main/java/com/yihu/jw/utils/StringUtil.java
  52. 52 6
      business/base-service/src/main/java/com/yihu/jw/wechat/enterprise/EnterpriseService.java
  53. 2 5
      business/base-service/src/main/java/com/yihu/jw/wechat/service/BaseSensitiveFilterWordsService.java
  54. 7 7
      business/base-service/src/main/java/com/yihu/jw/wechat/service/WxTemplateService.java
  55. 10 1
      business/base-service/src/main/java/com/yihu/jw/wlyy/service/WlyyBusinessService.java
  56. 93 1
      business/base-service/src/main/java/com/yihu/jw/wlyy/wlyyhttp/WlyyHttpService.java
  57. 4 2
      business/base-service/src/mqConfig/mqdata/BS15018.json
  58. 8 6
      business/es-service/src/main/java/com/yihu/jw/es/service/StatisticsEsService.java
  59. 159 1
      business/es-service/src/main/java/com/yihu/jw/es/util/ElasticsearchUtil.java
  60. 3 0
      business/im-service/src/main/java/com/yihu/jw/im/dao/ConsultTeamDao.java
  61. 145 162
      business/im-service/src/main/java/com/yihu/jw/im/service/ImService.java
  62. 85 35
      business/im-service/src/main/java/com/yihu/jw/im/util/ImUtil.java
  63. 22 1
      business/sms-service/pom.xml
  64. 170 0
      business/sms-service/src/main/java/com/yihu/jw/sms/service/TXYSmsService.java
  65. 898 4
      common/common-entity/sql记录
  66. 38 0
      common/common-entity/src/main/java/com/yihu/jw/entity/IdEntity.java
  67. 289 0
      common/common-entity/src/main/java/com/yihu/jw/entity/base/complaint/BaseComplaintDO.java
  68. 33 0
      common/common-entity/src/main/java/com/yihu/jw/entity/base/complaint/BaseComplaintDictDO.java
  69. 69 0
      common/common-entity/src/main/java/com/yihu/jw/entity/base/complaint/BaseComplaintDoctorDO.java
  70. 96 0
      common/common-entity/src/main/java/com/yihu/jw/entity/base/complaint/BaseComplaintOperateLogDO.java
  71. 105 0
      common/common-entity/src/main/java/com/yihu/jw/entity/base/dict/BaseExceptionDictDO.java
  72. 76 0
      common/common-entity/src/main/java/com/yihu/jw/entity/base/dict/BaseExceptionLogDO.java
  73. 60 0
      common/common-entity/src/main/java/com/yihu/jw/entity/base/dict/BaseExceptionServerDictDO.java
  74. 124 0
      common/common-entity/src/main/java/com/yihu/jw/entity/base/doctor/BaseDoctorSuggestDO.java
  75. 3 1
      common/common-entity/src/main/java/com/yihu/jw/entity/base/im/ConsultTeamDo.java
  76. 87 0
      common/common-entity/src/main/java/com/yihu/jw/entity/base/menu/BaseLinkDictDO.java
  77. 210 0
      common/common-entity/src/main/java/com/yihu/jw/entity/base/menu/BaseMenuDictDO.java
  78. 77 0
      common/common-entity/src/main/java/com/yihu/jw/entity/base/menu/BaseMenuShowDO.java
  79. 1 1
      common/common-entity/src/main/java/com/yihu/jw/entity/base/module/SaasTypeModuleDO.java
  80. 22 1
      common/common-entity/src/main/java/com/yihu/jw/entity/base/org/BaseOrgDO.java
  81. 84 1
      common/common-entity/src/main/java/com/yihu/jw/entity/base/patient/BasePatientDO.java
  82. 10 0
      common/common-entity/src/main/java/com/yihu/jw/entity/base/patient/BasePatientFamilyMemberDO.java
  83. 9 2
      common/common-entity/src/main/java/com/yihu/jw/entity/base/patient/PatientMedicareCardDO.java
  84. 18 1
      common/common-entity/src/main/java/com/yihu/jw/entity/base/servicePackage/ServicePackageDO.java
  85. 29 0
      common/common-entity/src/main/java/com/yihu/jw/entity/base/servicePackage/ServicePackageItemDO.java
  86. 16 15
      common/common-entity/src/main/java/com/yihu/jw/entity/base/servicePackage/ServicePackageSignRecordDO.java
  87. 49 0
      common/common-entity/src/main/java/com/yihu/jw/entity/base/system/BaseInterfaceDictDO.java
  88. 77 0
      common/common-entity/src/main/java/com/yihu/jw/entity/base/system/BaseInterfaceMonitorDO.java
  89. 40 0
      common/common-entity/src/main/java/com/yihu/jw/entity/base/system/BaseSourceDictDO.java
  90. 1 1
      common/common-entity/src/main/java/com/yihu/jw/entity/base/system/SystemDictEntryDO.java
  91. 69 0
      common/common-entity/src/main/java/com/yihu/jw/entity/care/apply/PatientBedApplyDo.java
  92. 11 19
      common/common-entity/src/main/java/com/yihu/jw/entity/care/archive/ArchiveDO.java
  93. 355 0
      common/common-entity/src/main/java/com/yihu/jw/entity/care/assistance/EmergencyAssistanceDO.java
  94. 155 0
      common/common-entity/src/main/java/com/yihu/jw/entity/care/common/BusinessSysDictDO.java
  95. 83 0
      common/common-entity/src/main/java/com/yihu/jw/entity/care/common/DictDietDO.java
  96. 66 0
      common/common-entity/src/main/java/com/yihu/jw/entity/care/common/WxPayHttpLogDO.java
  97. 40 0
      common/common-entity/src/main/java/com/yihu/jw/entity/care/contacts/BasePatientContactsOrgDO.java
  98. 104 0
      common/common-entity/src/main/java/com/yihu/jw/entity/care/course/CourseCatalogueDO.java
  99. 63 0
      common/common-entity/src/main/java/com/yihu/jw/entity/care/course/CourseCatalogueReadTimeDO.java
  100. 0 0
      common/common-entity/src/main/java/com/yihu/jw/entity/care/course/CourseDO.java

+ 5 - 0
business/base-service/pom.xml

@ -202,6 +202,11 @@
            <artifactId>jiguang-common</artifactId>
            <version>1.1.9</version>
        </dependency>
        <dependency>
            <groupId>com.zaxxer</groupId>
            <artifactId>HikariCP</artifactId>
            <!-- <scope>runtime</scope> -->
        </dependency>
        <dependency>
            <groupId>cn.jpush.api</groupId>
            <artifactId>jpush-client</artifactId>

+ 21 - 0
business/base-service/src/main/java/com/yihu/jw/complaint/BaseComplaintDao.java

@ -0,0 +1,21 @@
package com.yihu.jw.complaint;
import com.yihu.jw.entity.base.complaint.BaseComplaintDO;
import com.yihu.jw.entity.base.complaint.BaseComplaintDictDO;
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 BaseComplaintDao extends PagingAndSortingRepository<BaseComplaintDO, String>, JpaSpecificationExecutor<BaseComplaintDO> {
    @Query("select count(1) from BaseComplaintDO t where t.isDel='1' and t.status=?1 and t.complaintId=?2")
    Integer getCountByStatusAndComplaintId(String status,String complatientId);
    @Query("select count(1) from BaseComplaintDO t where t.isDel='1' and t.status=?1 ")
    Integer getCountByStatus(String status);
    @Query("select count(1) from BaseComplaintDO t where t.isDel='1' and t.status=?1  and t.patient=?2")
    Integer getCountByStatusByPatient(String status,String patient);
}

+ 18 - 0
business/base-service/src/main/java/com/yihu/jw/complaint/BaseComplaintDictDao.java

@ -0,0 +1,18 @@
package com.yihu.jw.complaint;
import com.yihu.jw.entity.base.complaint.BaseComplaintDictDO;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
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 BaseComplaintDictDao extends PagingAndSortingRepository<BaseComplaintDictDO, String>, JpaSpecificationExecutor<BaseComplaintDictDO> {
    @Query("from BaseComplaintDictDO t where t.isDel='1' and t.id=?1")
    BaseComplaintDictDO findById(String id);
    @Query("from BaseComplaintDictDO t where t.isDel='1' and t.name like %?1% order by t.createTime desc")
    List<BaseComplaintDictDO> findByName(String name);
    @Query("from BaseComplaintDictDO t where t.isDel='1' order by t.createTime desc")
    List<BaseComplaintDictDO> findByAll();
}

+ 23 - 0
business/base-service/src/main/java/com/yihu/jw/complaint/BaseComplaintDoctorDao.java

@ -0,0 +1,23 @@
package com.yihu.jw.complaint;
import com.yihu.jw.entity.base.complaint.BaseComplaintDictDO;
import com.yihu.jw.entity.base.complaint.BaseComplaintDoctorDO;
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 BaseComplaintDoctorDao extends PagingAndSortingRepository<BaseComplaintDoctorDO, String>, JpaSpecificationExecutor<BaseComplaintDoctorDO> {
    @Query("from BaseComplaintDoctorDO t where t.isDel='1' and t.id=?1")
    BaseComplaintDoctorDO findByDelAndId(String id);
    @Query("from BaseComplaintDoctorDO t where t.isDel='1' and t.doctor=?1")
    BaseComplaintDoctorDO findbyDoctorAndDel(String doctor);
    @Query("from BaseComplaintDoctorDO t where t.isDel='1' and t.doctor=?1 and t.complaintId=?2")
    BaseComplaintDoctorDO findbyDoctorAndDelAndType(String doctor,String complaintType);
    @Query("from BaseComplaintDoctorDO t where t.isDel='1' and t.complaintId=?1")
    List<BaseComplaintDoctorDO> findbyComplaintId(String complaintId);
}

+ 14 - 0
business/base-service/src/main/java/com/yihu/jw/complaint/BaseComplaintOperateDao.java

@ -0,0 +1,14 @@
package com.yihu.jw.complaint;
import com.yihu.jw.entity.base.complaint.BaseComplaintDoctorDO;
import com.yihu.jw.entity.base.complaint.BaseComplaintOperateLogDO;
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 BaseComplaintOperateDao  extends PagingAndSortingRepository<BaseComplaintOperateLogDO, String>, JpaSpecificationExecutor<BaseComplaintOperateLogDO> {
    @Query("from BaseComplaintOperateLogDO t where t.operateFrom=?1 and t.status='3'")
    List<BaseComplaintOperateLogDO> findbyOperateFrom(String doctor);
}

+ 720 - 0
business/base-service/src/main/java/com/yihu/jw/complaint/BaseComplaintService.java

@ -0,0 +1,720 @@
package com.yihu.jw.complaint;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.jw.dict.dao.DictHospitalDeptDao;
import com.yihu.jw.doctor.dao.BaseDoctorDao;
import com.yihu.jw.doctor.dao.BaseDoctorHospitalDao;
import com.yihu.jw.doctor.dao.BaseDoctorRoleDao;
import com.yihu.jw.entity.base.complaint.BaseComplaintDO;
import com.yihu.jw.entity.base.complaint.BaseComplaintDictDO;
import com.yihu.jw.entity.base.complaint.BaseComplaintDoctorDO;
import com.yihu.jw.entity.base.complaint.BaseComplaintOperateLogDO;
import com.yihu.jw.entity.base.dict.DictHospitalDeptDO;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
import com.yihu.jw.entity.base.doctor.BaseDoctorHospitalDO;
import com.yihu.jw.entity.base.doctor.BaseDoctorRoleDO;
import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.entity.hospital.consult.WlyyHospitalSysDictDO;
import com.yihu.jw.hospital.dict.WlyyHospitalSysDictDao;
import com.yihu.jw.hospital.prescription.service.entrance.EntranceService;
import com.yihu.jw.patient.dao.BasePatientDao;
import com.yihu.jw.restmodel.web.MixEnvelop;
import com.yihu.jw.utils.StringUtil;
import com.yihu.jw.utils.hibernate.HibenateUtils;
import com.yihu.jw.wechat.enterprise.EnterpriseService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
@Service
public class BaseComplaintService {
    @Autowired
    private BaseComplaintDictDao baseComplaintDictDao;
    @Autowired
    private BaseComplaintDoctorDao baseComplaintDoctorDao;
    @Autowired
    private BaseDoctorDao baseDoctorDao;
    @Autowired
    private BaseDoctorHospitalDao baseDoctorHospitalDao;
    @Autowired
    private HibenateUtils hibenateUtils;
    @Autowired
    private BaseComplaintDao baseComplaintDao;
    @Autowired
    private ObjectMapper objectMapper;
    @Autowired
    private DictHospitalDeptDao dictHospitalDeptDao;
    @Autowired
    private BaseComplaintOperateDao baseComplaintOperateDao;
    @Autowired
    private BaseDoctorRoleDao baseDoctorRoleDao;
    @Autowired
    private BasePatientDao basePatientDao;
    @Autowired
    private EnterpriseService enterpriseService;
    @Autowired
    private WlyyHospitalSysDictDao wlyyHospitalSysDictDao;
    @Value("${wechat.id}")
    private String wxId;
    @Value("${wechat.flag}")
    private boolean flag;
    //修改新增
    public BaseComplaintDictDO createOrUpdateDict(String id, String name) {
        BaseComplaintDictDO baseComplaintDictDO = new BaseComplaintDictDO();
        if (StringUtils.isNoneBlank(id)) {
            baseComplaintDictDO = baseComplaintDictDao.findById(id);
            baseComplaintDictDO.setName(name);
            baseComplaintDictDO.setUpdateTime(new Date());
        } else {
            baseComplaintDictDO.setIsDel("1");
            baseComplaintDictDO.setName(name);
            baseComplaintDictDO.setCreateTime(new Date());
        }
        return baseComplaintDictDao.save(baseComplaintDictDO);
    }
    //删除
    public BaseComplaintDictDO deleteDict(String id) {
        BaseComplaintDictDO baseComplaintDictDO = baseComplaintDictDao.findById(id);
        if (null != baseComplaintDictDO) {
            baseComplaintDictDO.setIsDel("0");
            baseComplaintDictDO.setUpdateTime(new Date());
            baseComplaintDictDao.save(baseComplaintDictDO);
        }
        return baseComplaintDictDO;
    }
    public BaseComplaintDictDO findOneDict(String id) {
        BaseComplaintDictDO baseComplaintDictDO = baseComplaintDictDao.findById(id);
        return baseComplaintDictDO;
    }
    //查询
    public List<BaseComplaintDictDO> findAll(String name) {
        List<BaseComplaintDictDO> list = new ArrayList<>();
        if (StringUtils.isNoneBlank(name)) {
            list = baseComplaintDictDao.findByName(name);
        } else {
            list = baseComplaintDictDao.findByAll();
        }
        return list;
    }
    //新增投诉管理医生
    @Transactional
    public void createOrUpdateComplainDoctor(String id, String complaintId, String doctorList) throws Exception {
        JSONArray jsonArray = JSON.parseArray(doctorList);
        for (int i=0;i<jsonArray.size();i++){
            JSONObject jsonObject = jsonArray.getJSONObject(i);
            String doctor = jsonObject.getString("doctor");
            String deptCode = jsonObject.getString("deptCode");
            String deptName = "";
            String doctorName = "";
            BaseComplaintDoctorDO preDoctor= baseComplaintDoctorDao.findbyDoctorAndDel(doctor);
            BaseDoctorDO baseDoctorDO = baseDoctorDao.findById(doctor);
            if (null != baseDoctorDO) {
                doctorName = baseDoctorDO.getName();
            }
            if (preDoctor!=null){
                throw new Exception("医生"+doctorName+"已有负责的投诉类型");
            }
            List<BaseDoctorHospitalDO> baseDoctorHospitalDO = baseDoctorHospitalDao.findByDeptCodeDoctorCode(deptCode, doctor);
            if (baseDoctorHospitalDO != null && baseDoctorHospitalDO.size() > 0) {
                deptName = baseDoctorHospitalDO.get(0).getDeptName();
            }
            if (StringUtils.isNoneBlank(id)) {
                BaseComplaintDoctorDO baseComplaintDoctorDO = new BaseComplaintDoctorDO();
                baseComplaintDoctorDO.setDept(deptCode);
                baseComplaintDoctorDO.setDeptName(deptName);
                baseComplaintDoctorDO.setComplaintId(id);
                baseComplaintDoctorDO.setDoctor(doctor);
                baseComplaintDoctorDO.setDoctorName(doctorName);
                baseComplaintDoctorDO.setIsDel("1");
                baseComplaintDoctorDO.setCreateTime(new Date());
                baseComplaintDoctorDao.save(baseComplaintDoctorDO);
            }
        }
    }
    //删除管理医生
    public BaseComplaintDoctorDO deleteDoctorComplain(String id) {
        BaseComplaintDoctorDO baseComplaintDoctorDO = baseComplaintDoctorDao.findByDelAndId(id);
        if (null != baseComplaintDoctorDO) {
            baseComplaintDoctorDO.setIsDel("0");
            baseComplaintDoctorDO.setUpdateTime(new Date());
            baseComplaintDoctorDao.save(baseComplaintDoctorDO);
        }
        return baseComplaintDoctorDO;
    }
    public MixEnvelop findComplaintDoctor(String doctor,String doctorName, String deptName, String complaintType, Integer page, Integer pageSize) {
        String sql = "select t.id as \"id\"," +
                " t.complaint_id as \"complaintId\"," +
                " t.doctor as \"doctor\"," +
                " t.doctor_name as \"doctorName\"," +
                " t.dept as \"dept\"," +
                " t.dept_name as \"deptName\"," +
                " t.is_del as \"isDel\"," +
                " t.create_time as \"createTime\"," +
                " t.update_time as \"updateTime\"," +
                " d.photo as \"photo\"," +
                " b.name as \"name\" " +
                " from base_complaint_doctor t left join base_complaint_dict b" +
                " on t.complaint_id=b.id " +
                " left join base_doctor d on t.doctor=d.id where t.is_del='1'";
        if (StringUtils.isNoneBlank(doctorName)) {
            sql += " and t.doctor_name like '%" + doctorName + "%'";
        }
        if (StringUtils.isNoneBlank(deptName)) {
            sql += " and t.dept_name like '%" + deptName + "%'";
        }
        if (StringUtils.isNoneBlank(complaintType)) {
            sql += " and t.complaint_id = '" + complaintType + "'";
        }
        if (StringUtils.isNoneBlank(doctor)) {
            sql += " and t.doctor = '" + doctor + "'";
        }
        sql += "order by t.create_time desc";
        List<Map<String, Object>> list = hibenateUtils.createSQLQuery(sql, page, pageSize);
        List<Map<String, Object>> listCount = hibenateUtils.createSQLQuery(sql);
        MixEnvelop mixEnvelop = new MixEnvelop();
        mixEnvelop.setTotalCount(listCount == null ? 0 : listCount.size());
        mixEnvelop.setPageSize(pageSize);
        mixEnvelop.setCurrPage(page);
        mixEnvelop.setDetailModelList(list);
        return mixEnvelop;
    }
    public BaseComplaintDoctorDO findOneDoctorComplain(String id) {
        BaseComplaintDoctorDO baseComplaintDoctorDO = baseComplaintDoctorDao.findByDelAndId(id);
        return baseComplaintDoctorDO;
    }
    /*
     * 患者举报接口
     * */
    public BaseComplaintDO patiemtComplaint(String json) throws Exception{
        WlyyHospitalSysDictDO wlyyHospitalSysDictDO= wlyyHospitalSysDictDao.findById("complaintOpenControl");
        if (wlyyHospitalSysDictDO!=null){
            if (!"1".equalsIgnoreCase(wlyyHospitalSysDictDO.getDictCode())){
                throw new Exception("投诉通道已关闭");
            }
        }else {
            throw new Exception("投诉通道已关闭");
        }
        BaseComplaintDO baseComplaintDO =objectMapper.readValue(json,BaseComplaintDO.class);
        BaseComplaintDictDO baseComplaintDictDO = baseComplaintDictDao.findById(baseComplaintDO.getComplaintId());
        if (baseComplaintDictDO!=null){
            baseComplaintDO.setComplaintName(baseComplaintDictDO.getName());
        }
        if (StringUtils.isNoneBlank(baseComplaintDO.getVisitDept())){
            DictHospitalDeptDO dictHospitalDeptDO=dictHospitalDeptDao.findByCode(baseComplaintDO.getVisitDept());
            if (dictHospitalDeptDO!=null){
                baseComplaintDO.setVisitDeptName(dictHospitalDeptDO.getName());
            }
        }
        /*if(StringUtils.isNoneBlank(baseComplaintDO.getPatient())){
            BasePatientDO basePatientDO= basePatientDao.findById(baseComplaintDO.getPatient());
            if (basePatientDO!=null){
                basePatientDO.setIdcardFront(baseComplaintDO.getIdcardFront());
                basePatientDO.setIdcardBack(baseComplaintDO.getIdcardBack());
                basePatientDao.save(basePatientDO);
            }
        }*/
        baseComplaintDO.setIsDel("1");
        baseComplaintDO.setStatus("0");
        baseComplaintDO.setCreateTime(new Date());
        baseComplaintDO=  baseComplaintDao.save(baseComplaintDO);
        BaseComplaintOperateLogDO baseComplaintOperateLogDO = new BaseComplaintOperateLogDO();
        baseComplaintOperateLogDO.setOperateFrom(baseComplaintDO.getPatient());
        baseComplaintOperateLogDO.setStatus("0");
        baseComplaintOperateLogDO.setOperateType("投诉提交");
        baseComplaintOperateLogDO.setRelationCode(baseComplaintDO.getId());
        baseComplaintOperateLogDO.setCreateTime(new Date());
        baseComplaintOperateDao.save(baseComplaintOperateLogDO);
        try {
            List<BaseComplaintDoctorDO> doctorList=baseComplaintDoctorDao.findbyComplaintId(baseComplaintDO.getComplaintId());
            for (BaseComplaintDoctorDO baseComplaintDoctorDO:doctorList){
                String url="https://hlwyy.xmzsh.com/hlwyy/ims-app-web/#/complaint/detail?id="+baseComplaintDO.getId();
                enterpriseService.sendTWMesByDoctor("zsyy",baseComplaintDoctorDO.getDoctor(),"投诉反馈","您收到一条投诉反馈,点击查看。",url);
            }
        }catch (Exception e){
        }
       return baseComplaintDao.save(baseComplaintDO);
    }
    /*
     * 医生转交
     * */
    public BaseComplaintDO passTo(String id,String complaintId,String doctor,String operator){
        BaseComplaintDO baseComplaintDO = baseComplaintDao.findOne(id);
        BaseComplaintOperateLogDO baseComplaintOperateLogDO = new BaseComplaintOperateLogDO();
        String doctorName="";
        String complaitTypeName="";
        if (null!=baseComplaintDO){
            baseComplaintOperateLogDO.setOperateFrom(operator);
            baseComplaintOperateLogDO.setOperateTo(doctor);
            baseComplaintOperateLogDO.setComplaintTo(complaintId);
            baseComplaintOperateLogDO.setComplaintFrom(baseComplaintDO.getComplaintId());
            baseComplaintOperateLogDO.setStatus("3");
            baseComplaintOperateLogDO.setOperateType("转交");
            baseComplaintOperateLogDO.setRelationCode(id);
            baseComplaintOperateLogDO.setCreateTime(new Date());
            baseComplaintOperateDao.save(baseComplaintOperateLogDO);
            /*BaseDoctorDO baseDoctorDO = baseDoctorDao.findById(doctor);
            if (null != baseDoctorDO) {
                doctorName=baseDoctorDO.getName();
                baseComplaintDO.setAcceptorName(doctorName);
            }
            baseComplaintDO.setAcceptor(doctor);*/
            baseComplaintDO.setComplaintId(complaintId);
            BaseComplaintDictDO baseComplaintDictDO = baseComplaintDictDao.findById(complaintId);
            if (baseComplaintDictDO!=null){
                complaitTypeName=baseComplaintDictDO.getName();
                baseComplaintDO.setComplaintName(complaitTypeName);
            }
            baseComplaintDO= baseComplaintDao.save(baseComplaintDO);
            try {
                List<BaseComplaintDoctorDO> doctorList=baseComplaintDoctorDao.findbyComplaintId(baseComplaintDO.getComplaintId());
                for (BaseComplaintDoctorDO baseComplaintDoctorDO:doctorList){
                    String url="https://hlwyy.xmzsh.com/hlwyy/ims-app-web/#/complaint/detail?id="+baseComplaintDO.getId();
                    enterpriseService.sendTWMesByDoctor("zsyy",baseComplaintDoctorDO.getDoctor(),"投诉反馈","您收到一条投诉反馈,点击查看。",url);
                }
            }catch (Exception e){
            }
            return baseComplaintDO;
        }
        return null;
    }
    //接受投诉
    public BaseComplaintDO doctorAccept(String id,String doctor) throws Exception{
        BaseComplaintDO baseComplaintDO = baseComplaintDao.findOne(id);
        if (baseComplaintDO!=null&&"0".equalsIgnoreCase(baseComplaintDO.getStatus())){
            baseComplaintDO.setStatus("1");
            BaseDoctorDO baseDoctorDO = baseDoctorDao.findById(doctor);
            if (null != baseDoctorDO) {
                baseComplaintDO.setAcceptorName(baseDoctorDO.getName());
            }
            baseComplaintDO.setAcceptor(doctor);
            baseComplaintDO.setAcceptTime(new Date());
            baseComplaintDao.save(baseComplaintDO);
            BaseComplaintOperateLogDO baseComplaintOperateLogDO = new BaseComplaintOperateLogDO();
            baseComplaintOperateLogDO.setOperateFrom(doctor);
            baseComplaintOperateLogDO.setStatus("1");
            baseComplaintOperateLogDO.setOperateType("接受");
            baseComplaintOperateLogDO.setRelationCode(id);
            baseComplaintOperateLogDO.setCreateTime(new Date());
            baseComplaintOperateDao.save(baseComplaintOperateLogDO);
        }else if ("1".equalsIgnoreCase(baseComplaintDO.getStatus())){
            throw new Exception("该工单已被接受");
        }else {
            throw new Exception("该工单已被处理完成");
        }
        return baseComplaintDO;
    }
    //反馈投诉
    public BaseComplaintDO dealComplaint(String id,String operator,String content,String imgUrl ,String deptCode) throws  Exception{
        BaseComplaintDO baseComplaintDO = baseComplaintDao.findOne(id);
        if (baseComplaintDO!=null&&"1".equalsIgnoreCase(baseComplaintDO.getStatus())){
            baseComplaintDO.setDealTime(new Date());
            baseComplaintDO.setFeedBack(content);
            baseComplaintDO.setFeedImg(imgUrl);
            baseComplaintDO.setOperator(operator);
            baseComplaintDO.setStatus("2");
            BaseDoctorDO baseDoctorDO = baseDoctorDao.findById(operator);
            if (null != baseDoctorDO) {
                baseComplaintDO.setOperatorName(baseDoctorDO.getName());
            }
            baseComplaintDO.setOperatorDept(deptCode);
            List<BaseDoctorHospitalDO> baseDoctorHospitalDO = baseDoctorHospitalDao.findByDeptCodeDoctorCode(deptCode, operator);
            if (baseDoctorHospitalDO != null && baseDoctorHospitalDO.size() > 0) {
                baseComplaintDO.setOperatorDeptName(baseDoctorHospitalDO.get(0).getDeptName());
            }
            baseComplaintDao.save(baseComplaintDO);
            BaseComplaintOperateLogDO baseComplaintOperateLogDO = new BaseComplaintOperateLogDO();
            baseComplaintOperateLogDO.setOperateFrom(operator);
            baseComplaintOperateLogDO.setStatus("2");
            baseComplaintOperateLogDO.setOperateType("反馈");
            baseComplaintOperateLogDO.setRelationCode(id);
            baseComplaintOperateLogDO.setCreateTime(new Date());
            baseComplaintOperateDao.save(baseComplaintOperateLogDO);
        }else if ("2".equalsIgnoreCase(baseComplaintDO.getStatus())){
            throw new Exception("该工单已被处理完成");
        }else if ("0".equalsIgnoreCase(baseComplaintDO.getStatus())){
            throw new Exception("该工单未被接收");
        }
        return baseComplaintDO;
    }
    //查询投诉列表
    public MixEnvelop findComplaintList(String role,String doctor,String status,String patientName,String patientId,String keyWord,String complaintId,
                                  String startTime,String endTime,Integer page ,Integer pageSize){
        MixEnvelop mixEnvelop = new MixEnvelop();
        Boolean queryAll=false;
        if ("admin".equalsIgnoreCase(role)){
            queryAll=true;
        }
        String sql="select t.id as \"id\"," +
                " t.complaint_id as \"complaintId\"," +
                " t.complaint_name as \"complaintName\"," +
                " t.complaint_content as \"complaintContent\"," +
                " t.visit_type as \"visitType\"," +
                " case  t.visit_type when '1' then '门诊' else '住院' end  as \"visitTypeName\"," +
                " t.visit_time as \"visitTime\"," +
                " t.visit_dept as \"visitDept\"," +
                " t.visit_dept_name as \"visitDeptName\"," +
                " t.adm_no as \"admNo\"," +
                " t.patient as \"patient\"," +
                " t.patient_name as \"patientName\"," +
                " t.patient_idcard as \"patientIdcard\"," +
                " t.idcard_front as \"idcardFront\"," +
                " t.idcard_back as \"idcardBack\"," +
                " t.img_url as \"imgUrl\"," +
                " t.is_del as \"isDel\"," +
                " t.status as \"status\"," +
                " t.create_time as \"createTime\"," +
                " t.accept_time as \"acceptTime\"," +
                " t.deal_time as \"dealTime\"," +
                " t.operator_dept as \"operatorDept\"," +
                " t.operator_dept_name as \"operatorDeptName\"," +
                " t.operator as \"operator\"," +
                " t.operator_name as \"operatorName\"," +
                " t.feed_back as \"feedBack\"," +
                " t.feed_img as \"feedImg\"," +
                " t.acceptor as \"acceptor\"," +
                " b.mobile as \"mobile\"," +
                " t.acceptor_name as \"acceptorName\"" +
                "from base_complaint t " +
                " left join base_patient b on t.patient=b.id" +
                " where t.is_del=1";
        if (!queryAll){
            BaseComplaintDoctorDO baseComplaintDoctorDO= baseComplaintDoctorDao.findbyDoctorAndDel(doctor);
            /*List<BaseComplaintOperateLogDO> logList =baseComplaintOperateDao.findbyOperateFrom(doctor);
            String types= "";
            if (logList!=null&&logList.size()>0){
                for (int i=0;i<logList.size();i++){
                    if (i==logList.size()-1){
                        types+=logList.get(i).getComplaintTo();
                    }else {
                        types+=logList.get(i).getComplaintTo()+",";
                    }
                }
            }*/
            String complaint="";
            if (baseComplaintDoctorDO!=null){
                complaint=baseComplaintDoctorDO.getComplaintId();
            }
            //complaint=complaint+","+types;
            if (StringUtils.isNoneBlank(complaint)){
                //sql+=" and t.complaint_id in ('"+complaint.replace(",","','")+"')";
                sql+=" and t.complaint_id='"+complaint+"'";
            }else {
                return null;
            }
            if (!StringUtils.isNoneBlank(status)){
                sql+=" and t.status !='-1'";
            }
        }else {
            if (StringUtils.isNoneBlank(complaintId)){
                //sql+=" and t.complaint_id in ('"+complaint.replace(",","','")+"')";
                sql+=" and t.complaint_id='"+complaintId+"'";
            }
        }
        if (StringUtils.isNoneBlank(status)){
            sql+=" and t.status ='"+status+"'";
        }
        if (StringUtils.isNoneBlank(patientName)){
            sql+=" and t.patient_name like '%"+patientName+"%'";
        }
        if (StringUtils.isNoneBlank(patientId)){
            sql+=" and t.patient ='"+patientId+"'";
        }
        if (StringUtils.isNoneBlank(keyWord)){
            sql+=" and (t.patient_idcard like '%"+keyWord+"%' or t.patient_name like '%"+keyWord+"%')";
        }
        if (StringUtils.isNotBlank(startTime)){
            if("xm_ykyy_wx".equals(wxId)){
                if (flag){
                    sql+=" and t.create_time > '"+startTime+"'";
                }else {
                    sql+=" and t.create_time > to_date('" + startTime + "', 'yyyy-mm-dd hh24:mi:ss') ";
                }
            }else{
                sql+=" and t.create_time > '"+startTime+"'";
            }
        }
        if (StringUtils.isNotBlank(endTime)){
            if("xm_ykyy_wx".equals(wxId)){
                if (flag){
                    sql+="  and t.create_time<='" + endTime + "'";
                }else {
                    sql+="  and t.create_time<= to_date('" + endTime + "','yyyy-mm-dd hh24:mi:ss')";
                }
            }else{
                sql+="  and t.create_time<='" + endTime + "'";
            }
        }
        sql+=" order by t.create_time desc ";
        List<Map<String,Object>> list = hibenateUtils.createSQLQuery(sql,page,pageSize);
        String sqlcount = "SELECT COUNT(1) AS \"total\" FROM ("+sql+") q";
        Long count = 0L;
        List<Map<String,Object>> total = hibenateUtils.createSQLQuery(sqlcount);
        if(total!=null){
            //mysql 与 Oracle 聚合函数返回类型不一致,需要判断装换
            count = hibenateUtils.objTransformLong(total.get(0).get("total"));
        }
        mixEnvelop.setTotalCount(count.intValue());
        mixEnvelop.setDetailModelList(list);
        mixEnvelop.setPageSize(pageSize);
        mixEnvelop.setCurrPage(page);
        return mixEnvelop;
    }
    public BaseComplaintDO  findOnePaitentComplaint(String id){
        BaseComplaintDO baseComplaintDO = baseComplaintDao.findOne(id);
        BasePatientDO basePatientDO=basePatientDao.findById(baseComplaintDO.getPatient());
        if (null!=basePatientDO){
            baseComplaintDO.setMobile(basePatientDO.getMobile());
        }
        baseComplaintDO.setVisitTypeName(baseComplaintDO.getVisitType().equalsIgnoreCase("1")?"门诊":"住院");
        return baseComplaintDO;
    }
    //查询投诉列表
    public MixEnvelop findPatientComplaintList(String status,String patientName,String patientId,
                                        String startTime,String endTime,String complaintType,Integer page ,Integer pageSize){
        MixEnvelop mixEnvelop = new MixEnvelop();
        String sql="select t.id as \"id\"," +
                " t.complaint_id as \"complaintId\"," +
                " t.complaint_name as \"complaintName\"," +
                " t.complaint_content as \"complaintContent\"," +
                " t.visit_type as \"visitType\"," +
                " case  t.visit_type when '1' then '门诊' else '住院' end  as \"visitTypeName\"," +
                " t.visit_time as \"visitTime\"," +
                " t.visit_dept as \"visitDept\"," +
                " t.visit_dept_name as \"visitDeptName\"," +
                " t.adm_no as \"admNo\"," +
                " t.patient as \"patient\"," +
                " t.patient_name as \"patientName\"," +
                " t.patient_idcard as \"patientIdcard\"," +
                " t.idcard_front as \"idcardFront\"," +
                " t.idcard_back as \"idcardBack\"," +
                " t.img_url as \"imgUrl\"," +
                " t.is_del as \"isDel\"," +
                " t.status as \"status\"," +
                " t.create_time as \"createTime\"," +
                " t.accept_time as \"acceptTime\"," +
                " t.deal_time as \"dealTime\"," +
                " t.operator_dept as \"operatorDept\"," +
                " t.operator_dept_name as \"operatorDeptName\"," +
                " t.operator as \"operator\"," +
                " t.operator_name as \"operatorName\"," +
                " t.feed_back as \"feedBack\"," +
                " t.feed_img as \"feedImg\"," +
                " t.acceptor as \"acceptor\"," +
                " b.mobile as \"mobile\"," +
                " t.acceptor_name as \"acceptorName\"" +
                " from base_complaint t " +
                " left join base_patient b on t.patient=b.id" +
                " where t.is_del=1";
        if (StringUtils.isNoneBlank(status)){
            sql+=" and t.status ='"+status+"'";
        }
        if (StringUtils.isNoneBlank(patientName)){
            sql+=" and t.patient_name like '%"+patientName+"%'";
        }
        if (StringUtils.isNoneBlank(patientId)){
            sql+=" and t.patient ='"+patientId+"'";
        }
        if (StringUtils.isNoneBlank(complaintType)){
            sql+=" and t.complaint_id ='"+complaintType+"'";
        }
        if (StringUtils.isNotBlank(startTime)){
            if("xm_ykyy_wx".equals(wxId)){
                if (flag){
                    sql+=" and t.create_time > '"+startTime+"'";
                }else {
                    sql+=" and t.create_time > to_date('" + startTime + "', 'yyyy-mm-dd hh24:mi:ss') ";
                }
            }else{
                sql+=" and t.create_time > '"+startTime+"'";
            }
        }
        if (StringUtils.isNotBlank(endTime)){
            if("xm_ykyy_wx".equals(wxId)){
                if (flag){
                    sql+="  and t.create_time<='" + endTime + "'";
                }else {
                    sql+="  and t.create_time<= to_date('" + endTime + "','yyyy-mm-dd hh24:mi:ss')";
                }
            }else{
                sql+="  and t.create_time<='" + endTime + "'";
            }
        }
        sql+=" order by t.create_time desc ";
        List<Map<String,Object>> list = hibenateUtils.createSQLQuery(sql,page,pageSize);
        String sqlcount = "SELECT COUNT(1) AS \"total\" FROM ("+sql+") q";
        Long count = 0L;
        List<Map<String,Object>> total = hibenateUtils.createSQLQuery(sqlcount);
        if(total!=null){
            //mysql 与 Oracle 聚合函数返回类型不一致,需要判断装换
            count = hibenateUtils.objTransformLong(total.get(0).get("total"));
        }
        mixEnvelop.setTotalCount(count.intValue());
        mixEnvelop.setDetailModelList(list);
        mixEnvelop.setPageSize(pageSize);
        mixEnvelop.setCurrPage(page);
        return mixEnvelop;
    }
    /*
    * 查询投诉数量*/
    public Map<String,Object> findComplaintCount(String doctor,String role){
        BaseComplaintDoctorDO baseComplaintDoctorDO=baseComplaintDoctorDao.findbyDoctorAndDel(doctor);
        Integer complaints=0;
        Integer recieve=0;
        Integer deal=0;
        Integer cacel=0;
        if (baseComplaintDoctorDO!=null){
            Boolean queryAll=false;
            if ("admin".equalsIgnoreCase(role)){
                queryAll=true;
            }
            if (!queryAll){
                complaints=baseComplaintDao.getCountByStatusAndComplaintId("0",baseComplaintDoctorDO.getComplaintId());
                recieve=baseComplaintDao.getCountByStatusAndComplaintId("1",baseComplaintDoctorDO.getComplaintId());
                deal=baseComplaintDao.getCountByStatusAndComplaintId("2",baseComplaintDoctorDO.getComplaintId());
                //cacel=baseComplaintDao.getCountByStatusAndComplaintId("-1",baseComplaintDoctorDO.getComplaintId());
            }else {
                complaints=baseComplaintDao.getCountByStatus("0");
                recieve=baseComplaintDao.getCountByStatus("1");
                deal=baseComplaintDao.getCountByStatus("2");
                cacel=baseComplaintDao.getCountByStatus("-1");
            }
        }
        Integer total = complaints+recieve+deal+cacel;
        Map map=new HashMap();
        map.put("complaints",complaints);
        map.put("recieve",recieve);
        map.put("deal",deal);
        map.put("cacel",cacel);
        map.put("total",total);
        return map;
    }
    /*
     * 查询投诉数量*/
    public Map<String,Object> findComplaintCountPatient(String patient){
        Integer complaints=0;
        Integer recieve=0;
        Integer deal=0;
        Integer cacel=0;
        complaints=baseComplaintDao.getCountByStatusByPatient("0",patient);
        recieve=baseComplaintDao.getCountByStatusByPatient("1",patient);
        deal=baseComplaintDao.getCountByStatusByPatient("2",patient);
        cacel=baseComplaintDao.getCountByStatusByPatient("-1",patient);
        Integer total = complaints+recieve+deal+cacel;
        Map map=new HashMap();
        map.put("complaints",complaints);
        map.put("recieve",recieve);
        map.put("deal",deal);
        map.put("cacel",cacel);
        map.put("total",total);
        return map;
    }
    public BaseComplaintDO  cancelPaitentComplaint(String id,String patient) throws  Exception{
        BaseComplaintDO baseComplaintDO = baseComplaintDao.findOne(id);
       if (baseComplaintDO!=null){
           if ("0".equalsIgnoreCase(baseComplaintDO.getStatus())){
               baseComplaintDO.setStatus("-1");
               baseComplaintDO=baseComplaintDao.save(baseComplaintDO);
               BaseComplaintOperateLogDO baseComplaintOperateLogDO = new BaseComplaintOperateLogDO();
               baseComplaintOperateLogDO.setOperateFrom(patient);
               baseComplaintOperateLogDO.setStatus("-1");
               baseComplaintOperateLogDO.setOperateType("居民撤销投诉");
               baseComplaintOperateLogDO.setRelationCode(baseComplaintDO.getId());
               baseComplaintOperateLogDO.setCreateTime(new Date());
               baseComplaintOperateDao.save(baseComplaintOperateLogDO);
           }else {
               throw new Exception("不允许撤销");
           }
       }
       return baseComplaintDO;
    }
    public List<Map<String,Object>> findComplaintOperateLog(String complaintId){
        String sql ="select t.id as \"id\"," +
                " p.name as \"complaintNameFrom\" ," +
                " n.name as \"complaintNameto\", " +
                " t.operate_from as \"operateFrom\" ," +
                " t.operate_to as \"operateTo\" ," +
                " t.cancel_by as \"cancelBy\", " +
                " t.operate_type as \"operateType\", " +
                " t.status as \"status\", " +
                " t.create_time as \"createTime\" ," +
                " t.relation_code as \"relationCode\" " +
                " from base_complaint_operate_log t left join base_complaint c" +
                " on t.relation_code=c.id" +
                " left join base_complaint_dict p on t.complaint_from= p.id" +
                " left join base_complaint_dict n on t.complaint_to=n.id where 1=1 " ;
        if (StringUtils.isNoneBlank(complaintId)){
            sql+=" and t.relation_code='"+complaintId+"'";
        }
        sql+=" order by t.create_time desc";
        List<Map<String,Object>> list = hibenateUtils.createSQLQuery(sql);
        List<WlyyHospitalSysDictDO> typeList=wlyyHospitalSysDictDao.findByDictName("complaintStatus");
        for (Map<String,Object> map:list){
            if (map.get("operateFrom")!=null){
                if (map.get("status")!=null){
                    for (WlyyHospitalSysDictDO wlyyHospitalSysDictDO:typeList){
                        if (map.get("status").toString().equalsIgnoreCase(wlyyHospitalSysDictDO.getDictCode())){
                            map.put("operateType",wlyyHospitalSysDictDO.getDictValue());
                        }
                    }
                    if ("0".equalsIgnoreCase(map.get("status").toString())||"-1".equalsIgnoreCase(map.get("status").toString())){
                        BasePatientDO basePatientDO = basePatientDao.findById(map.get("operateFrom").toString());
                        if (basePatientDO!=null){
                            map.put("operateFromName",basePatientDO.getName());
                        }
                    }else {
                        BaseDoctorDO baseDoctorDO= baseDoctorDao.findById(map.get("operateFrom").toString());
                        if (baseDoctorDO!=null){
                            map.put("operateFromName",baseDoctorDO.getName());
                        }
                        List<BaseDoctorHospitalDO> baseDoctorHospitalDO= baseDoctorHospitalDao.findByDoctorCode(map.get("operateFrom").toString());
                        if (baseDoctorHospitalDO!=null&&baseDoctorHospitalDO.size()>0){
                            map.put("operateFromDeptName",baseDoctorHospitalDO.get(0).getDeptName());
                        }
                    }
                }
            }
            if (map.get("operateTo")!=null){
                BaseDoctorDO baseDoctorDO= baseDoctorDao.findById(map.get("operateTo").toString());
                if (baseDoctorDO!=null){
                    map.put("operateToName",baseDoctorDO.getName());
                }
                List<BaseDoctorHospitalDO> baseDoctorHospitalDO= baseDoctorHospitalDao.findByDoctorCode(map.get("operateTo").toString());
                if (baseDoctorHospitalDO!=null&&baseDoctorHospitalDO.size()>0){
                    map.put("operateToDeptName",baseDoctorHospitalDO.get(0).getDeptName());
                }
            }
        }
    return list;
    }
}

+ 1 - 1
business/base-service/src/main/java/com/yihu/jw/dict/dao/PrivateDictDao.java

@ -14,5 +14,5 @@ public interface PrivateDictDao extends PagingAndSortingRepository<PrivateDictDO
    @Query("from PrivateDictDO t where t.isDel = 1")
    List<PrivateDictDO> findALL();
    @Query("from PrivateDictDO t where t.dictCode= ?1 and t.isDel = 1")
    List<PrivateDictDO> findoneByCode(String dictCode);
    List<PrivateDictDO> findByDictCodeAndIsDel(String dictCode);
}

+ 3 - 2
business/base-service/src/main/java/com/yihu/jw/dict/service/PrivateDictService.java

@ -23,11 +23,12 @@ public class PrivateDictService extends BaseJpaService<PrivateDictDO, PrivateDic
    private HibenateUtils hibenateUtils;
    //查找隐私策略
    public List<PrivateDictDO> findByHospitalCodeAndDictCode(String dictCode){
        if (StringUtils.isNotBlank(dictCode)){
        return privateDictDao.findByDictCodeAndIsDel(dictCode);
        /*if (StringUtils.isNotBlank(dictCode)){
            return privateDictDao.findoneByCode(dictCode);
        }else {
            return privateDictDao.findALL();
        }
        }*/
    }
    //添加隐私策略
    public MixEnvelop addPrivateDict(String id,String dictCode,String dictName, String dictValue,String hospitalCode,String hospitalName,String imgUrl){

+ 6 - 0
business/base-service/src/main/java/com/yihu/jw/doctor/dao/BaseDoctorHospitalDao.java

@ -24,6 +24,9 @@ public interface BaseDoctorHospitalDao extends PagingAndSortingRepository<BaseDo
    @Query("select bdo from BaseDoctorHospitalDO bdo where bdo.doctorCode = ?1 and bdo.del=1")
    List<BaseDoctorHospitalDO> findByDoctorCode(String doctorCode);
    @Query("select bdo from BaseDoctorHospitalDO bdo where bdo.doctorCode = ?1 and bdo.del=1 group by bdo.orgCode")
    List<BaseDoctorHospitalDO> findDistinctOrgByDoctorCode(String doctorCode);
    List<BaseDoctorHospitalDO> findByOrgCode(String orgCode);
@ -39,4 +42,7 @@ public interface BaseDoctorHospitalDao extends PagingAndSortingRepository<BaseDo
    List<BaseDoctorHospitalDO> findByOrgCodeAndDeptCodeAndDel(String orgCode,String deptCode,String del);
    @Query("select bdo from BaseDoctorHospitalDO bdo where bdo.deptCode = ?1 and bdo.doctorCode=?2 and bdo.del=1")
    List<BaseDoctorHospitalDO> findByDeptCodeDoctorCode(String dept,String doctorCode);
}

+ 9 - 0
business/base-service/src/main/java/com/yihu/jw/doctor/dao/BaseDoctorSuggestDao.java

@ -0,0 +1,9 @@
package com.yihu.jw.doctor.dao;
import com.yihu.jw.entity.base.doctor.BaseDoctorRoleDO;
import com.yihu.jw.entity.base.doctor.BaseDoctorSuggestDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
public interface BaseDoctorSuggestDao  extends PagingAndSortingRepository<BaseDoctorSuggestDO, String>, JpaSpecificationExecutor<BaseDoctorSuggestDO> {
}

+ 23 - 15
business/base-service/src/main/java/com/yihu/jw/doctor/service/BaseDoctorInfoService.java

@ -85,7 +85,7 @@ public class BaseDoctorInfoService extends BaseJpaService<BaseDoctorDO, BaseDoct
                " FROM " +
                " base_doctor a " +
                " JOIN base_doctor_hospital b ON a.id = b.doctor_code " +
                " LEFT JOIN (SELECT * FROM wlyy_charge_dict t WHERE t.dept_type_code ='6') e ON a.charge_type = e.charge_type " +
                " LEFT JOIN (SELECT * FROM wlyy_charge_dict t WHERE t.dept_type_code ='6' and t.is_del='1' ) e ON a.charge_type = e.charge_type " +
                " LEFT JOIN base_doctor_mapping c ON a.id = c.doctor " +
                " WHERE " +
                " 1 = 1";
@ -152,13 +152,13 @@ public class BaseDoctorInfoService extends BaseJpaService<BaseDoctorDO, BaseDoct
                " FROM " +
                " base_doctor a " +
                " JOIN base_doctor_hospital b ON a.id = b.doctor_code " +
                " LEFT JOIN (SELECT * FROM wlyy_charge_dict t WHERE t.dept_type_code ='6') e ON a.charge_type = e.charge_type " +
                " LEFT JOIN wlyy_charge_dict m ON a.twfz_charge_type = m.charge_type\n" +
                " LEFT JOIN wlyy_charge_dict n ON a.spfz_charge_type = n.charge_type\n" +
                " LEFT JOIN wlyy_charge_dict p ON a.spzx_charge_type = p.charge_type\n" +
                " LEFT JOIN wlyy_charge_dict v ON a.twzx_charge_type = v.charge_type\n" +
                " LEFT JOIN wlyy_charge_dict d ON a.xtfz_charge_type = d.charge_type\n" +
                " LEFT JOIN wlyy_charge_dict g ON a.jyzx_charge_type = g.charge_type\n" +
                " LEFT JOIN (SELECT * FROM wlyy_charge_dict t WHERE t.dept_type_code ='6' and t.is_del='1') e ON a.charge_type = e.charge_type " +
                " LEFT JOIN wlyy_charge_dict m ON a.twfz_charge_type = m.charge_type and m.is_del='1'\n" +
                " LEFT JOIN wlyy_charge_dict n ON a.spfz_charge_type = n.charge_type and n.is_del='1'\n" +
                " LEFT JOIN wlyy_charge_dict p ON a.spzx_charge_type = p.charge_type and p.is_del='1'\n" +
                " LEFT JOIN wlyy_charge_dict v ON a.twzx_charge_type = v.charge_type and v.is_del='1'\n" +
                " LEFT JOIN wlyy_charge_dict d ON a.xtfz_charge_type = d.charge_type and d.is_del='1'\n" +
                " LEFT JOIN wlyy_charge_dict g ON a.jyzx_charge_type = g.charge_type and g.is_del='1'\n" +
                " LEFT JOIN base_doctor_mapping c ON a.id = c.doctor " +
                " WHERE 1=1";
        if (StringUtils.isNotBlank(city)){
@ -229,12 +229,12 @@ public class BaseDoctorInfoService extends BaseJpaService<BaseDoctorDO, BaseDoct
                " LEFT JOIN dict_hospital_dept h ON b.dept_code = h.code " +
                " LEFT JOIN wlyy_doctor_special_disease d ON a.id = d.doctor_code " +
                " LEFT JOIN wlyy_charge_dict e ON a.charge_type = e.charge_type " +
                " LEFT JOIN wlyy_charge_dict m ON a.twfz_charge_type = m.charge_type\n" +
                " LEFT JOIN wlyy_charge_dict n ON a.spfz_charge_type = n.charge_type\n" +
                " LEFT JOIN wlyy_charge_dict p ON a.spzx_charge_type = p.charge_type\n" +
                " LEFT JOIN wlyy_charge_dict v ON a.twzx_charge_type = v.charge_type\n" +
                " LEFT JOIN wlyy_charge_dict q ON a.xtfz_charge_type = q.charge_type\n" +
                " LEFT JOIN wlyy_charge_dict g ON a.jyzx_charge_type = g.charge_type\n" +
                " LEFT JOIN wlyy_charge_dict m ON a.twfz_charge_type = m.charge_type and m.is_del='1'\n" +
                " LEFT JOIN wlyy_charge_dict n ON a.spfz_charge_type = n.charge_type and n.is_del='1'\n" +
                " LEFT JOIN wlyy_charge_dict p ON a.spzx_charge_type = p.charge_type and p.is_del='1'\n" +
                " LEFT JOIN wlyy_charge_dict v ON a.twzx_charge_type = v.charge_type and v.is_del='1'\n" +
                " LEFT JOIN wlyy_charge_dict q ON a.xtfz_charge_type = q.charge_type and q.is_del='1'\n" +
                " LEFT JOIN wlyy_charge_dict g ON a.jyzx_charge_type = g.charge_type and g.is_del='1'\n" +
                " WHERE 1=1 ";
        if(StringUtils.isNotBlank(doctorId)){
            sql+=" AND a.id =:id";
@ -586,7 +586,7 @@ public class BaseDoctorInfoService extends BaseJpaService<BaseDoctorDO, BaseDoct
                wlyyChargeDictDO.setCreateTime(new Date());
                wlyyChargeDictDO.setReqFee(chargeFee);
                wlyyChargeDictDO.setChargeType(fee+"");
                wlyyChargeDictDO.setDeptTypeCode("6");
                wlyyChargeDictDO.setIsDel("1");
                wlyyChargeDictDO.setChargeName(doctorName+"创建的号别");
                wlyyChargeDictDO = wlyyChargeDictDao.save(wlyyChargeDictDO);
                return  wlyyChargeDictDO.getChargeType();
@ -599,4 +599,12 @@ public class BaseDoctorInfoService extends BaseJpaService<BaseDoctorDO, BaseDoct
        List<WlyyChargeDictDO> wlyyChargeDictDOS =  wlyyChargeDictDao.findByDeptTypeCode("6");
        return wlyyChargeDictDOS;
    }
    public void deleteChargeDict(String id,String del){
        WlyyChargeDictDO wlyyChargeDictDO =  wlyyChargeDictDao.findOne(id);
        if (wlyyChargeDictDO!=null){
            wlyyChargeDictDO.setIsDel(del);
            wlyyChargeDictDao.save(wlyyChargeDictDO);
        }
    }
}

+ 156 - 0
business/base-service/src/main/java/com/yihu/jw/doctor/service/BaseDoctorSuggestService.java

@ -0,0 +1,156 @@
package com.yihu.jw.doctor.service;
import com.alibaba.fastjson.JSON;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.jw.doctor.dao.BaseDoctorDao;
import com.yihu.jw.doctor.dao.BaseDoctorSuggestDao;
import com.yihu.jw.doctor.dao.DoctorSpecialDiseaseDao;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
import com.yihu.jw.entity.base.doctor.BaseDoctorSuggestDO;
import com.yihu.jw.entity.base.doctor.DoctorSpecialDiseaseDo;
import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.entity.hospital.consult.WlyyHospitalSysDictDO;
import com.yihu.jw.hospital.dict.WlyyHospitalSysDictDao;
import com.yihu.jw.patient.dao.BasePatientDao;
import com.yihu.jw.restmodel.web.MixEnvelop;
import com.yihu.jw.utils.hibernate.HibenateUtils;
import com.yihu.mysql.query.BaseJpaService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
import java.util.Map;
@Service
public class BaseDoctorSuggestService  extends BaseJpaService<BaseDoctorSuggestDO, BaseDoctorSuggestDao> {
    @Autowired
    private BaseDoctorDao baseDoctorDao;
    @Autowired
    private HibenateUtils hibenateUtils;
    @Autowired
    private BasePatientDao basePatientDao;
    @Autowired
    private WlyyHospitalSysDictDao wlyyHospitalSysDictDao;
    @Autowired
    private ObjectMapper objectMapper;
    @Autowired
    private BaseDoctorSuggestDao baseDoctorSuggestDao;
    @Value("${wechat.id}")
    private String wxId;
    @Value("${wechat.flag}")
    private boolean flag;
    public void saveDoctorSuggest(String suggestType,String  suggestContent,String  imgUrl,String doctor,String createUser,String relationCode,String relationType) throws  Exception{
        BaseDoctorSuggestDO baseDoctorSuggestDO=new BaseDoctorSuggestDO();
        baseDoctorSuggestDO.setCreateUser(createUser);
        baseDoctorSuggestDO.setSuggestType(suggestType);
        baseDoctorSuggestDO.setSuggestContent(suggestContent);
        baseDoctorSuggestDO.setImgUrl(imgUrl);
        baseDoctorSuggestDO.setRelationCode(relationCode);
        baseDoctorSuggestDO.setRelationType(relationType);
        baseDoctorSuggestDO.setDoctor(doctor);
        baseDoctorSuggestDO.setCreateTime(new Date());
        baseDoctorSuggestDO.setIsDel("1");
        BasePatientDO basePatientDO=basePatientDao.findById(baseDoctorSuggestDO.getCreateUser());
        if (basePatientDO!=null){
            baseDoctorSuggestDO.setCreateUserName(basePatientDO.getName());
        }
        BaseDoctorDO baseDoctorDO=baseDoctorDao.findById(baseDoctorSuggestDO.getDoctor());
        if (baseDoctorDO!=null){
            baseDoctorSuggestDO.setDoctorName(baseDoctorDO.getName());
        }
        List<WlyyHospitalSysDictDO> list =wlyyHospitalSysDictDao.findByDictName("doctorSuggestType");
        for (WlyyHospitalSysDictDO wlyyHospitalSysDictDO:list){
            if (baseDoctorSuggestDO.getSuggestType().equalsIgnoreCase(wlyyHospitalSysDictDO.getDictCode())){
                baseDoctorSuggestDO.setSuggestName(wlyyHospitalSysDictDO.getDictValue());
            }
        }
        baseDoctorSuggestDao.save(baseDoctorSuggestDO);
    }
    public MixEnvelop findDoctorSuggest(String doctor,String patient,String doctorName,String patientName,String startTime,String endTime,
                                        String suggestType,String relationType,String keyWord,Integer page,Integer pageSize){
        MixEnvelop mixEnvelop = new MixEnvelop();
        String sql = "select t.id as \"id\"," +
                "t.suggest_type as \"suggestType\"," +
                "t.suggest_name as \"suggestName\"," +
                "t.suggest_content as \"suggestContent\"," +
                "t.relation_code as \"relationCode\"," +
                "t.relation_type as \"relationType\"," ;
        if("xm_ykyy_wx".equals(wxId)){
            if (flag){
                sql+="date_format(t.create_time, '%Y-%m-%d %H:%i:%s')  as \"createTime\",";
            }else {
                sql+="  to_char(t.create_time,'yyyy-MM-dd HH24:mi:ss') as \"createTime\",";
            }
        }else{
            sql+="date_format(t.create_time, '%Y-%m-%d %H:%i:%s')  as \"createTime\",";
        }
        sql+= "t.create_user as \"createUser\"," +
                "t.create_user_name as \"createUserName\"," +
                "t.doctor as \"doctor\"," +
                "t.doctor_name as \"doctorName\"," +
                "t.is_del as \"isDel\"," +
                "t.img_url as \"imgUrl\"" +
                "from base_doctor_suggest t where t.is_del ='1'";
        if (StringUtils.isNoneBlank(doctor)){
            sql+=" and t.doctor='"+doctor+"'";
        }
        if (StringUtils.isNoneBlank(patient)){
            sql+=" and t.create_user='"+patient+"'";
        }
        if (StringUtils.isNoneBlank(doctorName)){
            sql+=" and t.doctor_name like '%"+doctorName+"%'";
        }
        if (StringUtils.isNoneBlank(patientName)){
            sql+=" and t.create_user_name like '%"+patientName+"%'";
        }if (StringUtils.isNoneBlank(suggestType)){
            sql+=" and t.suggest_type='"+suggestType+"'";
        }if (StringUtils.isNoneBlank(relationType)){
            sql+=" and t.relation_type='"+relationType+"'";
        }if (StringUtils.isNoneBlank(keyWord)){
            sql+=" and t.suggest_content like '%"+keyWord+"%'";
        }
        if (StringUtils.isNotBlank(startTime)){
            if("xm_ykyy_wx".equals(wxId)){
                if (flag){
                    sql+=" and t.create_time > '"+startTime+"'";
                }else {
                    sql+=" and t.create_time > to_date('" + startTime + "', 'yyyy-mm-dd hh24:mi:ss') ";
                }
            }else{
                sql+=" and t.create_time > '"+startTime+"'";
            }
        }
        if (StringUtils.isNotBlank(endTime)){
            if("xm_ykyy_wx".equals(wxId)){
                if (flag){
                    sql+="  and t.create_time<='" + endTime + "'";
                }else {
                    sql+="  and t.create_time<= to_date('" + endTime + "','yyyy-mm-dd hh24:mi:ss')";
                }
            }else{
                sql+="  and t.create_time<='" + endTime + "'";
            }
        }
        sql+=" order by t.create_time desc ";
        List<Map<String,Object>> list = hibenateUtils.createSQLQuery(sql,page,pageSize);
        String sqlcount = "SELECT COUNT(1) AS \"total\" FROM ("+sql+") q";
        Long count = 0L;
        List<Map<String,Object>> total = hibenateUtils.createSQLQuery(sqlcount);
        if(total!=null){
            //mysql 与 Oracle 聚合函数返回类型不一致,需要判断装换
            count = hibenateUtils.objTransformLong(total.get(0).get("total"));
        }
        mixEnvelop.setTotalCount(count.intValue());
        mixEnvelop.setDetailModelList(list);
        mixEnvelop.setPageSize(pageSize);
        mixEnvelop.setCurrPage(page);
        return mixEnvelop;
    }
    public BaseDoctorSuggestDO findById(String id){
        return baseDoctorSuggestDao.findOne(id);
    }
}

+ 36 - 0
business/base-service/src/main/java/com/yihu/jw/file_upload/FileUploadService.java

@ -25,6 +25,7 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.mock.web.MockMultipartFile;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import sun.misc.BASE64Decoder;
import javax.activation.MimetypesFileTypeMap;
import java.io.*;
@ -518,6 +519,41 @@ public class FileUploadService {
        inputStream = conn.getInputStream();
        return inputStream;
    }
    public void deleteFile(String groupName,String fileName) throws  Exception{
        fastDFSHelper.delete(groupName,fileName);
    }
    /*
     * base64上传图片心脏
     * @param jsonData,头像转化后的输入流
     * @return
     * @throws Exception
     */
    public UploadVO uploadImagesBase64(String jsonData,String fastdfs_file_url) throws Exception {
        if(StringUtils.isBlank(jsonData)){
            throw new FileInputStreamEmptyException("图片的base64文件文件流不可为空!");
        }
        if(StringUtils.isBlank(fastdfs_file_url)){
            throw new FastfdsFileURLEmptyException("fastdfs url不可为空!");
        }
        BASE64Decoder decoder = new BASE64Decoder();
        byte[] bfile = decoder.decodeBuffer(jsonData);
        InputStream inputStream = new ByteArrayInputStream(bfile);
        ObjectNode objectNode = fastDFSHelper.upload(inputStream, "png", "");
        String groupName = objectNode.get("groupName").toString();
        String remoteFileName = objectNode.get("remoteFileName").toString();
        //解析返回的objectNode
        UploadVO uploadVO = new UploadVO();
        uploadVO.setFileName(remoteFileName);
        uploadVO.setFileType(groupName);
        uploadVO.setFullUri(objectNode.get("fileId").toString().replaceAll("\"", ""));
        uploadVO.setFullUrl(fastdfs_file_url + objectNode.get("fileId").toString().replaceAll("\"", ""));
        //返回文件路径
        return uploadVO;
    }
}

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

@ -0,0 +1,22 @@
package com.yihu.jw.hospital;
import com.yihu.jw.entity.hospital.DmHospitalDO;
import com.yihu.jw.entity.hospital.team.WlyyAdminTeamDO;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.domain.Specification;
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 HospitalDao extends PagingAndSortingRepository<DmHospitalDO, Integer>, JpaSpecificationExecutor<DmHospitalDO> {
    @Query("from DmHospitalDO t where t.town=?1 and t.del='1'")
    List<DmHospitalDO> findByTownCode(String town, Pageable pageRequest);
    @Query("from DmHospitalDO t where t.code=?1 and t.del='1'")
    DmHospitalDO findByCode(String code);
    boolean existsByCode(String code);
}

+ 14 - 0
business/base-service/src/main/java/com/yihu/jw/hospital/consult/dao/BaseAdviceTreatmentDao.java

@ -0,0 +1,14 @@
package com.yihu.jw.hospital.consult.dao;
import com.yihu.jw.entity.hospital.consult.WlyyDoctorClinicRoomDO;
import com.yihu.jw.entity.hospital.prescription.BaseAdviceTreatmentDO;
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 BaseAdviceTreatmentDao   extends PagingAndSortingRepository<BaseAdviceTreatmentDO, String>, JpaSpecificationExecutor<BaseAdviceTreatmentDO> {
    @Query("from BaseAdviceTreatmentDO t where t.relationCode=?1")
    List<BaseAdviceTreatmentDO> findByRelationCode(String outpatientId);
}

+ 5 - 4
business/base-service/src/main/java/com/yihu/jw/hospital/dict/WlyyChargeDictDao.java

@ -13,14 +13,15 @@ import java.util.List;
 */
@Transactional
public interface WlyyChargeDictDao extends PagingAndSortingRepository<WlyyChargeDictDO, String>, JpaSpecificationExecutor<WlyyChargeDictDO> {
    @Query("from WlyyChargeDictDO t where t.deptTypeCode=?1 and t.isDel='1'")
    List<WlyyChargeDictDO>  findByDeptTypeCode(String deptTypeCode);
    @Query("from WlyyChargeDictDO d where 1=1 ")
    @Query("from WlyyChargeDictDO d where 1=1 and d.isDel='1'")
    List<WlyyChargeDictDO>  findAllDict();
    @Query("from WlyyChargeDictDO t where t.chargeType=?1 and t.deptTypeCode=?2 and t.isDel='1'")
    WlyyChargeDictDO  findByChargeTypeAndDeptTypeCode(String chargeType,String deptTypeCode);
    @Query("from WlyyChargeDictDO t where t.chargeType=?1  and t.isDel='1'")
    WlyyChargeDictDO  findByChargeType(String chargeType);
    @Query("from WlyyChargeDictDO d where d.reqFee = ?1 ")
    @Query("from WlyyChargeDictDO d where d.reqFee = ?1 and d.isDel='1' ")
    WlyyChargeDictDO  findByReqFee(Double reqFee);
}

+ 6 - 0
business/base-service/src/main/java/com/yihu/jw/hospital/dict/WlyyHospitalSysDictDao.java

@ -19,6 +19,9 @@ public interface WlyyHospitalSysDictDao extends PagingAndSortingRepository<WlyyH
    WlyyHospitalSysDictDO findById(String id);
    @Query("from WlyyHospitalSysDictDO where dictName = ?1  and  dictCode is null order by sort asc")
    List<WlyyHospitalSysDictDO> findByDictNameNotNull(String dictName);
    List<WlyyHospitalSysDictDO> findByDictName(String dictName);
    @Query("from WlyyHospitalSysDictDO where 1=1")
    List<WlyyHospitalSysDictDO> findAlldict();
@ -39,4 +42,7 @@ public interface WlyyHospitalSysDictDao extends PagingAndSortingRepository<WlyyH
    @Query("from WlyyHospitalSysDictDO where dictName = ?1  and  hospital=?2 and sort >= ?3 order by sort asc")
    List<WlyyHospitalSysDictDO> findByDictNameSortOrderBySort(String dictName,String hospital,Integer sort);
    @Query("from WlyyHospitalSysDictDO where dictName = ?1  and  dictCode=?2 ")
    WlyyHospitalSysDictDO findOneByDictNameAndDictCode(String dictName,String dictCode);
}

+ 1 - 1
business/base-service/src/main/java/com/yihu/jw/hospital/dict/service/WlyyHospitalSysDictService.java

@ -54,7 +54,7 @@ public class WlyyHospitalSysDictService extends BaseJpaService<WlyyHospitalSysDi
                " t.create_time as \"createTime\""+
                " from wlyy_hospital_sys_dict t where 1=1 ";
        if (StringUtils.isNoneBlank(name)){
            sql+=" and t.dict_name like '%"+name+"%'";
            sql+=" and t.dict_name = '"+name+"'";
        }
        if (StringUtils.isNoneBlank(modelName)){
            sql+=" and t.model_name like '%"+modelName+"%'";

+ 9 - 0
business/base-service/src/main/java/com/yihu/jw/hospital/httplog/dao/BaseOperateLogDao.java

@ -0,0 +1,9 @@
package com.yihu.jw.hospital.httplog.dao;
import com.yihu.jw.entity.hospital.httplog.BaseOperateLogDO;
import com.yihu.jw.entity.hospital.httplog.WlyyHttpLogDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
public interface BaseOperateLogDao extends PagingAndSortingRepository<BaseOperateLogDO, String>, JpaSpecificationExecutor<BaseOperateLogDO> {
}

+ 152 - 0
business/base-service/src/main/java/com/yihu/jw/hospital/httplog/service/BaseOperateLogService.java

@ -0,0 +1,152 @@
package com.yihu.jw.hospital.httplog.service;
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.hospital.httplog.BaseOperateLogDO;
import com.yihu.jw.entity.hospital.httplog.WlyyHttpLogDO;
import com.yihu.jw.entity.hospital.mapping.DoctorMappingDO;
import com.yihu.jw.entity.hospital.mapping.PatientMappingDO;
import com.yihu.jw.hospital.httplog.dao.BaseOperateLogDao;
import com.yihu.jw.hospital.httplog.dao.WlyyHttpLogDao;
import com.yihu.jw.hospital.mapping.dao.DoctorMappingDao;
import com.yihu.jw.hospital.mapping.dao.PatientMappingDao;
import com.yihu.jw.patient.dao.BasePatientDao;
import com.yihu.jw.restmodel.web.MixEnvelop;
import com.yihu.jw.utils.JDBCSqlServer;
import com.yihu.jw.utils.hibernate.HibenateUtils;
import com.yihu.mysql.query.BaseJpaService;
import org.apache.commons.lang3.StringUtils;
import org.checkerframework.checker.units.qual.A;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
import java.util.Map;
@Service
public class BaseOperateLogService extends BaseJpaService<BaseOperateLogDO, BaseOperateLogDao> {
    @Autowired
    private BaseOperateLogDao baseOperateLogDao;
    @Autowired
    private BasePatientDao basePatientDao;
    @Autowired
    private BaseDoctorDao baseDoctorDao;
    @Autowired
    private JDBCSqlServer jdbcSqlServer;
    @Autowired
    private HibenateUtils hibenateUtils;
    @Autowired
    private PatientMappingDao patientMappingDao;
    @Autowired
    private DoctorMappingDao doctorMappingDao;
    @Value("${wechat.id}")
    private String wxId;
    @Value("${wechat.flag}")
    private boolean flag;
    public void saveOperateLog(String operator,String patient,String code,String name,String relationType,String relationCode){
        BaseOperateLogDO baseOperateLogDO=new BaseOperateLogDO();
        BaseDoctorDO baseDoctorDO=baseDoctorDao.findById(operator);
        baseOperateLogDO.setOperator(operator);
        baseOperateLogDO.setPatient(patient);
        baseOperateLogDO.setCode(code);
        baseOperateLogDO.setName(name);
        baseOperateLogDO.setRelationType(relationType);
        baseOperateLogDO.setCreateTime(new Date());
        baseOperateLogDO.setIsDel("1");
        if (baseDoctorDO!=null){
            baseOperateLogDO.setOperatorName(baseDoctorDO.getName());
        }
        BasePatientDO basePatientDO=basePatientDao.findById(patient);
        if (basePatientDO!=null){
            baseOperateLogDO.setPatientName(basePatientDO.getName());
        }
        baseOperateLogDO=baseOperateLogDao.save(baseOperateLogDO);
        try {
            /*PatientMappingDO patientMappingDO=patientMappingDao.findByPatient(baseOperateLogDO.getPatient());
            if (patientMappingDO!=null){
                baseOperateLogDO.setPatient(patientMappingDO.getMappingCode());
            }
            DoctorMappingDO doctorMappingDO = doctorMappingDao.findByDoctor(baseOperateLogDO.getOperator());
            if (doctorMappingDO!=null){
                baseOperateLogDO.setOperator(doctorMappingDO.getMappingCode());
            }*/
            jdbcSqlServer.insertZsSqlserver(baseOperateLogDO);
        }catch (Exception e){
            e.printStackTrace();
        }
    }
    public MixEnvelop  findOperateLogList(String code,String name,String patientName,String doctorName,String startTime,String endTime,Integer page,Integer pageSize){
        MixEnvelop mixEnvelop = new MixEnvelop();
        String sql ="select t.id as \"id\"," +
                " t.code as \"code\"," +
                " t.name as \"name\"," +
                " t.operator as \"operator\"," +
                " t.operator_name as \"operator_name\"," +
                " t.patient as \"patient\"," +
                " t.patient_name as \"patient_name\"," ;
        if("xm_ykyy_wx".equals(wxId)){
            if (flag){
                sql+="date_format(t.create_time, '%Y-%m-%d %H:%i:%s')  as \"createTime\",";
            }else {
                sql+="  to_char(t.create_time,'yyyy-MM-dd HH24:mi:ss') as \"createTime\",";
            }
        }else{
            sql+="date_format(t.create_time, '%Y-%m-%d %H:%i:%s')  as \"createTime\",";
        }
        sql+= " t.relation_type as \"relation_type\"," +
                " t.relation_code as \"relation_code\"" +
                " from base_operate_log t where t.is_del='1'";
        if (StringUtils.isNoneBlank(code)){
            sql+=" and t.code='"+code+"'";
        }
        if (StringUtils.isNoneBlank(name)){
            sql+=" and t.name like '%"+name+"%'";
        }
        if (StringUtils.isNoneBlank(patientName)){
            sql+=" and t.patient_name like '%"+patientName+"%'";
        }
        if (StringUtils.isNoneBlank(doctorName)){
            sql+=" and t.operator_name like '%"+doctorName+"%'";
        }
        if (StringUtils.isNotBlank(startTime)){
            if("xm_ykyy_wx".equals(wxId)){
                if (flag){
                    sql+=" and t.create_time > '"+startTime+"'";
                }else {
                    sql+=" and t.create_time > to_date('" + startTime + "', 'yyyy-mm-dd hh24:mi:ss') ";
                }
            }else{
                sql+=" and t.create_time > '"+startTime+"'";
            }
        }
        if (StringUtils.isNotBlank(endTime)){
            if("xm_ykyy_wx".equals(wxId)){
                if (flag){
                    sql+="  and t.create_time<='" + endTime + "'";
                }else {
                    sql+="  and t.create_time<= to_date('" + endTime + "','yyyy-mm-dd hh24:mi:ss')";
                }
            }else{
                sql+="  and t.create_time<='" + endTime + "'";
            }
        }
        sql+=" order by t.create_time desc ";
        List<Map<String,Object>> list = hibenateUtils.createSQLQuery(sql,page,pageSize);
        String sqlcount = "SELECT COUNT(1) AS \"total\" FROM ("+sql+") q";
        Long count = 0L;
        List<Map<String,Object>> total = hibenateUtils.createSQLQuery(sqlcount);
        if(total!=null){
            //mysql 与 Oracle 聚合函数返回类型不一致,需要判断装换
            count = hibenateUtils.objTransformLong(total.get(0).get("total"));
        }
        mixEnvelop.setTotalCount(count.intValue());
        mixEnvelop.setDetailModelList(list);
        mixEnvelop.setPageSize(pageSize);
        mixEnvelop.setCurrPage(page);
        return mixEnvelop;
    }
}

+ 3 - 1
business/base-service/src/main/java/com/yihu/jw/hospital/httplog/service/WlyyHttpLogService.java

@ -64,7 +64,7 @@ public class WlyyHttpLogService  extends BaseJpaService<WlyyHttpLogDO, WlyyHttpL
        sql+=" a.name as \"patientName\"," +
                "b.name as \"doctorName\"" +
                " from wlyy_http_log t left join base_patient a on t.patient = a.id " +
                " left join base_doctor b on t.doctor = b.id where 1=1 and (t.code like '%Check%' or t.name = '合理用药审核接口')";
                " left join base_doctor b on t.doctor = b.id where 1=1 and ( t.name = '合理用药审核接口'  or t.code like '%Check%')";
        if (StringUtils.isNotBlank(startTime)){
            if("xm_ykyy_wx".equals(wxId)){
                if (flag){
@ -96,6 +96,7 @@ public class WlyyHttpLogService  extends BaseJpaService<WlyyHttpLogDO, WlyyHttpL
        if (StringUtils.isNotBlank(doctor)){
            sql+=" and b.name like '%"+doctor+"%'";
        }
        sql+=" order by t.create_time desc ";
        List<Map<String,Object>> list = hibenateUtils.createSQLQuery(sql,page,pageSize);
        String sqlcount = "SELECT COUNT(1) AS \"total\" FROM ("+sql+") q";
        Long count = 0L;
@ -176,6 +177,7 @@ public class WlyyHttpLogService  extends BaseJpaService<WlyyHttpLogDO, WlyyHttpL
        if (StringUtils.isNotBlank(responeKeyWord)){
            sql+=" and t.response like '%"+responeKeyWord+"%'";
        }
        sql+=" order by t.create_time desc";
        List<Map<String,Object>> list = hibenateUtils.createSQLQuery(sql,page,pageSize);
        String sqlcount = "SELECT COUNT(1) AS \"total\" FROM ("+sql+") q";
        Long count = 0L;

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

@ -28,9 +28,15 @@ public interface SystemMessageDao extends PagingAndSortingRepository<SystemMessa
    List<SystemMessageDO> queryByRelationCodeAndTypeIn(String relationCode,String[] type);
    //获取资质申请审核有效的未结束已发送的消息
    @Query("select a from SystemMessageDO a where a.type in ('401','408') and a.del='1' and a.over='1' and relationCode = ?1  ")
    @Query("select a from SystemMessageDO a where a.type in ('401','408') and a.del='1' and a.over='1' and a.relationCode = ?1  ")
    List<SystemMessageDO> findMessageByRelationCode(String relationCode);
    @Modifying
    @Query("delete from SystemMessageDO a  where a.receiver = ?1 and a.relationCode = ?2 and a.type =?3")
    int orderMessageDelByType(String doctor, String orderId,String type);
    SystemMessageDO findByRelationCodeAndReceiver(String relationCode,String receiver);
    @Query("update SystemMessageDO a set a.isRead=0,a.over = '0' where a.id = ?1")
    @Modifying
    Integer setSpecialistById(String id);

+ 37 - 0
business/base-service/src/main/java/com/yihu/jw/hospital/message/service/SystemMessageService.java

@ -10,8 +10,10 @@ import com.yihu.jw.entity.hospital.prescription.WlyyOutpatientDO;
import com.yihu.jw.hospital.message.dao.SystemMessageDao;
import com.yihu.jw.hospital.prescription.dao.OutpatientDao;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.MixEnvelop;
import com.yihu.jw.utils.StringUtil;
import com.yihu.jw.utils.YkyySMSService;
import com.yihu.jw.utils.hibernate.HibenateUtils;
import com.yihu.mysql.query.BaseJpaService;
import org.apache.commons.lang3.StringUtils;
import org.checkerframework.checker.units.qual.A;
@ -21,6 +23,8 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
 * @author zmk
@ -43,6 +47,8 @@ public class SystemMessageService extends BaseJpaService<SystemMessageDO,SystemM
    private YkyySMSService ykyySMSService;
    @Value("${wechat.id}")
    private String wechatId;
    @Autowired
    private HibenateUtils hibenateUtils;
    /**
@ -149,6 +155,37 @@ public class SystemMessageService extends BaseJpaService<SystemMessageDO,SystemM
        return msg;
    }
    /*private MixEnvelop findOutPatientMessage(String reciver ,Integer page ,Integer pageSize){
        String sql = "select b.id as \"id\"," +
                " b.content as \"content\"," +
                "b.saas_id as \"saasId\"," +
                "b.is_read as \"isRead\"," +
                "b.type as \"type\"," +
                "b.sender as \"sender\"," +
                "b.sender_name as \"senderName\"," +
                "b.receiver as \"receiver\"," +
                "b.receiver_name as \"receiverName\"," +
                "b.relation_type as \"relationType\"," +
                "b.relation_code as \"relationCode\"," +
                "b.relation_name as \"relationName\"," +
                "b.status as \"status\"," +
                "b.del as \"del\"," +
                "b.create_user as \"createUser\"," +
                "b.create_user_name as \"createUserName\"," +
                "b.create_time as \"createTime\"," +
                "b.update_user as \"updateUser\"," +
                "b.update_user_name as \"updateUserName\"," +
                "b.update_time as \"updateTime\" " +
                " from wlyy_outpatient t left join base_user_message b " +
                " on t.id = b.relation_code " +
                " where b.del=1 ";
        if (StringUtils.isNoneBlank(reciver)){
            sql+=" and b.reciver = '"+reciver+"'";
        }
        sql+=" and t.status = '0' order by b.create_time asc ";
        String sqlAppend = sql+" and t.status != '0' order by b.create_time desc";
        List<Map<String,Object>> listfront = hi
    }*/
}

+ 6 - 0
business/base-service/src/main/java/com/yihu/jw/hospital/prescription/dao/OutpatientDao.java

@ -89,5 +89,11 @@ public interface OutpatientDao extends PagingAndSortingRepository<WlyyOutpatient
    @Query("from WlyyOutpatientDO a where a.consumer = ?1 and a.status=1 and a.payStatus =1 order by a.createTime desc")
    List<WlyyOutpatientDO> findWlyyOutpatientDO(String patient);
    @Query("from WlyyOutpatientDO a where a.status=0 and a.payStatus =1 order by a.createTime desc")
    List<WlyyOutpatientDO> findDoctorRemindMessage();
    @Query("from WlyyOutpatientDO a where a.status = 0 and a.payStatus =1 and a.doctor=?1 and a.outpatientType =?2 and a.patient=?3")
    List<WlyyOutpatientDO> findByDoctorAndOutpatientType(String doctor,String outpatientType,String patient);
}

+ 82 - 7
business/base-service/src/main/java/com/yihu/jw/hospital/prescription/service/InspectionService.java

@ -1,23 +1,27 @@
package com.yihu.jw.hospital.prescription.service;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.jw.entity.hospital.consult.WlyyHospitalSysDictDO;
import com.yihu.jw.entity.hospital.prescription.WlyyInspectionDO;
import com.yihu.jw.entity.hospital.prescription.WlyyInspectionPartsDictDO;
import com.yihu.jw.entity.hospital.prescription.WlyyPrescriptionDO;
import com.yihu.jw.entity.hospital.prescription.*;
import com.yihu.jw.hospital.consult.dao.BaseAdviceTreatmentDao;
import com.yihu.jw.hospital.dict.WlyyHospitalSysDictDao;
import com.yihu.jw.hospital.prescription.dao.InspectionPartsDictDao;
import com.yihu.jw.hospital.prescription.dao.PrescriptionDao;
import com.yihu.jw.hospital.prescription.dao.WlyyInspectionDao;
import com.yihu.jw.hospital.httplog.service.BaseOperateLogService;
import com.yihu.jw.hospital.prescription.dao.*;
import com.yihu.jw.hospital.prescription.service.entrance.EntranceService;
import com.yihu.jw.restmodel.web.MixEnvelop;
import com.yihu.jw.utils.hibernate.HibenateUtils;
import com.yihu.mysql.query.BaseJpaService;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.util.Date;
import java.util.List;
import java.util.Map;
@ -27,7 +31,7 @@ import java.util.Map;
@Service
@Transactional
public class InspectionService extends BaseJpaService<WlyyInspectionDO, WlyyInspectionDao> {
    private static final Logger logger = LoggerFactory.getLogger(InspectionService.class);
    @Value("${demo.flag}")
    private boolean demoFlag;
    @Autowired
@ -38,6 +42,16 @@ public class InspectionService extends BaseJpaService<WlyyInspectionDO, WlyyInsp
    private EntranceService entranceService;
    @Autowired
    private HibenateUtils hibenateUtils;
    @Autowired
    private BaseOperateLogService baseOperateLogService;
    @Autowired
    private BaseAdviceTreatmentDao baseAdviceTreatmentDao;
    @Autowired
    private PrescriptionInfoDao prescriptionInfoDao;
    @Autowired
    private ObjectMapper objectMapper;
    @Autowired
    private OutpatientDao outpatientDao;
    public List<WlyyInspectionPartsDictDO> findByPartsCode(String parentCode) {
        return inspectionPartsDictDao.findByParentCode(parentCode);
@ -79,5 +93,66 @@ public class InspectionService extends BaseJpaService<WlyyInspectionDO, WlyyInsp
        mixEnvelop.setCurrPage(page);
        return mixEnvelop;
    }
    public BaseAdviceTreatmentDO saveTreatment(String json,String adviceJson) throws Exception{
        BaseAdviceTreatmentDO baseAdviceTreatmentDO=objectMapper.readValue(adviceJson,BaseAdviceTreatmentDO.class);
        baseAdviceTreatmentDO.setDel(1);
        baseAdviceTreatmentDO.setCreateTime(new Date());
        baseAdviceTreatmentDO=baseAdviceTreatmentDao.save(baseAdviceTreatmentDO);
        if (StringUtils.isNotBlank(json)) {
            //药品
            List<WlyyPrescriptionInfoDO> infoDOs = (List<WlyyPrescriptionInfoDO>) com.alibaba.fastjson.JSONArray.parseArray(json, WlyyPrescriptionInfoDO.class);
            for (WlyyPrescriptionInfoDO info : infoDOs) {
                info.setDel(1);
                info.setPrescriptionId(baseAdviceTreatmentDO.getId());
            }
            //保存药品信息
            prescriptionInfoDao.save(infoDOs);
            logger.info("123");
            Double price = getInfoFee(infoDOs);
            logger.info("12312313213" + price);
            //计算药品费用
            baseAdviceTreatmentDO.setDrugFee(price);
            baseAdviceTreatmentDao.save(baseAdviceTreatmentDO);
        }
        WlyyOutpatientDO wlyyOutpatientDO=outpatientDao.findById(baseAdviceTreatmentDO.getRelationCode());
        if(wlyyOutpatientDO!=null){
            wlyyOutpatientDO.setIcd10Name(baseAdviceTreatmentDO.getDiagnosisName());
            wlyyOutpatientDO.setStatus("2");
            wlyyOutpatientDO.setAdvice(baseAdviceTreatmentDO.getTreatment());
            outpatientDao.save(wlyyOutpatientDO);
        }
        return baseAdviceTreatmentDO;
    }
    /**
     * 计算药品费用
     *
     * @param infoDOs
     * @return
     */
    public Double getInfoFee(List<WlyyPrescriptionInfoDO> infoDOs) {
        DecimalFormat df = new DecimalFormat("#.00");
        Double fee = 0D;
        if (infoDOs != null && infoDOs.size() > 0) {
            for (WlyyPrescriptionInfoDO info : infoDOs) {
                logger.error("getInfoFee===========Quantity:" + info.getQuantity());
                /*      Integer quantity = Integer.parseInt(info.getQuantity());*/
                logger.error("getInfoFee===========PackRetprice:" + info.getPackRetprice());
                /*   fee += info.getPackRetprice() * quantity;*/
                logger.error("getInfoFee===========:" + fee);
                BigDecimal total = new BigDecimal(0);
                BigDecimal quantity = new BigDecimal(info.getQuantity());
                BigDecimal price = new BigDecimal(info.getPackRetprice());
                total = total.add(quantity.multiply(price));
                Double f1 = total.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
                fee += f1;
            }
            logger.error("getInfoFee===========:" + fee);
        }
        return fee;
    }
}

+ 1 - 1
business/base-service/src/main/java/com/yihu/jw/hospital/prescription/service/PrescriptionExpressageService.java

@ -576,7 +576,7 @@ public class PrescriptionExpressageService extends BaseJpaService<WlyyPrescripti
            for (WlyyPrescriptionExpressageLogDO pushlog: pushSFLogs) {
                //判断是否有已收件的路由节点
                if("80".equals(pushlog.getOpCode())||"8000".equals(pushlog.getOpCode())){
                if("80".equals(pushlog.getOpCode())||"8000".equals(pushlog.getOpCode())||"130".equals(pushlog.getOpCode())){
                    isContainEndRoutInfo = true;
                }

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

@ -32,6 +32,7 @@ import com.yihu.jw.entity.base.patient.BasePatientBusinessDO;
import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.entity.base.patient.PatientMedicareCardDO;
import com.yihu.jw.entity.base.sms.SmsTemplateDO;
import com.yihu.jw.entity.base.words.BaseSensitiveDO;
import com.yihu.jw.entity.base.wx.*;
import com.yihu.jw.entity.base.yx.YxTokenMappingDO;
import com.yihu.jw.entity.hospital.consult.WlyyDoctorClinicRoomDO;
@ -50,6 +51,7 @@ import com.yihu.jw.entity.hospital.prescription.*;
import com.yihu.jw.entity.order.BusinessOrderDO;
import com.yihu.jw.entity.ylzinfo.OauthYlzConfigDO;
import com.yihu.jw.file_upload.FileUploadService;
import com.yihu.jw.hospital.consult.dao.BaseAdviceTreatmentDao;
import com.yihu.jw.hospital.consult.dao.HospitalWaitingRoomDao;
import com.yihu.jw.hospital.consult.dao.WlyyConsultAdviceDao;
import com.yihu.jw.hospital.dict.WlyyChargeDictDao;
@ -59,6 +61,7 @@ import com.yihu.jw.hospital.doctor.dao.PatientRegisterTimeDao;
import com.yihu.jw.hospital.doctor.dao.WlyyDoctorOnlineTimeDao;
import com.yihu.jw.hospital.drugstore.dao.BaseDrugStoreDao;
import com.yihu.jw.hospital.httplog.dao.WlyyHttpLogDao;
import com.yihu.jw.hospital.httplog.service.BaseOperateLogService;
import com.yihu.jw.hospital.mapping.dao.DoctorMappingDao;
import com.yihu.jw.hospital.mapping.dao.PatientMappingDao;
import com.yihu.jw.hospital.mapping.service.DoctorMappingService;
@ -113,6 +116,8 @@ 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.write.*;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
@ -133,15 +138,21 @@ 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.IOException;
import java.io.OutputStream;
import java.lang.Boolean;
import java.lang.management.ManagementFactory;
import java.math.BigDecimal;
import java.net.URL;
import java.text.DecimalFormat;
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.
@ -300,7 +311,14 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
    private TnyyEntranceService tnyyEntranceService;
    @Autowired
    private BaseJpushTemplateDao baseJpushTemplateDao;
    /*@Autowired
    HikariDataSource dataSource;*/
    @Autowired
    private BaseSensitiveDao baseSensitiveDao;
    @Autowired
    private BaseOperateLogService baseOperateLogService;
    @Autowired
    private BaseAdviceTreatmentDao baseAdviceTreatmentDao;
    @Value("${demo.flag}")
    private boolean demoFlag;
@ -326,7 +344,26 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
            return null;
        }
        logger.info("findOutpatientList patNo " + patNo);
        return entranceService.BS30025(patNo, null, startTime, endTime, demoFlag,ksdm);
        List<WlyyOutpatientVO> wlyyOutpatientVOList  =  entranceService.BS30025(patNo, null, startTime, endTime, demoFlag,ksdm);
        if (StringUtils.isNoneBlank(ksdm)){
            if (!ksdm.equalsIgnoreCase("1500010")){
                List<WlyyOutpatientVO> wlyyOutpatientVOList1  =  entranceService.BS30025(patNo, null, startTime, endTime, demoFlag,"1500010");
                if (wlyyOutpatientVOList!=null&&wlyyOutpatientVOList.size()!=0){
                    if(wlyyOutpatientVOList1!=null&&wlyyOutpatientVOList1.size()!=0){
                        for (WlyyOutpatientVO wlyyOutpatientVO:wlyyOutpatientVOList1){
                            logger.info("==="+wlyyOutpatientVO);
                            if (wlyyOutpatientVO!=null){
                                wlyyOutpatientVOList.add(wlyyOutpatientVO);
                            }
                        }
                    }
                }else {
                    wlyyOutpatientVOList = new ArrayList<>();
                    wlyyOutpatientVOList = wlyyOutpatientVOList1;
                }
            }
        }
        return wlyyOutpatientVOList;
    }
    /**
@ -627,82 +664,95 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
        } else {
            prescriptionDOs = prescriptionDao.findByOutpatientId(outpatientId);
        }
        List<WlyyPrescriptionVO> prescriptionVOs = new ArrayList<>();
        List<BusinessOrderDO> businessOrders = new ArrayList<>();
        BusinessOrderDO businessOrder = new BusinessOrderDO();
        if (prescriptionDOs != null && prescriptionDOs.size() > 0) {
            convertToModels(prescriptionDOs, prescriptionVOs, WlyyPrescriptionVO.class);
            for (WlyyPrescriptionVO vo : prescriptionVOs) {
                List<WlyyPrescriptionCheckDO> prescriptionCheckDO = prescriptionCheckDao.findByPrescriptionId(vo.getId());
                //疾病信息
                vo.setDiagnosisVOs(findDiagnosisById(vo.getId()));
                if(null!=prescriptionCheckDO&&prescriptionCheckDO.size()>0){
                    vo.setDispUser(prescriptionCheckDO.get(0).getOperate());
                    vo.setDispUserName(prescriptionCheckDO.get(0).getOperateName());
                }
                //药品信息
                List<WlyyPrescriptionInfoVO> infoVOs = new ArrayList<>();
                System.out.println("=====PrescriptionId======"+vo.getId());
                convertToModels(prescriptionInfoDao.findByPrescriptionId(vo.getId(), 1), infoVOs, WlyyPrescriptionInfoVO.class);
                vo.setInfoVOs(infoVOs);
                //检查检验信息
                List<WlyyInspectionVO> inspectionVOs = new ArrayList<>();
                vo.setInspectionVOs(convertToModels(wlyyInspectionDao.findByPrescriptionId(vo.getId(), 1), inspectionVOs, WlyyInspectionVO.class));
                if (wxId.equalsIgnoreCase("xm_zsyy_wx")) {
                    WlyyPrescriptionEmrDO wlyyPrescriptionEmrDO1 = prescriptionEmrDao.findEmrByPrescriptionId(vo.getId());
                    if (wlyyPrescriptionEmrDO1 != null) {
                        vo.setWlyyPrescriptionEmrDO(wlyyPrescriptionEmrDO1);
                    } else {
                        WlyyPrescriptionEmrDO wlyyPrescriptionEmrDO = readOutPatientXml(outpatientDO.getOriginRegisterNo());
                        //电子病历
                        vo.setWlyyPrescriptionEmrDO(wlyyPrescriptionEmrDO);
        if (!"2".equalsIgnoreCase(outpatientDO.getOutpatientType())){
            List<WlyyPrescriptionVO> prescriptionVOs = new ArrayList<>();
            List<BusinessOrderDO> businessOrders = new ArrayList<>();
            BusinessOrderDO businessOrder = new BusinessOrderDO();
            if (prescriptionDOs != null && prescriptionDOs.size() > 0) {
                convertToModels(prescriptionDOs, prescriptionVOs, WlyyPrescriptionVO.class);
                for (WlyyPrescriptionVO vo : prescriptionVOs) {
                    List<WlyyPrescriptionCheckDO> prescriptionCheckDO = prescriptionCheckDao.findByPrescriptionId(vo.getId());
                    //疾病信息
                    vo.setDiagnosisVOs(findDiagnosisById(vo.getId()));
                    if(null!=prescriptionCheckDO&&prescriptionCheckDO.size()>0){
                        vo.setDispUser(prescriptionCheckDO.get(0).getOperate());
                        vo.setDispUserName(prescriptionCheckDO.get(0).getOperateName());
                    }
                } else if (wxId.equalsIgnoreCase("xm_xzzx_wx")) {
                    WlyyPrescriptionEmrDO wlyyPrescriptionEmrDO1 = prescriptionEmrDao.findEmrByPrescriptionId(vo.getId());
                    if (wlyyPrescriptionEmrDO1 != null) {
                        vo.setWlyyPrescriptionEmrDO(wlyyPrescriptionEmrDO1);
                    } else {
                        List<WlyyPrescriptionEmrDO> listEmr = xzzxEntranceService.selectHistoryEmr(hisPatient,"");
                        if (null!=listEmr&&listEmr.size()>0){
                            vo.setWlyyPrescriptionEmrDO(listEmr.get(0));
                    //药品信息
                    List<WlyyPrescriptionInfoVO> infoVOs = new ArrayList<>();
                    System.out.println("=====PrescriptionId======"+vo.getId());
                    convertToModels(prescriptionInfoDao.findByPrescriptionId(vo.getId(), 1), infoVOs, WlyyPrescriptionInfoVO.class);
                    vo.setInfoVOs(infoVOs);
                    //检查检验信息
                    List<WlyyInspectionVO> inspectionVOs = new ArrayList<>();
                    vo.setInspectionVOs(convertToModels(wlyyInspectionDao.findByPrescriptionId(vo.getId(), 1), inspectionVOs, WlyyInspectionVO.class));
                    if (wxId.equalsIgnoreCase("xm_zsyy_wx")) {
                        WlyyPrescriptionEmrDO wlyyPrescriptionEmrDO1 = prescriptionEmrDao.findEmrByPrescriptionId(vo.getId());
                        if (wlyyPrescriptionEmrDO1 != null) {
                            vo.setWlyyPrescriptionEmrDO(wlyyPrescriptionEmrDO1);
                        } else {
                            WlyyPrescriptionEmrDO wlyyPrescriptionEmrDO = readOutPatientXml(outpatientDO.getOriginRegisterNo());
                            //电子病历
                            vo.setWlyyPrescriptionEmrDO(wlyyPrescriptionEmrDO);
                        }
                    } else if (wxId.equalsIgnoreCase("xm_xzzx_wx")) {
                        WlyyPrescriptionEmrDO wlyyPrescriptionEmrDO1 = prescriptionEmrDao.findEmrByPrescriptionId(vo.getId());
                        if (wlyyPrescriptionEmrDO1 != null) {
                            vo.setWlyyPrescriptionEmrDO(wlyyPrescriptionEmrDO1);
                        } else {
                            List<WlyyPrescriptionEmrDO> listEmr = xzzxEntranceService.selectHistoryEmr(hisPatient,"");
                            if (null!=listEmr&&listEmr.size()>0){
                                vo.setWlyyPrescriptionEmrDO(listEmr.get(0));
                            }
                        }
                    }else {
                        WlyyPrescriptionEmrDO wlyyPrescriptionEmrDO1 = prescriptionEmrDao.findEmrByPrescriptionId(vo.getId());
                        if (wlyyPrescriptionEmrDO1 != null) {
                            vo.setWlyyPrescriptionEmrDO(wlyyPrescriptionEmrDO1);
                        }
                    }
                }else {
                    WlyyPrescriptionEmrDO wlyyPrescriptionEmrDO1 = prescriptionEmrDao.findEmrByPrescriptionId(vo.getId());
                    if (wlyyPrescriptionEmrDO1 != null) {
                        vo.setWlyyPrescriptionEmrDO(wlyyPrescriptionEmrDO1);
                    //支付信息
                    BusinessOrderDO businessOrderDO = businessOrderDao.selectByRelationCode(vo.getId());
                    if (null!=businessOrderDO){
                        businessOrders.add(businessOrderDO);
                    }
                }
                //支付信息
                BusinessOrderDO businessOrderDO = businessOrderDao.selectByRelationCode(vo.getId());
                if (null!=businessOrderDO){
                    businessOrders.add(businessOrderDO);
                }
            }
            rs.put("prescriptions", prescriptionVOs);
            rs.put("businessOrder", businessOrders);
        }
        rs.put("prescriptions", prescriptionVOs);
        rs.put("businessOrder", businessOrders);
            //物流信息
            List<WlyyPrescriptionExpressageDO> expressageDOs = prescriptionExpressageDao.findByOutpatientId(outpatientId);
            if (expressageDOs != null && expressageDOs.size() > 0) {
                rs.put("expressage", convertToModel(expressageDOs.get(0), WlyyPrescriptionExpressageVO.class));
            } else {
                rs.put("expressage", null);
            }
        //物流信息
        List<WlyyPrescriptionExpressageDO> expressageDOs = prescriptionExpressageDao.findByOutpatientId(outpatientId);
        if (expressageDOs != null && expressageDOs.size() > 0) {
            rs.put("expressage", convertToModel(expressageDOs.get(0), WlyyPrescriptionExpressageVO.class));
        } else {
            rs.put("expressage", null);
            //物流配送新
            List<WlyyPrescriptionExpressageLogDO> expressageLogDOs = prescriptionExpressageLogDao.queryByOutpatientIdOrderByCreateTimeDesc(outpatientId);
            List<WlyyPrescriptionExpressageLogVO> expressageLogVOs = new ArrayList<>();
            if (expressageLogDOs != null && expressageLogDOs.size() > 0) {
                rs.put("expressageLogs", convertToModels(expressageLogDOs, expressageLogVOs, WlyyPrescriptionExpressageLogVO.class));
            } else {
                rs.put("expressageLogs", null);
            }
        }else {
            List<BaseAdviceTreatmentDO>  treatmentDOS=baseAdviceTreatmentDao.findByRelationCode(outpatientId);
            if (treatmentDOS!=null&&treatmentDOS.size()>0){
                //药品
                List<WlyyPrescriptionInfoDO> infoDOList=prescriptionInfoDao.findByPrescriptionId(treatmentDOS.get(0).getId(), 1);
                treatmentDOS.get(0).setInfoList(infoDOList);
                rs.put("treatments",treatmentDOS.get(0));
            }else{
                rs.put("treatments","");
            }
        }
        //物流配送新
        List<WlyyPrescriptionExpressageLogDO> expressageLogDOs = prescriptionExpressageLogDao.queryByOutpatientIdOrderByCreateTimeDesc(outpatientId);
        List<WlyyPrescriptionExpressageLogVO> expressageLogVOs = new ArrayList<>();
        if (expressageLogDOs != null && expressageLogDOs.size() > 0) {
            rs.put("expressageLogs", convertToModels(expressageLogDOs, expressageLogVOs, WlyyPrescriptionExpressageLogVO.class));
        } else {
            rs.put("expressageLogs", null);
        }
        //预约记录
        List<WlyyPatientRegisterTimeDO> timeDOs = patientRegisterTimeDao.findByOutpatientId(outpatientId);
@ -922,7 +972,7 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
        WlyyOutpatientDO outpatientDO = objectMapper.readValue(outpatientJson, WlyyOutpatientDO.class);
        BasePatientDO patientDO = basePatientDao.findById(outpatientDO.getPatient());
        BaseDoctorDO doctorDO = baseDoctorDao.findById(outpatientDO.getDoctor());
        outpatientDO.setIsAgree("1");
        outpatientDO.setMjz("mz");
        outpatientDO.setStatus("0");
        outpatientDO.setCreateTime(new Date());
@ -1499,7 +1549,7 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
        }
        logger.info("findDoctorByHospitalAndDept sql:" + sql);
        logger.info("v sql:" + sql);
        List<Map<String, Object>> list = hibenateUtils.createSQLQuery(sql, params);
@ -1705,29 +1755,15 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
                        "\td.req_fee as \"xtzxFee\"\n" +
                        "FROM\n" +
                        "\tbase_doctor t\n" +
                        "LEFT JOIN wlyy_charge_dict m ON t.twfz_charge_type = m.charge_type\n" +
                        "LEFT JOIN wlyy_charge_dict a ON t.spfz_charge_type = a.charge_type\n" +
                        "LEFT JOIN wlyy_charge_dict b ON t.spzx_charge_type = b.charge_type\n" +
                        "LEFT JOIN wlyy_charge_dict v ON t.twzx_charge_type = v.charge_type\n" +
                        "LEFT JOIN wlyy_charge_dict d ON t.twzx_charge_type = d.charge_type\n" +
                        " LEFT JOIN wlyy_charge_dict g ON t.jyzx_charge_type = g.charge_type\n" +
                        "LEFT JOIN wlyy_charge_dict m ON t.twfz_charge_type = m.charge_type and m.is_del='1'\n" +
                        "LEFT JOIN wlyy_charge_dict a ON t.spfz_charge_type = a.charge_type and a.is_del='1'\n" +
                        "LEFT JOIN wlyy_charge_dict b ON t.spzx_charge_type = b.charge_type and b.is_del='1'\n" +
                        "LEFT JOIN wlyy_charge_dict v ON t.twzx_charge_type = v.charge_type and v.is_del='1'\n" +
                        "LEFT JOIN wlyy_charge_dict d ON t.twzx_charge_type = d.charge_type and d.is_del='1'\n" +
                        " LEFT JOIN wlyy_charge_dict g ON t.jyzx_charge_type = g.charge_type and g.is_del='1'\n" +
                        "WHERE t.id = '"+doctor.get("id")+"' ";
                chargeDictDOLists =  hibenateUtils.createSQLQuery(sqlCharge);
                /*if (null!=doctor.get("chargeType")){
                    String chargeTypeList = doctor.get("chargeType").toString();
                    if (chargeType.contains(",")){
                        chargeTypeList = chargeType.replace(",","','");
                    }
                    String sqlCharge = "select charge_type as \"chargeType\",charge_name as \"chargeName\"," +
                            "req_fee  as \"reqFee\",zj_fee  as \"zjFee\",xt_fee  as \"xtFee\",dept_type_code as \"deptTypeCode\" " +
                            " from wlyy_charge_dict where 1=1";
                    sqlCharge+=" and charge_type in ( '"+chargeTypeList+"')";
                    if (StringUtils.isNoneBlank(deptTyepCode)){
                        sqlCharge+=" and dept_type_code in ( '"+deptTyepCode+"')";
                    }
                    chargeDictDOLists =  hibenateUtils.createSQLQuery(sqlCharge);
                }*/
                doctor.put("chargeTypeList",chargeDictDOLists);
            }
            if (StringUtils.isNotBlank(doctorCode)) {
@ -3119,24 +3155,24 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
        if (StringUtils.isNotBlank(startTime)) {
            if ("xm_ykyy_wx".equals(wxId)) {
                if (flag){
                    totalSql += " and e.create_time >= str_to_date('" + startTime + " 00:00:00','YYYY-MM-DD HH24:MI:SS')";
                    totalSql += " and p.create_time >= str_to_date('" + startTime + " 00:00:00','YYYY-MM-DD HH24:MI:SS')";
                }else {
                    totalSql += " and e.create_time >= to_date('" + startTime + " 00:00:00','YYYY-MM-DD HH24:MI:SS')";
                    totalSql += " and p.create_time >= to_date('" + startTime + " 00:00:00','YYYY-MM-DD HH24:MI:SS')";
                }
            } else {
                totalSql += " AND e.create_time >='" + startTime + " 00:00:00'";
                totalSql += " AND p.create_time >='" + startTime + " 00:00:00'";
            }
        }
        if (StringUtils.isNotBlank(endTime)) {
            if ("xm_ykyy_wx".equals(wxId)) {
                if (flag){
                    totalSql += " and e.create_time <= str_to_date('" + endTime + " 23:59:59','YYYY-MM-DD HH24:MI:SS')";
                    totalSql += " and p.create_time <= str_to_date('" + endTime + " 23:59:59','YYYY-MM-DD HH24:MI:SS')";
                }else {
                    totalSql += " and e.create_time <= to_date('" + endTime + " 23:59:59','YYYY-MM-DD HH24:MI:SS')";
                    totalSql += " and p.create_time <= to_date('" + endTime + " 23:59:59','YYYY-MM-DD HH24:MI:SS')";
                }
            } else {
                totalSql += " AND e.create_time <='" + endTime + " 23:59:59'";
                totalSql += " AND p.create_time <='" + endTime + " 23:59:59'";
            }
        }
@ -3205,29 +3241,29 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
        if (StringUtils.isNotBlank(startTime)) {
            if ("xm_ykyy_wx".equals(wxId)) {
                if (flag){
                    sql += " and e.create_time >= str_to_date('" + startTime + " 00:00:00','YYYY-MM-DD HH24:MI:SS')";
                    sql += " and p.create_time >= str_to_date('" + startTime + " 00:00:00','YYYY-MM-DD HH24:MI:SS')";
                }else {
                    sql += " and e.create_time >= to_date('" + startTime + " 00:00:00','YYYY-MM-DD HH24:MI:SS')";
                    sql += " and p.create_time >= to_date('" + startTime + " 00:00:00','YYYY-MM-DD HH24:MI:SS')";
                }
            } else {
                sql += " AND e.create_time >='" + startTime + " 00:00:00'";
                sql += " AND p.create_time >='" + startTime + " 00:00:00'";
            }
        }
        if (StringUtils.isNotBlank(endTime)) {
            if ("xm_ykyy_wx".equals(wxId)) {
                if (flag){
                    sql += " and e.create_time <= str_to_date('" + endTime + " 23:59:59','YYYY-MM-DD HH24:MI:SS')";
                    sql += " and p.create_time <= str_to_date('" + endTime + " 23:59:59','YYYY-MM-DD HH24:MI:SS')";
                }else {
                    sql += " and e.create_time <= to_date('" + endTime + " 23:59:59','YYYY-MM-DD HH24:MI:SS')";
                    sql += " and p.create_time <= to_date('" + endTime + " 23:59:59','YYYY-MM-DD HH24:MI:SS')";
                }
            } else {
                sql += " AND e.create_time <='" + endTime + " 23:59:59'";
                sql += " AND p.create_time <='" + endTime + " 23:59:59'";
            }
        }
        sql +=" order by e.create_time desc ";
        sql +=" order by p.create_time desc ";
        /*       sql += " LIMIT " + (page - 1) * size + "," + size + "";*/
        List<Map<String, Object>> list = hibenateUtils.createSQLQuery(sql, page, size);
        for (Map<String, Object> map : list) {
@ -3695,7 +3731,7 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
        return rs.size();
    }
    @Transactional(readOnly = true)
    public Map<String, Object> findDoctorInfo(String doctor, String withWork,String patient) {
        BaseDoctorDO doctorDO = baseDoctorDao.findById(doctor);
        Map<String, Object> rs = new HashedMap();
@ -3730,39 +3766,7 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
            rs.put("sex",doctorDO.getSex());
            rs.put("popularity",doctorDO.getPopularity());
            rs.put("qrcode",doctorDO.getQrcode());
            //号别
            /*String deptTyepCode = "";
            if ("xm_zsyy_wx".equalsIgnoreCase(wechatId)){
                deptTyepCode = "6";
                List<BaseDoctorHospitalDO> depts = baseDoctorHospitalDao.findByDoctorCode(doctor);
                if (null!=depts&&depts.size()>0){
                    BaseDoctorHospitalDO baseDoctorHospitalDO = depts.get(0);
                    String deptcode =  baseDoctorHospitalDO.getDeptCode();
                    String hosptitalCode = baseDoctorHospitalDO.getOrgCode();
                    List<DictHospitalDeptDO> dictHospitalDeptDO = dictHospitalDeptDao.findByOrgCodeAndCode(hosptitalCode,deptcode);
                    if(null!=dictHospitalDeptDO&&dictHospitalDeptDO.size()>0){
                        if (StringUtils.isNotBlank(dictHospitalDeptDO.get(0).getDeptTypeCode())){
                            deptTyepCode = dictHospitalDeptDO.get(0).getDeptTypeCode();
                        }
                    }
                }
            }*/
            List<Map<String,Object>> chargeDictDOLists = new ArrayList<>();
            /*String chargeType = doctorDO.getChargeType();
            if (StringUtils.isNotBlank(chargeType)){
                if (chargeType.contains(",")){
                    chargeType = chargeType.replace(",","','");
                }
                String sqlCharge = "select charge_type as \"chargeType\",charge_name as \"chargeName\"," +
                        "req_fee  as \"reqFee\",zj_fee  as \"zjFee\",xt_fee  as \"xtFee\",dept_type_code as \"deptTypeCode\" " +
                        " from wlyy_charge_dict where 1=1";
                sqlCharge+=" and charge_type in ( '"+chargeType+"')";
                if (StringUtils.isNoneBlank(deptTyepCode)){
                    sqlCharge+=" and dept_type_code in ( '"+deptTyepCode+"')";
                }
                chargeDictDOLists =  hibenateUtils.createSQLQuery(sqlCharge);
            }*/
            String sqlCharge = "SELECT\n" +
                    "\tm.req_fee as \"twfzFee\",\n" +
                    "\ta.req_fee as \"spfzFee\",\n" +
@ -3772,14 +3776,15 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
                    "\td.req_fee as \"xtzxFee\"\n" +
                    "FROM\n" +
                    "\tbase_doctor t\n" +
                    "LEFT JOIN wlyy_charge_dict m ON t.twfz_charge_type = m.charge_type\n" +
                    "LEFT JOIN wlyy_charge_dict a ON t.spfz_charge_type = a.charge_type\n" +
                    "LEFT JOIN wlyy_charge_dict b ON t.spzx_charge_type = b.charge_type\n" +
                    "LEFT JOIN wlyy_charge_dict v ON t.twzx_charge_type = v.charge_type\n" +
                    "LEFT JOIN wlyy_charge_dict d ON t.xtfz_charge_type = d.charge_type\n" +
                    " LEFT JOIN wlyy_charge_dict g ON t.jyzx_charge_type = g.charge_type\n" +
                    "LEFT JOIN wlyy_charge_dict m ON t.twfz_charge_type = m.charge_type and m.is_del='1'\n" +
                    "LEFT JOIN wlyy_charge_dict a ON t.spfz_charge_type = a.charge_type and a.is_del='1'\n" +
                    "LEFT JOIN wlyy_charge_dict b ON t.spzx_charge_type = b.charge_type and b.is_del='1'\n" +
                    "LEFT JOIN wlyy_charge_dict v ON t.twzx_charge_type = v.charge_type and v.is_del='1'\n" +
                    "LEFT JOIN wlyy_charge_dict d ON t.xtfz_charge_type = d.charge_type and d.is_del='1'\n" +
                    " LEFT JOIN wlyy_charge_dict g ON t.jyzx_charge_type = g.charge_type and g.is_del='1'\n" +
                    "WHERE t.id = '"+doctorDO.getId()+"' ";
            chargeDictDOLists =  hibenateUtils.createSQLQuery(sqlCharge);
            //System.out.println(chargeDictDOLists.get(1));
            rs.put("chargeTypeList",chargeDictDOLists);
            //机构科室信息
            List<BaseDoctorHospitalDO> hospitalDOs = baseDoctorHospitalDao.findByDoctorCode(doctorDO.getId());
@ -3926,6 +3931,7 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
                    }
                }*/
                List<com.alibaba.fastjson.JSONArray> waitinglist = new ArrayList<>();
                List<BaseSensitiveDO> listSensitive = (List<BaseSensitiveDO>) baseSensitiveDao.findAll();
                if (scoreList != null && scoreList.size() > 0) {
                    List<String> stringList = new ArrayList<>();
                    for (Map<String, Object> scorepatient : scoreList) {
@ -3939,7 +3945,7 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
                        }
                        String content = (String)scorepatient.get("content");
                        if (StringUtils.isNotEmpty(content)){
                            String replace = baseSensitiveFilterWordsService.filterSensitiveWords(content);
                            String replace = baseSensitiveFilterWordsService.filterSensitiveWords(content,listSensitive);
                            scorepatient.put("content",replace);
                        }
@ -4059,13 +4065,13 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
                    "\td.req_fee as \"xtzxFee\"\n" +
                    "FROM\n" +
                    "\tbase_doctor t\n" +
                    "LEFT JOIN wlyy_charge_dict m ON t.twfz_charge_type = m.charge_type\n" +
                    "LEFT JOIN wlyy_charge_dict a ON t.spfz_charge_type = a.charge_type\n" +
                    "LEFT JOIN wlyy_charge_dict b ON t.spzx_charge_type = b.charge_type\n" +
                    "LEFT JOIN wlyy_charge_dict v ON t.twzx_charge_type = v.charge_type\n" +
                    "LEFT JOIN wlyy_charge_dict d ON t.xtfz_charge_type = d.charge_type\n" +
                    " LEFT JOIN wlyy_charge_dict g ON t.jyzx_charge_type = g.charge_type\n" +
                    "WHERE t.id = '"+doctorDO.getId()+"' ";
                    "LEFT JOIN wlyy_charge_dict m ON t.twfz_charge_type = m.charge_type and m.is_del='1'\n" +
                    "LEFT JOIN wlyy_charge_dict a ON t.spfz_charge_type = a.charge_type and a.is_del='1'\n" +
                    "LEFT JOIN wlyy_charge_dict b ON t.spzx_charge_type = b.charge_type and b.is_del='1'\n" +
                    "LEFT JOIN wlyy_charge_dict v ON t.twzx_charge_type = v.charge_type and v.is_del='1'\n" +
                    "LEFT JOIN wlyy_charge_dict d ON t.xtfz_charge_type = d.charge_type and d.is_del='1'\n" +
                    " LEFT JOIN wlyy_charge_dict g ON t.jyzx_charge_type = g.charge_type and g.is_del='1'\n" +
                    "WHERE t.id = '"+doctorDO.getId()+"'";
            chargeDictDOLists =  hibenateUtils.createSQLQuery(sqlCharge);
            rs.put("chargeTypeList",chargeDictDOLists);
            //机构科室信息
@ -4178,6 +4184,8 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
            }
            else if("2".equalsIgnoreCase(wlyyOutpatientDO.getType())&&"3".equalsIgnoreCase(wlyyOutpatientDO.getOutpatientType())){
                type="17";
            }else if("2".equalsIgnoreCase(wlyyOutpatientDO.getOutpatientType())){
                type="12";
            }
            description = "居民取消";
            if (StringUtils.isNoneBlank(type)){
@ -4362,23 +4370,32 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
                contentMsg = "您发起的视频咨询已被"+outpatientDO.getDoctorName()+"接诊,请留意医生发送的消息。";
                first = outpatientDO.getConsumerName() + ",您好!您发起的视频咨询,医生已接诊";
            }
            if ("12".equals(type)) {
                contentMsg = "您发起的专科协同已被"+outpatientDO.getDoctorName()+"接诊,请留意医生发送的消息。";
                first = outpatientDO.getConsumerName() + ",您好!您发起的专科协同,医生已接诊";
                return;
            }
            if ("15".equals(type)) {
                contentMsg = "您发起的家医咨询已被"+outpatientDO.getDoctorName()+"接诊,请留意医生发送的消息。";
                first = outpatientDO.getConsumerName() + ",您好!您发起的家医咨询,医生已接诊";
            }
            logger.info("doctorPick诊查费支付成功推送模板消息:outpatientId="+outpatientId);
            msgUrl="/ims-wx/index.html#/returnVisit/record?outpatientId="+outpatientId;
        } else if("doctorRefund".equalsIgnoreCase(titelType)) {
            if ("9".equals(type)) {
                contentMsg = "您的图文复诊订单已退号。由于订单退号,诊察费将退回就诊卡内余额。";
                first = outpatientDO.getConsumerName() + ",您好!您的图文复诊已退号";
                contentMsg = "金额已退到门诊预交金。如需退款(15元)请到门诊收费处退款。";
                first = outpatientDO.getConsumerName() + ",您好!您发起的图文复诊已退号";
            }
            if ("16".equals(type)) {
                contentMsg =  "您的视频复诊订单已退号。由于订单退号,诊察费将退回就诊卡内余额。";
                contentMsg =  "金额已退到门诊预交金。如需退款(15元)请到门诊收费处退款。";
                first = outpatientDO.getConsumerName() + ",您好!您发起的视频复诊已退号";
            }
            if ("1".equals(type)) {
                contentMsg =  "您的图文咨询订单已退号。由于订单退号,诊察费将退回就诊卡内余额。";
                contentMsg =  "金额已退到门诊预交金。如需退款(15元)请到门诊收费处退款。";
                first = outpatientDO.getConsumerName() + ",您好!您发起的图文咨询已退号";
            }
            if ("17".equals(type)) {
                contentMsg = "您的视频咨询订单已退号。由于订单退号,诊察费将退回就诊卡内余额。";
                contentMsg = "金额已退到门诊预交金。如需退款(15元)请到门诊收费处退款。";
                first = outpatientDO.getConsumerName() + ",您好!您发起的视频咨询已退号";
            }
            logger.info("doctorRefund:outpatientId="+outpatientId);
@ -4400,17 +4417,20 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
                contentMsg = "您发起的视频咨询已被您取消。由于订单取消将不做扣费处理。";
                first = outpatientDO.getConsumerName() + ",您好!您的视频咨询已被您取消,您可重新发起";
            }
            if ("12".equals(type)) {
                return;
            }
            logger.info("patientCancel诊查费支付成功推送模板消息:outpatientId="+outpatientId);
            msgUrl="/ims-wx/index.html#/returnVisit/record?outpatientId="+outpatientId;
        }else if("systemCancelRemind".equalsIgnoreCase(titelType)){
            //超过24小时未接诊,系统取消
            if ("9".equals(type)) {
                contentMsg = "图文咨询因超时自动取消。您可重新发起。由于订单取消将不做扣费处理。";
                first = outpatientDO.getConsumerName() + ",您好!您的图文复诊因超时未接诊已取消";
                contentMsg = "由于订单取消将不做扣费处理。如需退款(15元)请到门诊收费处退款。";
                first = outpatientDO.getConsumerName() + ",您好!您的图文复诊因超过24小时未接诊已自动取消图文咨询。";
            }
            if ("16".equals(type)) {
                contentMsg = "视频咨询因超时自动取消。您可重新发起。由于订单取消将不做扣费处理。";
                first = outpatientDO.getConsumerName() + ",您好!您的视频复诊因超时未接诊已取消";
                contentMsg = "由于订单取消将不做扣费处理。如需退款(15元)请到门诊收费处退款。";
                first = outpatientDO.getConsumerName() + ",您好!您的视频复诊因超过24小时未接诊已自动取消视频咨询。";
            }
            logger.info("系统取消接诊入参:outpatientId="+outpatientId);
            msgUrl="/ims-wx/index.html#/returnVisit/record?outpatientId="+outpatientId;
@ -4426,8 +4446,7 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
                first = outpatientDO.getConsumerName() + ",您好!您有一笔未完成的在线问诊订单,请及时处理。";//您有一个视频复诊订单待支付,请及时支付。
                msgUrl="/ims-wx/index.html#/returnVisit/record?outpatientId="+outpatientId;
                logger.info("视频复诊订单待支付微信消息模板推送开始");
            }
            if ("1".equals(type)) {
            }else if ("1".equals(type)) {
                contentMsg = "您有一个图文咨询订单待支付,点击完成支付,如您已支付请忽略本条信息";
                msgUrl="/ims-wx/index.html#/returnVisit/record?outpatientId="+outpatientId;
                first = outpatientDO.getConsumerName() + ",您好!您有一个图文咨询订单待支付,请及时支付。";
@ -4437,23 +4456,24 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
                msgUrl="/ims-wx/index.html#/returnVisit/record?outpatientId="+outpatientId;
                first =  outpatientDO.getConsumerName() + ",您好!您有一个视频咨询订单待支付,请及时支付。";
                logger.info("视频咨询订单待支付微信消息模板推送开始");
            }else {
                return;
            }
        } else if ("paySuccess".equalsIgnoreCase(titelType)) {
            if ("9".equals(type)) {
                contentMsg = "您已成功发起图文复诊,请耐心等待医生接单。如长时间未接诊,建议选择其他医生";
                first = outpatientDO.getConsumerName() + ",您好!您已成功发起图文复诊";
            }
            if ("16".equals(type)) {
            }else if ("16".equals(type)) {
                contentMsg =  "您已成功发起视频复诊,请耐心等待医生接单。如长时间未接诊,建议选择其他医生";
                first = outpatientDO.getConsumerName() + ",您好!您已成功发起视频复诊";
            }
            if ("1".equals(type)) {
            }else if ("1".equals(type)) {
                contentMsg =  "您已成功发起图文咨询,请耐心等待医生接单。如长时间未接诊,建议选择其他医生";
                first = outpatientDO.getConsumerName() + ",您好!您已成功发起图文咨询";
            }
            if ("17".equals(type)) {
            }else if ("17".equals(type)) {
                contentMsg = "您已成功发起视频咨询,请耐心等待医生接单。如长时间未接诊,建议选择其他医生";
                first = outpatientDO.getConsumerName() + ",您好!您已成功发起视频咨询";
            }else {
                return;
            }
            logger.info("paySuccess诊查费支付成功推送模板消息:outpatientId="+outpatientId);
            msgUrl="/ims-wx/index.html#/returnVisit/record?outpatientId="+outpatientId;
@ -4501,18 +4521,17 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
            if (consultTeam.getType()!=null&&1==consultTeam.getType()){
                first = consultTeam.getName() + ",您好!您有1条图文咨询已结束,请及时对咨询医生进行评价。";
                logger.info("图文咨询服务评价微信消息模板推送开始");
            }
            if (consultTeam.getType()!=null&&9==consultTeam.getType()){
            }else if (consultTeam.getType()!=null&&9==consultTeam.getType()){
                first = consultTeam.getName() + ",您好!您有1条图文复诊已结束,请及时对咨询医生进行评价。";
                logger.info("图文复诊服务评价微信消息模板推送开始");
            }
            if (consultTeam.getType()!=null&&16==consultTeam.getType()){
            }else if (consultTeam.getType()!=null&&16==consultTeam.getType()){
                first = consultTeam.getName() + ",您好!您有1条视频复诊已结束,请及时对咨询医生进行评价。";
                logger.info("视频复诊服务评价微信消息模板推送开始");
            }
            if (consultTeam.getType()!=null&&17==consultTeam.getType()){
            }else if (consultTeam.getType()!=null&&17==consultTeam.getType()){
                first = consultTeam.getName() + ",您好!您有1条视频咨询已结束,请及时对咨询医生进行评价。";
                logger.info("视频咨询服务评价微信消息模板推送开始");
            }else {
                return;
            }
            contentMsg = "请对" + consDoctorDO.getName() + "医生的服务进行评价";
            msgUrl="/ims-wx/index.html#/fuwupingjia?consultCode="+consultTeam.getConsult();
@ -5083,7 +5102,7 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
     * @query_status 0:图文复诊候诊 1:图文复诊抢单列表
     * @dept 部门
     */
    public List<Map<String, Object>> findWaitingRoomOutpatientByDoctor(String doctor, Integer type, Integer query_status, String dept,String sex,String keyword,String ageGroup) {
    public List<Map<String, Object>> findWaitingRoomOutpatientByDoctor(String doctor, Integer type, Integer query_status, String dept,String sex,String keyword,String ageGroup,String patient) {
        String sql = "SELECT " +
                "room.outpatient_id AS \"id\"," +
@ -5164,6 +5183,9 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
        }if(StringUtils.isNoneBlank(keyword)){
            sql += " AND outpatient.patient_name like '%" + keyword + "%' ";
        }
        if(StringUtils.isNoneBlank(patient)){
            sql += " AND (outpatient.patient= '" + patient + "' or outpatient.consumer ='"+patient+"') ";
        }
        if(StringUtils.isNoneBlank(ageGroup)){
            String[] age = ageGroup.split(",");
            Calendar nowBegin = Calendar.getInstance();
@ -5191,8 +5213,8 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
            //根据身份证计算年龄
            for (Map<String, Object> outpatient : list) {
                String idcard = (String) outpatient.get("idcard");
                int patientAge = 0;
                int patientSex = 3;
                Integer patientAge = 0;
                Integer patientSex = 3;
                if (null!=outpatient.get("outPatient")){
                   BasePatientDO basePatientDO = basePatientDao.findById(outpatient.get("outPatient").toString());
                   if (null!=basePatientDO){
@ -5656,6 +5678,7 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
     * @param consutlSort
     * @return
     */
    @Transactional(readOnly = true)
    public MixEnvelop findDoctorByHospitalAndDiseaseAndDept(String iswork, String patientid, String orgCode, String dept,
                                                                           String diseaseKey, String doctorNameKey,
                                                                           String jobTitleNameKey, String outpatientType,
@ -5667,6 +5690,333 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
        if (pagesize <= 0) {
            pagesize = 10;
        }*/
        //testHikar();
        long statr = new Date().getTime();
        String sql = "SELECT " +
                " d.id AS \"id\", " +
                " d.photo AS \"photo\", " +
                " d.name AS \"name\", " +
                " d.expertise AS \"expertise\"," +
                " d.introduce AS \"introduce\"," +
                " d.job_title_code AS \"jobTitleCode\", " +
                " d.job_title_name AS \"jobTitleName\"," +
                " d.charge_type AS \"chargeType\"," +
                " h.dept_code AS \"deptCode\"," +
                " h.dept_name AS \"deptName\"," +
                " dw.workTotal AS \"workTotal\","+
                " d.consult_status AS \"consultStatus\"," +
                " d.outpatient_type AS \"outpatientType\"," +
                " a.total AS \"consultTotal\"," +
                " d.twfz_charge_type AS \"TWFZ_CHARGE_TYPE\"," +
                " d.spfz_charge_type AS \"SPFZ_CHARGE_TYPE\"," +
                " d.spzx_charge_type AS \"SPZX_CHARGE_TYPE\"," +
                " d.xtfz_charge_type AS \"XTFZ_CHARGE_TYPE\"," +
                " d.twzx_charge_type AS \"TWZX_CHARGE_TYPE\"," +
                " d.jyzx_charge_type AS \"JYZX_CHARGE_TYPE\"," +
                " h.org_name AS \"orgName\"," +
                " h.org_code AS \"orgCode\" " ;
        if(StringUtils.isNoneBlank(patientid)){
            sql+=" , follow.id AS \"followid\" " ;
        }
        sql+=" FROM " +
                " base_doctor d " +
                " JOIN base_doctor_hospital h ON h.doctor_code = d.id " +
                " Left join ( select count(id) as total,doctor from wlyy_outpatient where status = 3 GROUP BY doctor ) a on a.doctor = d.id ";
        Map<String, Object> params = new HashedMap();
        Date date = new Date();
        sql+="LEFT JOIN (SELECT  COUNT(t1.doctor) as workTotal, t1.doctor FROM  wlyy_doctor_work_time t1   WHERE   " +
                "t1.start_time <=:startTime  AND t1.end_time >=:endTime GROUP BY t1.doctor) dw ON dw.doctor=d.id ";
        sql+="LEFT JOIN (\n" +
                "\tSELECT\n" +
                "\t\tAVG(a.score) AS score,\n" +
                "\t\tb.doctor AS doctor\n" +
                "\tFROM\n" +
                "\t\tbase_evaluate a,\n" +
                "\t\tbase_evaluate_score b\n" +
                "\tWHERE\n" +
                "\t\ta.relation_code = b.id\n" +
                "\tGROUP BY\n" +
                "\t\tb.doctor\n" +
                ") evaluate ON evaluate.doctor = d.id";
        params.put("startTime", date);
        params.put("endTime", date);
        if(StringUtils.isNoneBlank(patientid)){
            if ("1".equalsIgnoreCase(isAttention)) {
                sql += " join base_doctor_patient_follow follow on follow.doctor = d.id and follow.patient ='" + patientid + "' ";
            }
            if ("0".equalsIgnoreCase(isAttention)) {
                sql += " join base_doctor_patient_follow follow on follow.doctor = d.id and follow.patient !='" + patientid + "' ";
            }
            if (StringUtils.isEmpty(isAttention)) {
                sql += " LEFT  JOIN base_doctor_patient_follow follow ON follow.patient='" + patientid + "' AND follow.doctor = d.id ";
            }
        }
        if (StringUtils.isNotBlank(diseaseKey)) {
            sql += " left join wlyy_doctor_special_disease sp on d.id = sp.doctor_code ";
        }
        if (StringUtils.isNotBlank(workingTime)) {
            sql += " JOIN wlyy_doctor_work_time wk on wk.doctor = d.id ";
        }
        sql += " WHERE  1=1 and h.del = '1' ";
        if (StringUtils.isNotBlank(chargType)) {
            if ("all".equals(chargType)) {
                //不过滤
            } else {
                sql += " AND d.charge_type = :chargType";
                params.put("chargType", chargType);
            }
        }
        List<WlyyHospitalSysDictDO> wlyyHospitalSysDictDOS  = wlyyHospitalSysDictDao.findByDictCode("isDoctorWork");
        boolean isNeedDoctorWord = true;
        if(wlyyHospitalSysDictDOS!=null&&wlyyHospitalSysDictDOS.size()>0){
            for(WlyyHospitalSysDictDO wlyyHospitalSysDictDO:wlyyHospitalSysDictDOS){
                if (!"1".equalsIgnoreCase(wlyyHospitalSysDictDO.getDictValue())){
                    isNeedDoctorWord = false;
                    break;
                }
            }
        }
        if (StringUtils.isNotBlank(iswork) && "1".equals(iswork)&&isNeedDoctorWord) {
            logger.info("iswork:" + iswork);
            sql += " AND (" +
                    " EXISTS ( " +
                    " SELECT " +
                    "  1 " +
                    " FROM " +
                    "  wlyy_doctor_work_time t " +
                    " WHERE " +
                    "  t.doctor = d.id " +
                    " AND t.start_time <=:startTime" +
                    " AND t.end_time >=:endTime" +
                    " ) OR " +
                    " d.consult_status = '1') ";
            params.put("startTime", date);
            params.put("endTime", date);
        }
        if (StringUtils.isNotBlank(orgCode)) {
            sql += " AND  h.org_code =:orgCode";
            params.put("orgCode", orgCode);
        }
        if (StringUtils.isNotBlank(diseaseKey)) {
            sql += " AND sp.disease_name like :diseaseKey";
            params.put("diseaseKey", "%" + diseaseKey + "%");
        }
        if (StringUtils.isNotBlank(doctorNameKey)) {
            sql += " AND d.name like :doctorNameKey";
            params.put("doctorNameKey", "%" + doctorNameKey + "%");
        }
        if (StringUtils.isNotBlank(dept)) {
            sql += " AND h.dept_code =:dept ";
            params.put("dept", dept);
        }
        if (StringUtils.isNotBlank(jobTitleNameKey)) {
            sql += " AND d.job_title_name  = :jobTitleNameKey ";
            params.put("jobTitleNameKey", jobTitleNameKey);
        }
        if (StringUtils.isNotBlank(outpatientType)) {
            if (outpatientType.contains("or")) {
                String[] outpatientTypeArray = outpatientType.split("or");
                sql += " AND ( ";
                for (int i = 0; i < outpatientTypeArray.length; i++) {
                    sql += " d.outpatient_type like'%" + outpatientTypeArray[i] + "%'";
                    if (i != outpatientTypeArray.length - 1) {
                        sql += " or ";
                    }
                }
                sql += " ) ";
            } else {
                sql += " AND d.outpatient_type like'%" + outpatientType + "%'";
            }
        } else {
            sql += " AND d.outpatient_type is not null ";
        }
        if (StringUtils.isNotBlank(keyName)) {
            sql += " AND (h.dept_name like '%" + keyName + "%' or d.name like '%" + keyName + "%' or d.expertise like '%" + keyName + "%' )";
        }
        if (StringUtils.isNotBlank(workingTime)) {
            sql += " AND wk.work_date = :workingTime ";
            params.put("workingTime", workingTime);
        }
        if (StringUtils.isNotBlank(consultStatus)) {
            sql += " AND d.consult_status = :consultStatus ";
            params.put("consultStatus", consultStatus);
        }
        if("xm_ykyy_wx".equalsIgnoreCase(wechatId)){
            if (flag){
                sql += " and d.del='1' order by d.consult_status DESC ,evaluate.score desc,a.total " + consutlSort;
            }else{
                sql += " and d.del='1' order by d.consult_status desc nulls last ,evaluate.score desc nulls last ,a.total " + consutlSort;
                sql+=" NULLS LAST,\n" +
                        "\tD.id DESC";
            }
        }else {
            sql += " and d.del='1' order by d.consult_status DESC ,evaluate.score desc,a.total " + consutlSort;
        }
        String sqlCount = "select count(1) as \"total\" from ( "+sql+" ) t";
        List<Map<String, Object>> list = hibenateUtils.createSQLQuery(sql, params, page, pagesize);
        List<WlyyHospitalSysDictDO> doctorFrontList = wlyyHospitalSysDictDao.findByDictNameOrderBySort("doctorFrontList",orgCode);
        List<Map<String,Object>> frontDoctor = new ArrayList<>();
        if ("xm_ykyy_wx".equalsIgnoreCase(wechatId)){
            sql= sql.replace("AS \"id\"","AS \"ID\"");
        }
        String sqlCharge = "SELECT t.id as \"id\",\n" +
                "\tm.req_fee as \"twfzFee\",\n" +
                "\ta.req_fee as \"spfzFee\",\n" +
                "\tb.req_fee as \"spzxFee\",\n" +
                "\tv.req_fee as \"twzxFee\",\n" +
                "\tg.req_fee as \"jyzxFee\",\n" +
                "\td.req_fee as \"xtzxFee\"\n" +
                "FROM\n" +
                "\t  ("+sql+")  t \n" +
                "LEFT JOIN wlyy_charge_dict m ON t.twfz_charge_type = m.charge_type and m.is_del='1'\n" +
                "LEFT JOIN wlyy_charge_dict a ON t.spfz_charge_type = a.charge_type and a.is_del='1'\n" +
                "LEFT JOIN wlyy_charge_dict b ON t.spzx_charge_type = b.charge_type and b.is_del='1'\n" +
                "LEFT JOIN wlyy_charge_dict v ON t.twzx_charge_type = v.charge_type and v.is_del='1'\n" +
                "LEFT JOIN wlyy_charge_dict d ON t.xtfz_charge_type = d.charge_type and d.is_del='1'\n" +
                " LEFT JOIN wlyy_charge_dict g ON t.jyzx_charge_type = g.charge_type and g.is_del='1'\n"+
                " where t.id is not null";
        List<Map<String,Object>> chargeDictDOLists =  hibenateUtils.createSQLQuery(sqlCharge, params);
        //查询医生各项评价平均分
        String sqlscore = "select t.doctor as \"id\" ,sum(t.score)/3 as\"score\" from ("+
                "SELECT " +
                "AVG(a.score) AS \"score\"," +
                "a.score_type AS \"score_type\"," +
                "b.doctor as \"doctor\" " +
                "FROM ("+sql+") m , base_evaluate a,base_evaluate_score b " +
                "WHERE " +
                " m.id = b.doctor and " +
                "a.relation_code=b.id " +
                "GROUP BY a.score_type,b.doctor ORDER BY  a.score_type ASC ) t GROUP BY  t.doctor";
        List<Map<String, Object>> listscore = hibenateUtils.createSQLQuery(sqlscore, params);
        /*list.stream().forEach(e->{
            if (null==e.get("consultStatus")){
                e.put("consultStatus",0);
            }
            if (null==e.get("workTotal")){
                e.put("workTotal",0);
            }
        });
        list.stream().sorted(Comparator.comparing((Map<String, Object> h) -> ((String) h.get("workTotal"))).reversed().thenComparing(Comparator.comparing((Map<String, Object> h) -> ((String) h.get("consultStatus")))).reversed());*/
        List<Map<String,Object>>  resultList = new ArrayList<>();
        resultList.addAll(list) ;
        for (Map<String,Object> map:list){
            String doctor = map.get("id").toString();
            /*List<Map<String,Object>> chargeDictDOLists = new ArrayList<>();
            if(null!=map.get("chargeType")){
                String chargeType = map.get("chargeType").toString();
                if (chargeType.contains(",")){
                    chargeType = chargeType.replace(",","','");
                }
                String sqlCharge = "select charge_type as \"chargeType\",charge_name as \"chargeName\"," +
                        "req_fee  as \"reqFee\",zj_fee  as \"zjFee\",xt_fee  as \"xtFee\",dept_type_code as \"deptTypeCode\" " +
                        " from wlyy_charge_dict where 1=1";
                sqlCharge+=" and charge_type in ( '"+chargeType+"')";
                if (StringUtils.isNoneBlank(deptTyepCode)){
                    sqlCharge+=" and dept_type_code in ( '"+deptTyepCode+"')";
                }
                chargeDictDOLists =  hibenateUtils.createSQLQuery(sqlCharge);
            }
            map.put("chargeTypeList",chargeDictDOLists);*/
            List<Map<String,Object>> doctorChargeDictDOLists = new ArrayList<>();
            for (Map<String ,Object> chargMap:chargeDictDOLists){
                if(doctor.equalsIgnoreCase(chargMap.get("id").toString())){
                    doctorChargeDictDOLists.add(chargMap);
                }
            }
            map.put("chargeTypeList",doctorChargeDictDOLists);
            Double doctorScore = new Double("0");
            if (listscore != null && listscore.size() > 0) {
                for (Map<String, Object> _listscore : listscore) {
                    if (_listscore.get("id").toString().equalsIgnoreCase(doctor)){
                        doctorScore = Double.parseDouble(_listscore.get("score").toString());
                    }
                }
            }
            map.put("doctorScore", doctorScore);
            if (doctorFrontList!=null&&doctorFrontList.size()>0){
                for (WlyyHospitalSysDictDO wlyyHospitalSysDictDO:doctorFrontList){
                    if(doctor.equalsIgnoreCase(wlyyHospitalSysDictDO.getDictCode())){
                        map.put("doctorFrontSort",wlyyHospitalSysDictDO.getSort());
                        logger.info("doctorFrontSort"+wlyyHospitalSysDictDO.getSort());
                        logger.info("doctorId"+wlyyHospitalSysDictDO.getDictCode());
                        frontDoctor.add(map);
                        resultList.remove(map);
                    }
                }
            }
        }
        List<Map<String, Object>> listCount = hibenateUtils.createSQLQuery(sqlCount, params);
        Long count = 0L;
        if(listCount!=null){
            //mysql 与 Oracle 聚合函数返回类型不一致,需要判断装换
            count = hibenateUtils.objTransformLong(listCount.get(0).get("total"));
        }
        if (frontDoctor!=null&&frontDoctor.size()>0){
            frontDoctor.sort(Comparator.comparing((Map<String, Object> h) -> ((Integer) h.get("doctorFrontSort"))));
            logger.info("size"+frontDoctor.size());
            for (Map<String, Object> map:resultList){
                logger.info("id  =="+map.get("id").toString());
                frontDoctor.add(map);
            }
        }
        logger.info("findDoctorByHospitalAndDiseaseAndDept end:" + DateUtil.dateToStr(new Date(), "yyyy-MM-dd HH:mm:ss:SSS"));
        logger.info("sql:" + sql);
        MixEnvelop envelop =new MixEnvelop();
        envelop.setDetailModelList(frontDoctor);
        envelop.setTotalCount(count.intValue());
        envelop.setPageSize(pagesize);
        envelop.setCurrPage(page);
        System.out.println("new"+(new Date().getTime()-statr));
        return envelop;
    }
    /**
     * 根据疾病名称,热门部门查询医生
     *
     * @param orgCode         机构码
     * @param dept            部门CODE
     * @param diseaseKey      疾病名称
     * @param jobTitleNameKey
     * @param outpatientType
     * @param keyName
     * @param workingTime
     * @param consutlSort
     * @return
     */
    @Transactional(readOnly = true)
    public MixEnvelop findDoctorByHospitalAndDiseaseAndDept2(String iswork, String patientid, String orgCode, String dept,
                                                            String diseaseKey, String doctorNameKey,
                                                            String jobTitleNameKey, String outpatientType,
                                                            String keyName, String workingTime, String consultStatus, String chargType, String consutlSort, String isAttention, Integer page, Integer pagesize) {
      /*  if(page >=1){
            page --;
        if (pagesize <= 0) {
            pagesize = 10;
        }*/
        long statr = new Date().getTime();
        String sql = "SELECT " +
                " d.id AS \"id\", " +
                " d.photo AS \"photo\", " +
@ -5885,13 +6235,13 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
                    "\td.req_fee as \"xtzxFee\"\n" +
                    "FROM\n" +
                    "\tbase_doctor t\n" +
                    "LEFT JOIN wlyy_charge_dict m ON t.twfz_charge_type = m.charge_type\n" +
                    "LEFT JOIN wlyy_charge_dict a ON t.spfz_charge_type = a.charge_type\n" +
                    "LEFT JOIN wlyy_charge_dict b ON t.spzx_charge_type = b.charge_type\n" +
                    "LEFT JOIN wlyy_charge_dict v ON t.twzx_charge_type = v.charge_type\n" +
                    "LEFT JOIN wlyy_charge_dict d ON t.xtfz_charge_type = d.charge_type\n" +
                    " LEFT JOIN wlyy_charge_dict g ON t.jyzx_charge_type = g.charge_type\n" +
                    "WHERE t.id = '"+map.get("id")+"' ";
                    "LEFT JOIN wlyy_charge_dict m ON t.twfz_charge_type = m.charge_type and m.is_del='1'\n" +
                    "LEFT JOIN wlyy_charge_dict a ON t.spfz_charge_type = a.charge_type and a.is_del='1'\n" +
                    "LEFT JOIN wlyy_charge_dict b ON t.spzx_charge_type = b.charge_type and b.is_del='1'\n" +
                    "LEFT JOIN wlyy_charge_dict v ON t.twzx_charge_type = v.charge_type and v.is_del='1'\n" +
                    "LEFT JOIN wlyy_charge_dict d ON t.xtfz_charge_type = d.charge_type and d.is_del='1'\n" +
                    " LEFT JOIN wlyy_charge_dict g ON t.jyzx_charge_type = g.charge_type and g.is_del='1'\n" +
                    "WHERE t.id = '"+map.get("id")+"'";
            chargeDictDOLists =  hibenateUtils.createSQLQuery(sqlCharge);
            map.put("chargeTypeList",chargeDictDOLists);
            //查询医生各项评价平均分
@ -5958,6 +6308,7 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
        envelop.setTotalCount(count.intValue());
        envelop.setPageSize(pagesize);
        envelop.setCurrPage(page);
        System.out.println("old"+(new Date().getTime()-statr));
        return envelop;
    }
    /**
@ -6304,6 +6655,23 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
        BasePatientDO basePatientDO = basePatientDao.findById(patient);
        PatientMedicareCardDO patientMedicareCardDO = basePatientMedicareCardDao.findByTypeAndPatientCodeAndDel("A_01", patient, "1");
        List<BasePatientWechatDo> patientWechatDos = patientWechatDao.findByWechatIdAndPatientId(wechatId,patient);
        List<WlyyHospitalSysDictDO> wlyyHospitalSysDictDOS = wlyyHospitalSysDictDao.findByDictCode("White_list");
        if (wlyyHospitalSysDictDOS!=null&&wlyyHospitalSysDictDOS.size()!=0){
            WlyyHospitalSysDictDO wlyyHospitalSysDictDO = wlyyHospitalSysDictDOS.get(0);
            String text = wlyyHospitalSysDictDO.getDictValue();
            String str[] = text.split(",");
            List<String> list = new ArrayList<>();
            for (int i=0;i<str.length;i++){
                list.add(str[i]);
            }
            if (list.contains(basePatientDO.getIdcard())){
                rs.put("flag","1");
            }else {
                rs.put("flag","0");
            }
        }else {
            rs.put("flag","0");
        }
        rs.put("id", patient);
        rs.put("name", basePatientDO.getName());
        rs.put("sex", basePatientDO.getSex());
@ -6319,6 +6687,8 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
        rs.put("photo", basePatientDO.getPhoto());
        rs.put("address", basePatientDO.getAddress());
        rs.put("cardType",basePatientDO.getCardType());
        rs.put("healthStatus","");
        rs.put("diseaseType","");
        if (patientMedicareCardDO != null) {
            rs.put("ssc", patientMedicareCardDO.getCode());
        } else {
@ -6442,10 +6812,10 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
    @Autowired
    private FileUploadService fileUploadService;
    public Map<String, Object> test() throws Exception {
   /* public Map<String, Object> test() throws Exception {
        entranceService.MS02014(false);
        return null;
    }
    }*/
    public String test2(String no) throws Exception {
        TransRequest e = new TransRequest();
@ -6616,7 +6986,7 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
        return waitCount.toString();
    }
    public com.alibaba.fastjson.JSONArray getWaitingForVisitVideoPrescriptionByDoctor(String doctor, String wxId,String outpatientType,String keyWord) {
    public com.alibaba.fastjson.JSONArray getWaitingForVisitVideoPrescriptionByDoctor(String doctor, String wxId,String outpatientType,String keyWord,String patientId) {
        String condition = "";
        if ("xm_ykyy_wx".equals(wxId)) {
            if(flag){
@ -6669,12 +7039,17 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
            sql+="  AND room.consult_type= 2 and room.reservation_type in (1,2)";
        } else if (StringUtils.isNotBlank(outpatientType)&&"4".equalsIgnoreCase(outpatientType)) {
            sql+="  AND room.consult_type= 2 and room.reservation_type = 3";
        } else {
        } else if (StringUtils.isNotBlank(outpatientType)&&"2".equalsIgnoreCase(outpatientType)) {
            sql+="  and room.reservation_type = 2 ";
        }else {
            sql += " AND room.consult_type= 2 ";
        }
        if (StringUtils.isNotBlank(keyWord)){
            sql += " AND outpatient.patient_name like '%"+keyWord+"%'";
        }
        if (StringUtils.isNotBlank(patientId)){
            sql += " AND room.patient_id = '"+patientId+"'";
        }
        if ("xm_ykyy_wx".equals(wxId)) {
            if(flag){
                sql += " AND room.reservation_time >= str_to_date('" + DateUtil.dateToStrShort(new Date()) + " 00:00:00','YYYY-MM-DD HH24:MI:SS')";
@ -6698,8 +7073,8 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
                String idcard = (String) outpatient.get("idcard");
                String patient_id = (String) outpatient.get("patient_id");
                outpatient.put("age", DateUtil.getAgeForIdcard(idcard));
                int patientAge = 0;
                int patientSex = 3;
                Integer patientAge = 0;
                Integer patientSex = 3;
                if (null!=outpatient.get("outPatient")){
                    BasePatientDO basePatientDO = basePatientDao.findById(outpatient.get("outPatient").toString());
                    if (null!=basePatientDO){
@ -6826,6 +7201,10 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
            wlyyHttpLogDO.setCreateTime(new Date());
            wlyyHttpLogDao.save(wlyyHttpLogDO);
        }
        if ("xm_zsyy_wx".equalsIgnoreCase(wechatId)&&StringUtils.isNoneBlank(wlyyOutpatientDO.getDoctor())){
            String msgUrl="https://hlwyy.xmzsh.com/ims-wx/index.html#/returnVisit/record?outpatientId="+wlyyOutpatientDO.getId();
            sendZsMsgFlow("OL_PAY_SUCCESS",wlyyOutpatientDO.getId(),"",msgUrl,"已支付问诊费");
        }
    }
@ -7109,31 +7488,33 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
                "AND outpatient.doctor='" + doctor + "' " +
                "AND outpatient.pay_status = 1 " +
                "AND outpatient.outpatient_type= '" + outpatient_type + "'  ";
        if ("1".equals(outpatient_type)||"3".equals(outpatient_type)) {//复诊
            sql = sql + " AND outpatient.type= '" + type + "' ";
            if ("2".equals(type)) {//视频复诊才需要判断时间,
        if (!"xm_ihealth_wx".contains(wxId)){
            if ("1".equals(outpatient_type)||"3".equals(outpatient_type)) {//复诊
                sql = sql + " AND outpatient.type= '" + type + "' ";
                if ("2".equals(type)) {//视频复诊才需要判断时间,
                    if ("xm_ykyy_wx".equals(wxId)) {
                        if (flag){
                            sql += " AND outpatient.register_date is not null and outpatient.register_date >= str_to_date('" + DateUtil.dateToStrShort(new Date()) + " 00:00:00','YYYY-MM-DD HH24:MI:SS')";
                        }else {
                            sql += " AND outpatient.register_date is not null and outpatient.register_date >= to_date('" + DateUtil.dateToStrShort(new Date()) + " 00:00:00','YYYY-MM-DD HH24:MI:SS')";
                        }
                    } else {
                        sql = sql + " AND outpatient.register_date is not null AND  outpatient.register_date >= '" + DateUtil.dateToStrShort(new Date()) + " 00:00:00' ";
                    }
                }
            } else if ("2".equals(outpatient_type)) {
                //协同门诊也需要判断时间
                if ("xm_ykyy_wx".equals(wxId)) {
                    if (flag){
                        sql += " AND outpatient.register_date is not null and outpatient.register_date >= str_to_date('" + DateUtil.dateToStrShort(new Date()) + " 00:00:00','YYYY-MM-DD HH24:MI:SS')";
                    }else {
                        sql += " AND outpatient.register_date is not null and outpatient.register_date >= to_date('" + DateUtil.dateToStrShort(new Date()) + " 00:00:00','YYYY-MM-DD HH24:MI:SS')";
                    }
                } else {
                    sql = sql + " AND outpatient.register_date is not null AND  outpatient.register_date >= '" + DateUtil.dateToStrShort(new Date()) + " 00:00:00' ";
                }
            }
        } else if ("2".equals(outpatient_type)) {
            //协同门诊也需要判断时间
            if ("xm_ykyy_wx".equals(wxId)) {
                if (flag){
                    sql += " AND outpatient.register_date is not null and outpatient.register_date >= str_to_date('" + DateUtil.dateToStrShort(new Date()) + " 00:00:00','YYYY-MM-DD HH24:MI:SS')";
                }else {
                    sql += " AND outpatient.register_date is not null and outpatient.register_date >= to_date('" + DateUtil.dateToStrShort(new Date()) + " 00:00:00','YYYY-MM-DD HH24:MI:SS')";
                }
            } else {
                sql = sql + " AND outpatient.register_date is not null AND  outpatient.register_date >= '" + DateUtil.dateToStrShort(new Date()) + " 00:00:00' ";
            }
        }
        logger.info("接口名称:doctorReviewConsultCount-->sql="+sql);
        List<Map<String, Object>> rstotal = jdbcTemplate.queryForList(sql);
@ -7599,6 +7980,12 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
                        patient.setPassword(MD5.md5Hex(pw + "{" + salt + "}"));
                        patient.setSalt(salt);
                        patient.setMobile(mobile);
                        String sexString =IdCardUtil.getSexForIdcard_new(idcard);
                        if (StringUtils.isNoneBlank(sexString)){
                            patient.setSex(Integer.parseInt(sexString));
                        }else {
                            patient.setSex(3);
                        }
                        patient.setDel("1");
                        patient.setEnabled(1);
                        patient.setLocked(0);
@ -8096,6 +8483,12 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
            String pw = mobile.substring(mobile.length() - 6);
            patient.setIdcard(archiveVO.getSfzhao());
            String sexString =IdCardUtil.getSexForIdcard_new(archiveVO.getSfzhao());
            if (StringUtils.isNoneBlank(sexString)){
                patient.setSex(Integer.parseInt(sexString));
            }else {
                patient.setSex(3);
            }
            patient.setName(archiveVO.getXming0());
            patient.setPassword(MD5.md5Hex(pw + "{" + salt + "}"));
            patient.setSalt(salt);
@ -8619,13 +9012,13 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
                    }
                    logger.info("进入处方签名");
                    //处方签名
                    xzyyPrescriptionService.SOF_SignDataWithExtraInfo(wlyyPrescriptionDO);
                    String baseSign=xzyyPrescriptionService.SOF_SignDataWithExtraInfo(wlyyPrescriptionDO);
                    //同步电子病历
                    WlyyPrescriptionEmrDO prescriptionEmrDO = prescriptionEmrDao.findEmrByPrescriptionId(prescriptionId);
                    try {
                        if (prescriptionEmrDO != null) {
                            logger.info("电子病历同步");
                            xzzxEntranceService.saveEmrToEntrance(prescriptionId);
                            xzzxEntranceService.saveEmrToEntrance(prescriptionId,baseSign);
                            logger.info("电子病历同步");
                            logger.info("电子病历签名");
                            xzyyPrescriptionService.SOF_SignDataWithExtraInfoEmr(wlyyPrescriptionDO);
@ -9172,7 +9565,12 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
     * @return
     * @throws Exception
     */
    public net.sf.json.JSON outpatient(String patient) throws Exception {
    public net.sf.json.JSON outpatient(String patient,String doctorId) throws Exception {
        try {
            baseOperateLogService.saveOperateLog(doctorId,patient,"EMR","住院病历","","");
        }catch (Exception e){
            e.printStackTrace();
        }
        PatientMappingDO mappingDO = patientMappingDao.findByPatient(patient);
        String url = "";
        WlyyHospitalSysDictDO wlyyHospitalSysDictDO = hospitalSysDictDao.findById("HAI_TAI_OUTPATIENT_URL");
@ -9196,6 +9594,7 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
        XMLSerializer xmlSerializer = new XMLSerializer();
        net.sf.json.JSON json = xmlSerializer.read(returnValue);
        logger.info("返回json" + json);
        return json;
    }
@ -9510,13 +9909,20 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
     * @param size
     * @return
     */
    public PageEnvelop findPatientAllPrescription(String keyName, String status, Integer page, Integer size,String patient,String isSelectDrug) {
    public PageEnvelop findPatientAllPrescription(String keyName, String status, Integer page, Integer size,String patient,String isSelectDrug,boolean consumerflag) {
        BasePatientDO patientDO = basePatientDao.findById(patient);
        if (patientDO==null){
            return PageEnvelop.getError("找不到该患者",-1);
        }
        StringBuffer sql = new StringBuffer(" SELECT DISTINCT b.*, c.oneself_pickup_flg,f.job_title_code,f.job_title_name  FROM (SELECT a.* FROM wlyy_prescription a left join wlyy_outpatient o ON o.id=a.outpatient_id  WHERE o.consumer = '");
        StringBuffer countSql = new StringBuffer("select COUNT(DISTINCT b.id) count FROM (SELECT a.* FROM wlyy_prescription a left join wlyy_outpatient o ON o.id=a.outpatient_id  WHERE o.consumer = '");
        /*if (consumerflag){
            sql.append(" WHERE o.consumer = '");
            countSql.append(" WHERE o.consumer = '");
        }else{
            sql.append(" WHERE o.patient = '");
            countSql.append(" WHERE o.patient = '");
        }*/
        sql.append(patient).append("') b  LEFT JOIN wlyy_prescription_expressage c ON c.outpatient_id = b.outpatient_id LEFT JOIN base_doctor f ON b.doctor=f.id  ");
        countSql.append(patient).append("') b  LEFT JOIN wlyy_prescription_expressage c ON c.outpatient_id = b.outpatient_id LEFT JOIN base_doctor f ON b.doctor=f.id  ");
        if (StringUtils.isNoneBlank(isSelectDrug)){
@ -9563,14 +9969,14 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
                    " b.doctor_name LIKE '%" + keyName + "%' " +
                    " OR b.dept_name LIKE'%" + keyName + "%' " +
                    " OR b.hospital_name LIKE '%" + keyName + "%' " +
                    " OR d.drug_name LIKE '%" + keyName + "%' " +
                    " OR m.drug_name LIKE '%" + keyName + "%' " +
                    " OR b.real_order LIKE '%" + keyName + "%' " +
                    ")");
            countSql.append(" and (" +
                    " b.doctor_name LIKE '%" + keyName + "%' " +
                    " OR b.dept_name LIKE'%" + keyName + "%' " +
                    " OR b.hospital_name LIKE '%" + keyName + "%' " +
                    " OR d.drug_name LIKE '%" + keyName + "%' " +
                    " OR m.drug_name LIKE '%" + keyName + "%' " +
                    " OR b.real_order LIKE '%" + keyName + "%' " +
                    ")");
        }
@ -9954,13 +10360,14 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
       return envelop;
    }
    //应声开具处方管理
    public MixEnvelop prescriptionManage(String keyWord,String doctorId,String startTime,String endTime,String checkStatus,Integer page,Integer pageSize){
    public MixEnvelop prescriptionManage(String keyWord,String doctorId,String startTime,String endTime,String checkStatus,String status,Integer page,Integer pageSize){
        String sql = " select p.create_time as \"createTime\"," +
                " p.patient_name as \"patientName\"," +
                " o.idcard as \"idcard\"," +
                " o.card_no as \"cardNo\"," +
                " p.check_status as \"checkStatus\"," +
                " p.id as \"id\"," +
                " p.status as \"status\"," +
                " p.check_reason as \"checkReason\" " +
                " from wlyy_prescription p left join wlyy_outpatient o on p.outpatient_id  = o.id" +
                " where  1=1 ";
@ -9973,6 +10380,16 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
        }else {
            sql+=" and p.check_status != 4";
        }
        if(StringUtils.isNotBlank(status)){
            if ("0".equalsIgnoreCase(status)){
                sql+=" and p.status = 20";
            }else if ("-4".equalsIgnoreCase(status)){
                sql+=" and p.status = -4";
            } else {
                sql+=" and p.status > 20";
            }
        }
        if(StringUtils.isNotBlank(doctorId)){
            sql+=" and p.doctor = '"+doctorId+"'";
        }
@ -10068,13 +10485,61 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
                    }
                }
            }
            prescriptionDO.setStatus(-1);
            prescriptionDO.setCheckStatus(4);
            prescriptionDO.setCheckReason("已删除");
            if("xm_zsyy_wx".equalsIgnoreCase(wechatId)){
                /*prescriptionDao.updateCheckStatus(prescriptionId,2,reason,20);*/
                logger.info("作废处方开始" + prescriptionDO.getCheckStatus());
                WlyyHttpLogDO wlyyHttpLogDO = new WlyyHttpLogDO();
                WlyyOutpatientDO outpatientDO = outpatientDao.findById(prescriptionDO.getOutpatientId());
                DoctorMappingDO doctorMappingDO = doctorMappingService.findMappingCode(outpatientDO.getDoctor(), outpatientDO.getHospital());
                List<WlyyPrescriptionInfoDO> infoDOS = prescriptionInfoDao.findByPrescriptionId(prescriptionId, 1);
                List<WlyyInspectionDO> inspectionDOS = wlyyInspectionDao.findByPrescriptionId(prescriptionId, 1);
                List<WlyyPrescriptionDiagnosisDO> prescriptionDiagnosisDOS = prescriptionDiagnosisDao.findByPrescriptionId(prescriptionId,1);
                List<WlyyPrescriptionExpressageDO> expressageDOS = prescriptionExpressageDao.findByOutpatientId(outpatientDO.getId());
                com.alibaba.fastjson.JSONArray jsonData = new com.alibaba.fastjson.JSONArray();
                for (WlyyPrescriptionInfoDO info : infoDOS) {
                    //设置his药品查询条件
                    setInfoJsonParam(jsonData, doctorMappingDO, outpatientDO, prescriptionDO, info, outpatientDO.getIcd10());
                }
                for (WlyyInspectionDO ins : inspectionDOS) {
                    //设置his药品查询条件
                    setInspectionParam(jsonData, doctorMappingDO, outpatientDO, prescriptionDO, ins, outpatientDO.getIcd10());
                }
                if (expressageDOS!=null&&expressageDOS.size()!=0){
                    WlyyPrescriptionExpressageDO prescriptionExpressageDO = expressageDOS.get(0);
                    if (prescriptionExpressageDO!=null&&prescriptionExpressageDO.getOneselfPickupFlg()==0){
                        for (int i=0;i<jsonData.size();i++){
                            com.alibaba.fastjson.JSONObject object = jsonData.getJSONObject(i);
                            object.put("selfDelivered",0);
                        }
                    }else if (prescriptionExpressageDO!=null&&prescriptionExpressageDO.getOneselfPickupFlg()==1){
                        for (int i=0;i<jsonData.size();i++){
                            com.alibaba.fastjson.JSONObject object = jsonData.getJSONObject(i);
                            object.put("selfDelivered",1);
                        }
                    }
                }
                try {
                    net.sf.json.JSONObject jsonObject = entranceService.BS10112(jsonData.toJSONString(), demoFlag);
                    wlyyHttpLogDO.setResponse(jsonObject.toString());
                }catch (Exception e){
                    e.printStackTrace();
                    return "作废失败";
                }
                wlyyHttpLogDO.setRequest(jsonData.toJSONString());
                wlyyHttpLogDO.setName("作废处方");
                wlyyHttpLogDO.setCreateTime(new Date());
                wlyyHttpLogDO.setCode(outpatientDO.getId());
                wlyyHttpLogDao.save(wlyyHttpLogDO);
            }
            prescriptionDO.setStatus(-4);
            prescriptionDO.setDisableTime(new Date());
            prescriptionDO.setCheckStatus(5);
            prescriptionDO.setCheckReason("已作废");
            prescriptionDao.save(prescriptionDO);
            return "删除成功";
            return "已作废";
        }else {
            return "删除失败";
            return "作废失败";
        }
    }
@ -10331,6 +10796,7 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
                                    chargeDictDO.setReqFee(twPrcie1);
                                    chargeDictDO.setChargeType(twPrcie+"");
                                    chargeDictDO.setChargeName(twPrcie+"");
                                    chargeDictDO.setIsDel("1");
                                    chargeDictDO = wlyyChargeDictDao.save(chargeDictDO);
                                }
                                doctorDO.setTwzxChargeType(chargeDictDO.getChargeType());
@ -10368,6 +10834,7 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
                                    chargeDictDO.setReqFee(spPrcie1);
                                    chargeDictDO.setChargeType(spPrcie+"");
                                    chargeDictDO.setChargeName(spPrcie+"");
                                    chargeDictDO.setIsDel("1");
                                    chargeDictDO = wlyyChargeDictDao.save(chargeDictDO);
                                }
                                doctorDO.setSpzxChargeType(chargeDictDO.getChargeType());
@ -10447,6 +10914,7 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
                            chargeDictDO.setReqFee(price1);
                            chargeDictDO.setChargeType(price + "");
                            chargeDictDO.setChargeName(price + "");
                            chargeDictDO.setIsDel("1");
                            chargeDictDO = wlyyChargeDictDao.save(chargeDictDO);
                        }
                        doctorDO.setTwzxChargeType(chargeDictDO.getChargeType());
@ -10466,6 +10934,7 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
                            chargeDictDO.setReqFee(price1);
                            chargeDictDO.setChargeType(price + "");
                            chargeDictDO.setChargeName(price + "");
                            chargeDictDO.setIsDel("1");
                            chargeDictDO = wlyyChargeDictDao.save(chargeDictDO);
                        }
                        doctorDO.setSpzxChargeType(chargeDictDO.getChargeType());
@ -11685,7 +12154,7 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
            }
        }
        sql += " order by t.appointment_time desc ";
        sql += " order by t.create_time desc ";
        List<Map<String, Object>> list = hibenateUtils.createSQLQuery(sql, page, pageSize);
        List<Map<String, Object>> listCount = hibenateUtils.createSQLQuery(sql);
        logger.info("查询数据" + sql);
@ -11779,17 +12248,14 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
                                .build())
                        .build())
                .build();
        if (extras.get("outpatientId")!=null){
        }
        try {
            PushResult result = jPushClient.sendPush(payload);
            logger.info("极光推送返回日志==="+result);
            WlyyHttpLogDO httpLogDO = new WlyyHttpLogDO();
            httpLogDO.setCode("JPUSH");
            httpLogDO.setCreateTime(new Date());
            /*httpLogDO.setRequest(jsonObject.toJSONString());
            httpLogDO.setResponse(result);*/
            httpLogDO.setRequest(extras==null?"":extras.toString());
            httpLogDO.setResponse(result==null?"":result.toString());
            wlyyHttpLogDao.save(httpLogDO);
            logger.info("Got result - " + result);
        } catch (APIConnectionException e) {
@ -12000,6 +12466,52 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
            jsonObject.put("type",32);
            jsonObject.put("id",prescriptionId);
            jsonObject.put("outpatientId",wlyyOutpatientDO.getId());
        }else if("remind_doctor_pickup".equalsIgnoreCase(templateCode)){//接诊下消息提醒
            BaseJpushTemplateDO baseJpushTemplateDO = baseJpushTemplateDao.findByCode(templateCode);
            if(baseJpushTemplateDO!=null){
                if ("1".equalsIgnoreCase(wlyyOutpatientDO.getOutpatientType())&&"1".equalsIgnoreCase(wlyyOutpatientDO.getType())){
                    content = baseJpushTemplateDO.getPushContent().replace("{{咨询类型}}","图文复诊").replace("{{患者姓名}}",wlyyOutpatientDO.getPatientName());
                    title=baseJpushTemplateDO.getPushHeader().replace("{{咨询类型}}","图文复诊接诊提醒");
                    jsonObject.put("type",51);
                    jsonObject.put("patientName",wlyyOutpatientDO.getPatientName());
                }else if ("1".equalsIgnoreCase(wlyyOutpatientDO.getOutpatientType())&&"2".equalsIgnoreCase(wlyyOutpatientDO.getType())){
                    content = baseJpushTemplateDO.getPushContent().replace("{{咨询类型}}","视频复诊").replace("{{患者姓名}}",wlyyOutpatientDO.getPatientName());
                    content+= "视频复诊预约时间为:"+wlyyOutpatientDO.getRegisterDate();
                    title=baseJpushTemplateDO.getPushHeader().replace("{{咨询类型}}","视频复诊接诊提醒");
                    jsonObject.put("type",52);
                    jsonObject.put("patientName",wlyyOutpatientDO.getPatientName());
                }else if ("3".equalsIgnoreCase(wlyyOutpatientDO.getOutpatientType())&&"1".equalsIgnoreCase(wlyyOutpatientDO.getType())){
                    content = baseJpushTemplateDO.getPushContent().replace("{{咨询类型}}","图文咨询").replace("{{患者姓名}}",wlyyOutpatientDO.getPatientName());
                    title=baseJpushTemplateDO.getPushHeader().replace("{{咨询类型}}","图文咨询接诊提醒");
                    jsonObject.put("type",58);
                    jsonObject.put("patientName",wlyyOutpatientDO.getPatientName());
                }else if ("3".equalsIgnoreCase(wlyyOutpatientDO.getOutpatientType())&&"2".equalsIgnoreCase(wlyyOutpatientDO.getType())){
                    content = baseJpushTemplateDO.getPushContent().replace("{{咨询类型}}","视频咨询").replace("{{患者姓名}}",wlyyOutpatientDO.getPatientName());
                    title=baseJpushTemplateDO.getPushHeader().replace("{{咨询类型}}","视频咨询接诊提醒");
                    content+= "视频咨询预约时间为:"+wlyyOutpatientDO.getRegisterDate();
                    jsonObject.put("type",57);
                    jsonObject.put("patientName",wlyyOutpatientDO.getPatientName());
                }else if ("2".equalsIgnoreCase(wlyyOutpatientDO.getOutpatientType())){
                    content = baseJpushTemplateDO.getPushContent().replace("{{咨询类型}}","协同复诊").replace("{{患者姓名}}",wlyyOutpatientDO.getPatientName());
                    title=baseJpushTemplateDO.getPushHeader().replace("{{咨询类型}}","协同复诊接诊提醒");
                    jsonObject.put("type",53);
                    jsonObject.put("patientName",wlyyOutpatientDO.getPatientName());
                }else if ("3".equalsIgnoreCase(wlyyOutpatientDO.getOutpatientType())&&"3".equalsIgnoreCase(wlyyOutpatientDO.getType())){
                    content = baseJpushTemplateDO.getPushContent().replace("{{咨询类型}}","家医咨询").replace("{{患者姓名}}",wlyyOutpatientDO.getPatientName());
                    title=baseJpushTemplateDO.getPushHeader().replace("{{咨询类型}}","家医咨询接诊提醒");
                    jsonObject.put("type",55);
                    jsonObject.put("patientName",wlyyOutpatientDO.getPatientName());
                }
                String sex = IdCardUtil.getSexNameForIdcard_new(wlyyOutpatientDO.getIdcard());
                Integer age = IdCardUtil.getAgeForIdcard(wlyyOutpatientDO.getIdcard());
                Long createTime = wlyyOutpatientDO.getCreateTime().getTime();
                Long nowTime = new Date().getTime();
                Long minusts = TimeUnit.MILLISECONDS.toMinutes(nowTime - createTime);
                content = content.replace("{{性别年龄}}",sex+age+"岁").replace("{{等待时间}}",minusts.toString());
            }
            userId = wlyyOutpatientDO.getDoctor();
            jsonObject.put("id",wlyyOutpatientDO.getId());
            isDoctor="1";
        }
        return jPushMessage(isDoctor,userId,content,title,jsonObject);
@ -12143,4 +12655,36 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
    }
    /*public void testHikar(){
        try{
            MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer();
            ObjectName poolName = new ObjectName("com.zaxxer.hikari:type=Pool (" + dataSource.getPoolName() + ")");
            HikariPoolMXBean poolProxy = JMX.newMXBeanProxy(mBeanServer, poolName, HikariPoolMXBean.class);
            if(poolProxy == null) {
                System.out.println("Hikari not initialized,please wait...");
            }else {
                System.out.println("HikariPoolState = "
                        + "Active=[" + String.valueOf(poolProxy.getActiveConnections() + "] "
                        + "Idle=[" + String.valueOf(poolProxy.getIdleConnections() + "] "
                        + "Wait=["+poolProxy.getThreadsAwaitingConnection()+"] "
                        + "Total=["+poolProxy.getTotalConnections()+"]")));
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }*/
    public String findDomainUrlInDict(){
        try {
            WlyyHospitalSysDictDO wlyyHospitalSysDictDO = wlyyHospitalSysDictDao.findById("domainUrl");
            if (wlyyHospitalSysDictDO!=null){
                return wlyyHospitalSysDictDO.getDictValue();
            }else {
                return "";
            }
        }catch (Exception e){
            e.printStackTrace();
            return "";
        }
    }
}

+ 157 - 1
business/base-service/src/main/java/com/yihu/jw/hospital/prescription/service/XzyyPrescriptionService.java

@ -6,10 +6,12 @@ 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.entity.hospital.consult.WlyyHospitalSysDictDO;
import com.yihu.jw.entity.hospital.httplog.WlyyHttpLogDO;
import com.yihu.jw.entity.hospital.mapping.DoctorMappingDO;
import com.yihu.jw.entity.hospital.mapping.PatientMappingDO;
import com.yihu.jw.entity.hospital.prescription.*;
import com.yihu.jw.hospital.dict.WlyyHospitalSysDictDao;
import com.yihu.jw.hospital.httplog.dao.WlyyHttpLogDao;
import com.yihu.jw.hospital.mapping.dao.DoctorMappingDao;
import com.yihu.jw.hospital.mapping.dao.PatientMappingDao;
@ -21,6 +23,7 @@ import com.yihu.jw.util.date.DateUtil;
import com.yihu.jw.util.http.HttpClientUtil;
import com.yihu.mysql.query.BaseJpaService;
import org.apache.commons.lang3.StringUtils;
import org.jsoup.Connection;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@ -71,6 +74,8 @@ public class XzyyPrescriptionService extends BaseJpaService<WlyyPrescriptionDO,
    private BaseDoctorDao doctorDao;
    @Autowired
    private PrescriptionEmrDao prescriptionEmrDao;
    @Autowired
    private WlyyHospitalSysDictDao wlyyHospitalSysDictDao;
    /**
@ -262,11 +267,12 @@ public class XzyyPrescriptionService extends BaseJpaService<WlyyPrescriptionDO,
     * @param prescriptionDO
     * @throws Exception
     */
    public void SOF_SignDataWithExtraInfo(WlyyPrescriptionDO prescriptionDO) throws Exception {
    public String SOF_SignDataWithExtraInfo(WlyyPrescriptionDO prescriptionDO) throws Exception {
        WlyyOutpatientDO outpatientDO = outpatientDao.findById(prescriptionDO.getOutpatientId());
        List<WlyyPrescriptionInfoDO> infoDOS = infoDao.findByPrescriptionId(prescriptionDO.getId(), 1);
        List<WlyyPrescriptionDiagnosisDO> diagnosisDOS = diagnosisDao.findByPrescriptionId(prescriptionDO.getId(),1);
        JSONObject object = new JSONObject();
        String baseSign="";
        object.put("infos",infoDOS);
        object.put("registerSn",outpatientDO.getRegisterNo());
        object.put("diagnosiss",diagnosisDOS);
@ -292,9 +298,14 @@ public class XzyyPrescriptionService extends BaseJpaService<WlyyPrescriptionDO,
                JSONObject object1 = synRecipeInfo("hash_004",getCode(),patientName,patientAge.toString(),patientSex,"SF",recipeTime,hashValue,hashType,openId,idcard);
                if (object1.getString("status").equalsIgnoreCase("0")){
                    logger.info("西药处方签名成功"+object1);
                    JSONObject jsonObject1 = JSONObject.parseObject(object1.getString("data"));
                    if (jsonObject1!=null){
                        baseSign=jsonObject1.getString("stamp");
                    }
                }
            }
        }
        return baseSign;
    }
    /**
@ -418,4 +429,149 @@ public class XzyyPrescriptionService extends BaseJpaService<WlyyPrescriptionDO,
        }
        return null;
    }
    /***
     * 自动签名授权-请求自动签名授权接口
     * @param openId 患者姓名
     * @param sysTag 患者年
     * @return
     */
    public JSONObject selfSignRequest(String openId,String sysTag){
        try {
            OauthCaConfigDO oauthCaConfigDO = oauthCaConfigDao.findOne("oauth_ca_config");
            String url = "";
            String clientId= "";
            String clientSecret = "";
            if (oauthCaConfigDO!=null){
                url=oauthCaConfigDO.getUrl()+"/gateway/selfSign/request";
                clientId=oauthCaConfigDO.getClientId();
                clientSecret=oauthCaConfigDO.getClientSecret();
            }
            JSONObject msg = new JSONObject();
            JSONObject head = new JSONObject();
            head.put("clientId",clientId);
            head.put("clientSecret",clientSecret);
            msg.put("head",head);
            JSONObject body = new JSONObject();
            if (StringUtils.isNoneBlank(sysTag)){
                body.put("sysTag",sysTag);
            }
            body.put("openId",openId);
            msg.put("body",body);
            logger.info("请求参数:"+msg);
            String response = httpClientUtil.sendPost(url,msg.toJSONString());
            logger.info("请求自动签名授权接口 :"+response);
            return JSONObject.parseObject(response);
        }catch (Exception e){
            e.printStackTrace();
        }
        return null;
    }
    /***
     * 自动签名授权-获取授权结果
     * @param baseDoctorDO
     * @param sysTag
     * @return
     */
    public JSONObject selfSignGetResult(BaseDoctorDO baseDoctorDO, String sysTag){
        try {
            OauthCaConfigDO oauthCaConfigDO = oauthCaConfigDao.findOne("oauth_ca_config");
            String url = "";
            String clientId= "";
            String clientSecret = "";
            if (oauthCaConfigDO!=null){
                url=oauthCaConfigDO.getUrl()+"/gateway/selfSign/getResult";
                clientId=oauthCaConfigDO.getClientId();
                clientSecret=oauthCaConfigDO.getClientSecret();
            }
            JSONObject msg = new JSONObject();
            JSONObject head = new JSONObject();
            head.put("clientId",clientId);
            head.put("clientSecret",clientSecret);
            msg.put("head",head);
            JSONObject body = new JSONObject();
            if (StringUtils.isNoneBlank(sysTag)){
                body.put("sysTag",sysTag);
            }
            body.put("openId",baseDoctorDO.getOpenid());
            msg.put("body",body);
            logger.info("请求参数:"+msg);
            String response = httpClientUtil.sendPost(url,msg.toJSONString());
            JSONObject jsonRes=JSONObject.parseObject(response);
            JSONObject jsonObject = jsonRes.getJSONObject("data");
            Integer grantStep = jsonObject.getInteger("grantStep");
            if(1==grantStep){
                baseDoctorDO.setIsSign("1");
                baseDoctorDO.setLastSignTime(new Date());
                baseDoctorDao.save(baseDoctorDO);
            }
            logger.info("获取授权结果 :"+response);
            return JSONObject.parseObject(response);
        }catch (Exception e){
            e.printStackTrace();
        }
        return null;
    }
    /***
     * 自动签名授权-退出授权接口
     * @param openId
     * @param sysTag
     * @return
     */
    public JSONObject selfSignQuit(String openId,String sysTag){
        try {
            OauthCaConfigDO oauthCaConfigDO = oauthCaConfigDao.findOne("oauth_ca_config");
            String url = "";
            String clientId= "";
            String clientSecret = "";
            if (oauthCaConfigDO!=null){
                url=oauthCaConfigDO.getUrl()+"/gateway/selfSign/quit";
                clientId=oauthCaConfigDO.getClientId();
                clientSecret=oauthCaConfigDO.getClientSecret();
            }
            JSONObject msg = new JSONObject();
            JSONObject head = new JSONObject();
            head.put("clientId",clientId);
            head.put("clientSecret",clientSecret);
            msg.put("head",head);
            JSONObject body = new JSONObject();
            if (StringUtils.isNoneBlank(sysTag)){
                body.put("sysTag",sysTag);
            }
            body.put("openId",openId);
            msg.put("body",body);
            logger.info("请求参数:"+msg);
            String response = httpClientUtil.sendPost(url,msg.toJSONString());
            logger.info("退出授权接口 :"+response);
            return JSONObject.parseObject(response);
        }catch (Exception e){
            e.printStackTrace();
        }
        return null;
    }
    public JSONObject checkDoctorNeedSign(String doctorId,String sysTag){
        BaseDoctorDO baseDoctorDO =baseDoctorDao.findById(doctorId);
        JSONObject jsonObject = new JSONObject();
        if (baseDoctorDO!=null){
            int defaultMinute=360;
            WlyyHospitalSysDictDO wlyyHospitalSysDictDO=wlyyHospitalSysDictDao.findById("singTimeControl");
            if (wlyyHospitalSysDictDO!=null){
                defaultMinute=Integer.parseInt(wlyyHospitalSysDictDO.getDictValue());
            }
            long nowTime = new Date().getTime();
            long lastSignTime = baseDoctorDO.getLastSignTime()==null?new Date().getTime():baseDoctorDO.getLastSignTime().getTime();
            if ((nowTime-lastSignTime)>defaultMinute*60*1000){
                baseDoctorDO.setIsSign("0");
                jsonObject = this.selfSignRequest(baseDoctorDO.getOpenid(),sysTag);
                jsonObject.put("isNeedSign","true");
            }else {
                jsonObject.put("status",200);
                jsonObject.put("isNeedSign","false");
            }
            baseDoctorDO = baseDoctorDao.save(baseDoctorDO);
        }
        return jsonObject;
    }
}

+ 55 - 27
business/base-service/src/main/java/com/yihu/jw/hospital/prescription/service/entrance/EntranceService.java

@ -7,9 +7,11 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.jw.dict.dao.DictHospitalDeptDao;
import com.yihu.jw.doctor.dao.BaseDoctorDao;
import com.yihu.jw.doctor.dao.BaseDoctorHospitalDao;
import com.yihu.jw.doctor.dao.BaseDoctorRoleDao;
import com.yihu.jw.entity.base.dict.DictHospitalDeptDO;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
import com.yihu.jw.entity.base.doctor.BaseDoctorHospitalDO;
import com.yihu.jw.entity.base.doctor.BaseDoctorRoleDO;
import com.yihu.jw.entity.hospital.consult.WlyyHospitalSysDictDO;
import com.yihu.jw.entity.hospital.dict.WlyyChargeDictDO;
import com.yihu.jw.entity.hospital.doctor.BaseDoctorZsInfoDO;
@ -134,6 +136,8 @@ public class EntranceService {
    private OutpatientDao outpatientDao;
    @Autowired
    private WlyyHttpLogDao wlyyHttpLogDao;
    @Autowired
    private BaseDoctorRoleDao baseDoctorRoleDao;
    private static String entranceUrl="http://172.16.100.240:10023/mqsdk/";
//    private static String entranceUrl="http://localhost:10023/mqsdk/";
@ -1453,15 +1457,16 @@ public class EntranceService {
        String s = params.toString();
        re = WebserviceUtil.post(urlString, namespace, action, params);
        logger.info("银医通下载: " + re);
        XMLSerializer xmlSerializer = new XMLSerializer();
        JSON json = xmlSerializer.read(re);
        try {
            XMLSerializer xmlSerializer = new XMLSerializer();
            JSON json = xmlSerializer.read(re);
//        Object errorCode = ((net.sf.json.JSONObject) json).get("error_code");
        //由于新建档的居民没有银医通,数据没办法同步。调用接口,暂时不判断返回结果,由诊间支付统一推送消息让居民支付
            //由于新建档的居民没有银医通,数据没办法同步。调用接口,暂时不判断返回结果,由诊间支付统一推送消息让居民支付
//        JSON json2 = xmlSerializer.read(((net.sf.json.JSONObject) json).get("response").toString());
//        System.out.println("银医通下载response:" + json2.toString(1));
        jsonObject.element("code", "1");
        jsonObject.element("obj", json);
            jsonObject.element("code", "1");
            jsonObject.element("obj", json);
//        if ("ok".equals(errorCode)) {
//            JSON json2 = xmlSerializer.read(((net.sf.json.JSONObject) json).get("response").toString());
//            System.out.println("银医通下载response:" + json2.toString(1));
@ -1473,14 +1478,19 @@ public class EntranceService {
//            jsonObject.element("obj", "银医通下载失败," + errorMsg);
//            //{"error_type":"0","error_code":"10002","error_msg":"卡号无效"}
//        }
        if (StringUtils.isEmpty(re)) {
            throw new Exception("返回为空!");
        } else {
            if (re.startsWith("error")) {
                throw new Exception(re);
            if (StringUtils.isEmpty(re)) {
                throw new Exception("返回为空!");
            } else {
                if (re.startsWith("error")) {
                    throw new Exception(re);
                }
            }
            return jsonObject;
        }catch (Exception e){
            e.printStackTrace();
            return null;
        }
        return jsonObject;
    }
    /**
@ -1818,6 +1828,7 @@ public class EntranceService {
                            wlyyChargeDictDO.setDeptTypeCode(winNo);
                            Double free = null == jsonObjectBody.get("req_fee") ? 0 : Double.parseDouble(jsonObjectBody.get("req_fee").toString());
                            wlyyChargeDictDO.setReqFee(free);
                            wlyyChargeDictDO.setIsDel("1");
                            wlyyChargeDictDO.setCreateTime(new Date());
                            map.put(chareCode + "_" + winNo, chareName);
                            wlyyChargeDictDO = wlyyChargeDictDao.save(wlyyChargeDictDO);
@ -2596,7 +2607,6 @@ public class EntranceService {
        return ConvertUtil.convertListEnvelopInBodyRow(resp);
    }
    /**
     * 同步医生信息
     *
@ -2655,9 +2665,12 @@ public class EntranceService {
                                //保存医生信息
                                BaseDoctorDO baseDoctorDO = new BaseDoctorDO();
                                String idCard = null == jsonObjectBody.get("Card_Id") ? "" : jsonObjectBody.get("Card_Id").toString();
                                String[] doctorIdcards = docIdCard.split(",");
                                String docIdCardOne ="";
                                for (int j =0 ;j<doctorIdcards.length;j++){
                                    docIdCardOne = doctorIdcards[j];
                                //同步单条信息
                                if (docIdCard.equals(idCard)) {
                                if (docIdCardOne.equals(idCard)) {
                                    baseDoctorDO.setIdcard(idCard);
                                    baseDoctorDO.setBirthday(IdCardUtil.getBirthdayForIdcard(idCard));
@ -2719,14 +2732,24 @@ public class EntranceService {
                                        baseDoctorHospitalDO.setDel("1");
                                        baseDoctorHospitalDao.save(baseDoctorHospitalDO);
                                    }
                                    BaseDoctorRoleDO roleList = baseDoctorRoleDao.findByDoctorCodeAndroleCode(baseDoctorDO.getId(), "specialist");
                                    if (roleList == null) {
                                        roleList = new BaseDoctorRoleDO();
                                        roleList.setDoctorCode(baseDoctorDO.getId());
                                        roleList.setRoleCode("specialist");
                                        baseDoctorRoleDao.save(roleList);
                                    }
                                    i++;
                                }
                                }
                            }
                        }
                    }
                }
            }
        }
        return i;
    }
@ -3009,8 +3032,10 @@ public class EntranceService {
                                ,String jumpUrl,String miniAppId,String miniAppUrl,String remark,String sender) throws Exception{
        WlyyHospitalSysDictDO wlyyHospitalSysDictDO = hospitalSysDictDao.findById("zsMsgFlowUrl");
        String url = "";
        String pyCode=null;
        if (wlyyHospitalSysDictDO!=null){
            url = wlyyHospitalSysDictDO.getDictValue();
            pyCode=wlyyHospitalSysDictDO.getPyCode();
        }
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("visitId",visitId);
@ -3031,20 +3056,23 @@ public class EntranceService {
        logger.info("消息中心入参=="+jsonObject.toString());
        logger.info("url"+url);
        try {
            response =  httpClientUtil.postBody(url,jsonObject);
            logger.info("response"+response);
            com.alibaba.fastjson.JSONObject object = com.alibaba.fastjson.JSONObject.parseObject(response);
            //{"code":200,"message":"SUCCESS","data":null}
            WlyyHttpLogDO wlyyHttpLogDO = new WlyyHttpLogDO();
            wlyyHttpLogDO.setRequest(jsonObject.toString());
            wlyyHttpLogDO.setResponse(response);
            wlyyHttpLogDO.setName(remark+"url=="+url);
            wlyyHttpLogDO.setCreateTime(new Date());
            wlyyHttpLogDao.save(wlyyHttpLogDO);
            if(object.getInteger("code")==200){
                String message = object.getString("message");
                return message;
            if (StringUtils.isNoneBlank(pyCode)&&pyCode.equalsIgnoreCase("1")){
                response =  httpClientUtil.postBody(url,jsonObject);
                logger.info("response"+response);
                com.alibaba.fastjson.JSONObject object = com.alibaba.fastjson.JSONObject.parseObject(response);
                //{"code":200,"message":"SUCCESS","data":null}
                WlyyHttpLogDO wlyyHttpLogDO = new WlyyHttpLogDO();
                wlyyHttpLogDO.setRequest(jsonObject.toString());
                wlyyHttpLogDO.setResponse(response);
                wlyyHttpLogDO.setName(remark+"url=="+url);
                wlyyHttpLogDO.setCreateTime(new Date());
                wlyyHttpLogDao.save(wlyyHttpLogDO);
                if(object.getInteger("code")==200){
                    String message = object.getString("message");
                    return message;
                }
            }
        }catch (Exception e){
            e.printStackTrace();
        }

+ 39 - 11
business/base-service/src/main/java/com/yihu/jw/hospital/prescription/service/entrance/XzzxEntranceService.java

@ -22,6 +22,7 @@ import com.yihu.jw.entity.hospital.httplog.WlyyHttpLogDO;
import com.yihu.jw.entity.hospital.mapping.DoctorMappingDO;
import com.yihu.jw.entity.hospital.mapping.PatientMappingDO;
import com.yihu.jw.entity.hospital.prescription.*;
import com.yihu.jw.file_upload.FileUploadService;
import com.yihu.jw.hospital.dict.WlyyChargeDictDao;
import com.yihu.jw.hospital.dict.WlyyHospitalSysDictDao;
import com.yihu.jw.hospital.httplog.dao.WlyyHttpLogDao;
@ -33,6 +34,7 @@ import com.yihu.jw.patient.dao.BasePatientDao;
import com.yihu.jw.restmodel.hospital.doctor.CheckInfoVO;
import com.yihu.jw.restmodel.hospital.doctor.PersonInfoVO;
import com.yihu.jw.restmodel.hospital.prescription.*;
import com.yihu.jw.restmodel.iot.common.UploadVO;
import com.yihu.jw.util.common.IdCardUtil;
import com.yihu.jw.util.date.DateUtil;
import com.yihu.jw.util.http.HttpClientUtil;
@ -49,11 +51,16 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import javax.transaction.Transactional;
import java.io.IOException;
import java.io.StringReader;
import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.*;
@ -116,12 +123,17 @@ public class XzzxEntranceService{
    private BaseDoctorHospitalDao baseDoctorHospitalDao;
    @Autowired
    private PrescriptionEmrDao prescriptionEmrDao;
    @Value("${fastDFS.fastdfs_file_url}")
    private String fastdfs_file_url;
    @Autowired
    private FileUploadService fileUploadService;
    private static String key="bvvsf3JA0mUXMU+mVnMaOQ==";
    //发送微信模板消息
    public static String sendMessageUrl ="http://172.16.100.37:8090/hospitalPortal-sms/sms/sendMessage";
    /*@Value("${wechat.url}")*/
    private String sendMessageUrl="http://172.16.100.37:8090/hospitalPortal-sms/sms/sendMessage";
    public static String entranceUrl = "http://172.16.100.240:10023/xzzx/";
    public static String entranceUrlLocal = "http://localhost:10023/xzzx/";
@ -1151,7 +1163,7 @@ public class XzzxEntranceService{
     * @return
     * @throws Exception
     */
    public String GetDrugDict(String spellCode)throws Exception{
    public String GetDrugDict(String spellCode,String drugNo)throws Exception{
        String api = "GetDrugDict";
        String msgHeader ="<?xml version=\"1.0\" encoding=\"utf-8\"?> " +
                "<root> " +
@ -1161,9 +1173,12 @@ public class XzzxEntranceService{
                "   <certificate>"+key+"</certificate> " +
                "</root>";
        String condition ="";
        if (!StringUtils.isEmpty(spellCode)){
        if (!StringUtils.isEmpty(spellCode)&&!"null".equalsIgnoreCase(spellCode)){
            condition += "<spell_code>"+spellCode+"</spell_code>";
        }
        if (!StringUtils.isEmpty(drugNo)&&!"null".equalsIgnoreCase(drugNo)){
            condition += "<physic_code>"+drugNo+"</physic_code>";
        }
        String msgBody ="<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
                "<root>"+condition+"</root>";
@ -1837,6 +1852,7 @@ public class XzzxEntranceService{
                htmlDeo = replaceHtml(htmlDeo,"@patientAge@",jsonObject.getString("patientAge"));
                htmlDeo = replaceHtml(htmlDeo,"@patientsex@",jsonObject.getString("patientsex"));
                htmlDeo = replaceHtml(htmlDeo,"@deptCode@",jsonObject.getString("deptCode"));
                htmlDeo = replaceHtml(htmlDeo,"@baseSign@",jsonObject.getString("baseSign"));
                htmlDeo = replaceHtml(htmlDeo,"@r+outpatientCode@",jsonObject.getString("outpatientCode"));
                htmlDeo = replaceHtml(htmlDeo,"@patientClan@",jsonObject.getString("patientClan"));
                htmlDeo = replaceHtml(htmlDeo,"@Special@",prescriptionEmrDO.getSpecialHistory());
@ -2378,6 +2394,7 @@ public class XzzxEntranceService{
        String response="";
        String idCard = patientDO.getIdcard();
        String url = entranceUrl+"findPatientCard?idCard="+idCard;
        String mappingCode="";
        response = httpClientUtil.get(url,"GBK");
        JSONObject object = JSONObject.parseObject(response);
        if(object.getInteger("status")==200){
@ -2396,10 +2413,11 @@ public class XzzxEntranceService{
                }else {
                    patientMappingDO.setMappingCode(object1.getString("SICKID"));
                }
                mappingCode=object1.getString("SICKID");
                patientMappingDO = patientMappingDao.save(patientMappingDO);
            }
        }
        return patientMappingDO.getMappingCode();
        return mappingCode;
    }
    public String updatePatientMapping(String patient,String cardNo){
        BasePatientDO patientDO = patientDao.findById(patient);
@ -3043,9 +3061,9 @@ public class XzzxEntranceService{
     * @param spellCode 拼音码
     * @return
     */
    public JSONArray selectDrugDict(String spellCode) throws Exception {
    public JSONArray selectDrugDict(String spellCode,String drugNo) throws Exception {
        String response="";
        String url = entranceUrl+"getDrugDict?spellCode="+spellCode;
        String url = entranceUrl+"getDrugDict?spellCode="+spellCode+"&drugNo="+drugNo;
        response = httpClientUtil.get(url,"GBK");
        JSONObject object = JSONObject.parseObject(response);
        JSONArray jsonArray = new JSONArray();
@ -3076,6 +3094,14 @@ public class XzzxEntranceService{
                object1.put("weigh_unit",jsonObject.getString("DOSE_UNIT"));
                object1.put("vol_unit","");
                object1.put("mini_unit_name",jsonObject.getString("PHYSIC_UNIT"));
                DecimalFormat df =new DecimalFormat("0.00");
                Double packSize=Double.parseDouble(jsonObject.get("PACK_SPEC").toString().equals("[]")?"1":jsonObject.getString("PACK_SPEC"));
                Double retprice=Double.parseDouble(jsonObject.get("RETAIL_PRICE").toString().equals("[]")?"0":jsonObject.getString("RETAIL_PRICE"));
                Double miniUnitPrice=0.00;
                if (0.00!=packSize){
                    miniUnitPrice=retprice/packSize;
                }
                object1.put("mini_unit_price",df.format(miniUnitPrice));
                object1.put("pack_unit_name",jsonObject.getString("PRICE_UNIT"));
                object1.put("weigh_unit_name",jsonObject.getString("DOSE_UNIT"));
                object1.put("vol_unit_name","");
@ -3091,14 +3117,12 @@ public class XzzxEntranceService{
                object1.put("bz_usage_name",jsonObject.getString("FREQUENCY"));
                object1.put("QUANTITY",jsonObject.getString("QUANTITY"));
                object1.put("DAY_COUNT",jsonObject.getString("DAY_COUNT"));
                jsonArray.add(object1);
            }
        }
        return jsonArray;
    }
    /**
     * 查询药品用药方法
     * @param spellCode 拼音码
@ -3447,7 +3471,7 @@ public Map checkSyncHis(String IoFlag,String PayCardNo,String NullahNumber,Strin
     * @return
     * @throws Exception
     */
    public String  saveEmrToEntrance(String prescriptionId) throws Exception {
    public String  saveEmrToEntrance(String prescriptionId,String baseSign) throws Exception {
        Map<String,String> params = new HashedMap();
        WlyyPrescriptionDO wlyyPrescriptionDO = prescriptionDao.findOne(prescriptionId);
        JSONObject paramRequest = new JSONObject();
@ -3501,7 +3525,11 @@ public Map checkSyncHis(String IoFlag,String PayCardNo,String NullahNumber,Strin
            paramRequest.put("emrtype","93");
            paramRequest.put("emrtitle","互联网医院");
            if (StringUtils.isNoneBlank(baseSign)){
                //UploadVO uploadVO=fileUploadService.uploadImagesBase64(baseSign,fastdfs_file_url);
                //paramRequest.put("baseSign","https://ih.xmheart.com/fastdfs/"+uploadVO.getFullUri());
                paramRequest.put("baseSign",baseSign);
            }
        }
        params.put("jsonInfo",paramRequest.toJSONString());
        String response = "";

+ 19 - 0
business/base-service/src/main/java/com/yihu/jw/hospital/team/dao/WlyyAdminTeamDao.java

@ -0,0 +1,19 @@
package com.yihu.jw.hospital.team.dao;
import com.yihu.jw.entity.hospital.team.WlyyAdminTeamDO;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
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 WlyyAdminTeamDao extends PagingAndSortingRepository<WlyyAdminTeamDO, Integer>, JpaSpecificationExecutor<WlyyAdminTeamDO> {
    @Query("from WlyyAdminTeamDO  t where t.orgCode=?1 and t.available=1")
    List<WlyyAdminTeamDO> findTeamByOrgCode(String orgCode, Pageable pageRequest);
    @Query("from WlyyAdminTeamDO  t where t.available=1")
    List<WlyyAdminTeamDO> findTeamAndAvailable();
}

+ 16 - 0
business/base-service/src/main/java/com/yihu/jw/hospital/team/dao/WlyyAdminTeamMemberDao.java

@ -0,0 +1,16 @@
package com.yihu.jw.hospital.team.dao;
import com.yihu.jw.entity.hospital.team.WlyyAdminTeamMemberDO;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import javax.persistence.criteria.CriteriaBuilder;
import java.util.List;
public interface WlyyAdminTeamMemberDao extends PagingAndSortingRepository<WlyyAdminTeamMemberDO, Integer>, JpaSpecificationExecutor<WlyyAdminTeamMemberDO> {
    @Query("from WlyyAdminTeamMemberDO t where t.teamId=?1 and t.available=1")
    List<WlyyAdminTeamMemberDO> findByTeamId(Long teamId, Pageable pageRequest);
}

+ 12 - 0
business/base-service/src/main/java/com/yihu/jw/hospital/team/dao/WlyySignFamilyDao.java

@ -0,0 +1,12 @@
package com.yihu.jw.hospital.team.dao;
import com.yihu.jw.entity.door.SignFamily;
import com.yihu.jw.entity.hospital.team.WlyyAdminTeamDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
public interface WlyySignFamilyDao extends PagingAndSortingRepository<SignFamily, Integer>, JpaSpecificationExecutor<SignFamily> {
    @Query("select count(*) from SignFamily  t where t.doctor=?1 and t.status=1")
    Integer getCountByDoctorCode(String doctor);
}

+ 129 - 0
business/base-service/src/main/java/com/yihu/jw/hospital/team/service/WlyyAdminTeamService.java

@ -0,0 +1,129 @@
package com.yihu.jw.hospital.team.service;
import com.tencentcloudapi.tci.v20190318.models.Person;
import com.yihu.jw.area.dao.BaseTownDao;
import com.yihu.jw.entity.base.area.BaseTownDO;
import com.yihu.jw.entity.hospital.DmHospitalDO;
import com.yihu.jw.entity.hospital.team.WlyyAdminTeamDO;
import com.yihu.jw.entity.hospital.team.WlyyAdminTeamMemberDO;
import com.yihu.jw.hospital.HospitalDao;
import com.yihu.jw.hospital.team.dao.WlyyAdminTeamDao;
import com.yihu.jw.hospital.team.dao.WlyyAdminTeamMemberDao;
import com.yihu.jw.hospital.team.dao.WlyySignFamilyDao;
import com.yihu.jw.restmodel.web.MixEnvelop;
import com.yihu.jw.utils.hibernate.HibenateUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Service
public class WlyyAdminTeamService {
    @Autowired
    private WlyyAdminTeamDao wlyyAdminTeamDao;
    @Autowired
    private WlyyAdminTeamMemberDao wlyyAdminTeamMemberDao;
    @Autowired
    private HospitalDao hospitalDao;
    @Autowired
    private WlyySignFamilyDao wlyySignFamilyDao;
    @Autowired
    private HibenateUtils hibenateUtils;
    @Autowired
    private BaseTownDao baseTownDao;
    //查询机构
    public MixEnvelop findHospitalByTown(String townCode,Integer page,Integer pageSize){
        PageRequest pageRequest = new PageRequest(page-1,pageSize);
        MixEnvelop mixEnvelop = new MixEnvelop();
        List<DmHospitalDO> list =null;
        list = hospitalDao.findByTownCode(townCode,pageRequest);
        mixEnvelop.setCurrPage(page);
        mixEnvelop.setPageSize(pageSize);
        mixEnvelop.setDetailModelList(list);
        mixEnvelop.setTotalCount(list==null?0:list.size());
        return mixEnvelop;
    }
    //查询团队
    public MixEnvelop findTeamByOrg(String cityCode,String townCode,String orgCode,Integer page,Integer pageSize){
        String sql ="select t.id as \"id\"," +
                "t.name as \"name\"," +
                "t.create_time as \"createTime\"," +
                "t.leader_code as \"leaderCode\"," +
                "t.leader_name as \"leaderName\"," +
                "t.org_code as \"orgCode\"," +
                "t.member_count as \"memberCount\"," +
                "b.name as \"orgName\"," +
                "t.accept_type as \"acceptType\"," +
                "t.special_code as \"specialCode\"," +
                "t.special_name as \"specialName\"," +
                "t.available as \"available\"" +
                " from wlyy_admin_team t inner join dm_hospital b on t.org_code = b.code where t.available=1";
        PageRequest pageRequest = new PageRequest(page-1,pageSize);
        MixEnvelop mixEnvelop = new MixEnvelop();
        if (StringUtils.isNoneBlank(townCode)){
           sql+=" and b.town ='"+townCode+"'";
        }else {
            sql+=" and b.city ='"+cityCode+"'";
        }
        if (StringUtils.isNoneBlank(orgCode)){
            sql+=" and t.org_code ='"+orgCode+"'";
        }
        List<Map<String ,Object>>list= hibenateUtils.createSQLQuery(sql,page,pageSize);
        mixEnvelop.setCurrPage(page);
        mixEnvelop.setPageSize(pageSize);
        mixEnvelop.setDetailModelList(list);
        mixEnvelop.setTotalCount(list==null?0:list.size());
        return mixEnvelop;
    }
    //查询团队下的医生
    public MixEnvelop findDoctorByTeam(String teamCode,Integer page,Integer pageSize){
        PageRequest pageRequest = new PageRequest(page-1,pageSize);
        MixEnvelop mixEnvelop = new MixEnvelop();
        String orgName="";
        List<WlyyAdminTeamMemberDO> list = wlyyAdminTeamMemberDao.findByTeamId(Long.parseLong(teamCode),pageRequest);
        WlyyAdminTeamDO wlyyAdminTeamDO1 =wlyyAdminTeamDao.findOne(Integer.parseInt(teamCode));
        if (wlyyAdminTeamDO1!=null){
            DmHospitalDO dmHospitalDO = hospitalDao.findByCode(wlyyAdminTeamDO1.getOrgCode());
            if (dmHospitalDO!=null){
                orgName=dmHospitalDO.getName();
            }
        }
        for (WlyyAdminTeamMemberDO wlyyAdminTeamMemberDO:list){
            /*Integer count = wlyySignFamilyDao.getCountByDoctorCode(wlyyAdminTeamMemberDO.getDoctorCode());
            wlyyAdminTeamMemberDO.setSignNum(count==null?0:count);*/
            WlyyAdminTeamDO wlyyAdminTeamDO = wlyyAdminTeamDao.findOne(wlyyAdminTeamMemberDO.getTeamId().intValue());
            if (wlyyAdminTeamDO != null) {
                if (wlyyAdminTeamDO.getLeaderCode().equalsIgnoreCase(wlyyAdminTeamMemberDO.getDoctorCode())) {
                    wlyyAdminTeamMemberDO.setTeamLeader(true);
                    wlyyAdminTeamMemberDO.setTeamLeaderOrder(1);
                }else {
                    wlyyAdminTeamMemberDO.setTeamLeaderOrder(0);
                }
            }else {
                wlyyAdminTeamMemberDO.setTeamLeaderOrder(0);
            }
            wlyyAdminTeamMemberDO.setOrgName(orgName);
        }
        list=list.stream().sorted(Comparator.comparing(WlyyAdminTeamMemberDO::getTeamLeaderOrder).reversed()).collect(Collectors.toList());
        mixEnvelop.setCurrPage(page);
        mixEnvelop.setPageSize(pageSize);
        mixEnvelop.setDetailModelList(list);
        mixEnvelop.setTotalCount(list==null?0:list.size());
        return mixEnvelop;
    }
    public List<BaseTownDO> findTownByCity(String city){
       return baseTownDao.findByCityCode(city);
    }
    public WlyyAdminTeamMemberDO findOneTeamMemberById(Integer id){
        return wlyyAdminTeamMemberDao.findOne(id);
    }
}

+ 4 - 2
business/base-service/src/main/java/com/yihu/jw/internet/service/InternetCommonService.java

@ -1016,12 +1016,14 @@ public class InternetCommonService extends BaseJpaService<InternetUpErrorLogDO,
            sql =  sql +  "  and  a.id =:keyId ";
            params.put("keyId",keyId);
        }
        logger.info("sql===="+sql);
        List<Map<String,Object>> list = hibenateUtils.createSQLQuery(sql,params);
        logger.info("count===="+list.size());
        total = list.size();
        for(int i=0; i<list.size(); i++) {
            logger.info("进入循环"+list.get(i));
            Map<String,Object> info = list.get(i);
            JSONObject jb = new JSONObject();
            Boolean errorFlag = false;
@ -1589,7 +1591,7 @@ public class InternetCommonService extends BaseJpaService<InternetUpErrorLogDO,
                "WHERE\n" +
                "\ta.id = b.consult\n" +
                "AND a.symptoms IS NOT NULL AND b.status=1 " +
                " and c.doctor not in ('402803816babc778016babd0dee21112')";
                " and c.id not in ('402803816babc778016babd0dee21112')";
        if(StringUtils.isNotBlank(startDate)){
            wlzxSql =  wlzxSql + "  and a.czrq >=:startDate ";

+ 13 - 0
business/base-service/src/main/java/com/yihu/jw/monitor/dao/BaseInterfaceDictDao.java

@ -0,0 +1,13 @@
package com.yihu.jw.monitor.dao;
import com.yihu.jw.entity.base.system.BaseInterfaceDictDO;
import com.yihu.jw.entity.base.system.BaseInterfaceMonitorDO;
import com.yihu.jw.entity.base.system.BaseSourceDictDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
public interface BaseInterfaceDictDao  extends PagingAndSortingRepository<BaseInterfaceDictDO, String>, JpaSpecificationExecutor<BaseInterfaceDictDO> {
    @Query("from BaseInterfaceDictDO t where t.isDel='1' and t.interfaceName=?1")
    BaseInterfaceDictDO findByinterfaceName(String source);
}

+ 9 - 0
business/base-service/src/main/java/com/yihu/jw/monitor/dao/BaseInterfaceMonitorDao.java

@ -0,0 +1,9 @@
package com.yihu.jw.monitor.dao;
import com.yihu.jw.entity.base.message.BaseMessageDO;
import com.yihu.jw.entity.base.system.BaseInterfaceMonitorDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
public interface BaseInterfaceMonitorDao extends PagingAndSortingRepository<BaseInterfaceMonitorDO, String>, JpaSpecificationExecutor<BaseInterfaceMonitorDO> {
}

+ 12 - 0
business/base-service/src/main/java/com/yihu/jw/monitor/dao/BaseSourceDictDao.java

@ -0,0 +1,12 @@
package com.yihu.jw.monitor.dao;
import com.yihu.jw.entity.base.system.BaseInterfaceDictDO;
import com.yihu.jw.entity.base.system.BaseSourceDictDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
public interface BaseSourceDictDao extends PagingAndSortingRepository<BaseSourceDictDO, String>, JpaSpecificationExecutor<BaseSourceDictDO> {
    @Query("from BaseSourceDictDO t where t.isDel='1' and t.source=?1")
    BaseSourceDictDO findSourceBySource(String source);
}

+ 49 - 0
business/base-service/src/main/java/com/yihu/jw/monitor/service/BaseInterfaceMonitorService.java

@ -0,0 +1,49 @@
package com.yihu.jw.monitor.service;
import com.yihu.jw.entity.base.message.BaseMessageDO;
import com.yihu.jw.entity.base.system.BaseInterfaceDictDO;
import com.yihu.jw.entity.base.system.BaseInterfaceMonitorDO;
import com.yihu.jw.entity.base.system.BaseSourceDictDO;
import com.yihu.jw.message.dao.MessageDao;
import com.yihu.jw.monitor.dao.BaseInterfaceDictDao;
import com.yihu.jw.monitor.dao.BaseInterfaceMonitorDao;
import com.yihu.jw.monitor.dao.BaseSourceDictDao;
import com.yihu.jw.util.date.DateUtil;
import com.yihu.jw.utils.StringUtil;
import com.yihu.mysql.query.BaseJpaService;
import org.apache.commons.lang3.StringUtils;
import org.checkerframework.checker.units.qual.A;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class BaseInterfaceMonitorService extends BaseJpaService<BaseInterfaceMonitorDO, BaseInterfaceMonitorDao> {
    @Autowired
    private BaseInterfaceMonitorDao baseInterfaceMonitorDao;
    @Autowired
    private BaseSourceDictDao baseSourceDictDao;
    @Autowired
    private BaseInterfaceDictDao baseInterfaceDictDao;
    public void saveInterfaceMonitor(String source ,String functionName,Integer time ,String startTime,String endTime){
        BaseInterfaceMonitorDO baseInterfaceMonitorDO = new BaseInterfaceMonitorDO();
        baseInterfaceMonitorDO.setSource(source);
        BaseSourceDictDO baseSourceDictDO=baseSourceDictDao.findSourceBySource(source);
        if (null!=baseSourceDictDO){
            baseInterfaceMonitorDO.setSourceName(baseSourceDictDO.getSourceName());
        }
        BaseInterfaceDictDO baseInterfaceDictDO=baseInterfaceDictDao.findByinterfaceName(functionName);
        if (null!=baseInterfaceDictDO){
            baseInterfaceMonitorDO.setTypeName(baseInterfaceDictDO.getInterfaceTypeName());
            baseInterfaceMonitorDO.setType(Integer.valueOf(baseInterfaceDictDO.getInterfaceType()));
        }
        baseInterfaceMonitorDO.setTime(time);
        if (StringUtils.isNotBlank(startTime)){
            baseInterfaceMonitorDO.setStartTime(DateUtil.strToDate(startTime));
        }
        if (StringUtils.isNotBlank(startTime)){
            baseInterfaceMonitorDO.setEndTime(DateUtil.strToDate(endTime));
        }
        baseInterfaceMonitorDao.save(baseInterfaceMonitorDO);
    }
}

文件差异内容过多而无法显示
+ 5 - 4
business/base-service/src/main/java/com/yihu/jw/oauth/OauthSsoService.java


+ 64 - 42
business/base-service/src/main/java/com/yihu/jw/order/BusinessOrderService.java

@ -280,12 +280,13 @@ public class BusinessOrderService extends BaseJpaService<BusinessOrderDO,Busines
        }
        businessOrderDO.setUploadStatus(0);
        businessOrderDO.setPayType(1);
        String baseUrl = prescriptionService.findDomainUrlInDict();
        if (businessOrderDO.getOrderCategory().equalsIgnoreCase("1")){
            businessOrderDO.setAppCallbackUrl("https://intel.yanketong.com/ims-app-web/#/yk/consult/record?consultCode="+businessOrderDO.getRelationCode()+"&verifyCode=");
            businessOrderDO.setPcCallbackUrl("https://intel.yanketong.com/ims-web/#/yk/consult/record?consultCode="+businessOrderDO.getRelationCode()+"&verifyCode=");
            businessOrderDO.setAppCallbackUrl(baseUrl+"/ims-app-web/#/yk/consult/record?consultCode="+businessOrderDO.getRelationCode()+"&verifyCode=");
            businessOrderDO.setPcCallbackUrl(baseUrl+"/ims-web/#/yk/consult/record?consultCode="+businessOrderDO.getRelationCode()+"&verifyCode=");
        }else {
            businessOrderDO.setAppCallbackUrl("https://intel.yanketong.com/ims-app-web/#/yk/consult/record?outpatientId="+businessOrderDO.getRelationCode()+"&verifyCode=");
            businessOrderDO.setPcCallbackUrl("https://intel.yanketong.com/ims-web/#/yk/consult/record?outpatientId="+businessOrderDO.getRelationCode()+"&verifyCode=");
            businessOrderDO.setAppCallbackUrl(baseUrl+"/ims-app-web/#/yk/consult/record?outpatientId="+businessOrderDO.getRelationCode()+"&verifyCode=");
            businessOrderDO.setPcCallbackUrl(baseUrl+"/ims-web/#/yk/consult/record?outpatientId="+businessOrderDO.getRelationCode()+"&verifyCode=");
        }
        List<WlyyHospitalSysDictDO> hospitalSysDictDOS = hospitalSysDictDao.findByDictName("WX_MONEY");
        if (businessOrderDO!=null&&businessOrderDO.getPayPrice()==null){
@ -452,9 +453,14 @@ public class BusinessOrderService extends BaseJpaService<BusinessOrderDO,Busines
     */
    @Transactional(rollbackFor = Exception.class)
    public String refund(Map<String,String> par,String appKey) throws Exception {
        WlyyHospitalSysDictDO hospitalSysDictDO = hospitalSysDictDao.findById("REFUND");
        if(StringUtils.isNoneBlank(hospitalSysDictDO.getImgUrl())){
            //公网域名必须为https
            par.put("notify_url",hospitalSysDictDO.getImgUrl());
        }
        String xml= WeiXinPayUtils.getXmlBeforUnifiedorder(par, appKey);
        logger.info("xml:"+xml);
        WlyyHospitalSysDictDO hospitalSysDictDO = hospitalSysDictDao.findById("REFUND");
        return HttpUtil.doRefund("https://api.mch.weixin.qq.com/secapi/pay/refund",xml,hospitalSysDictDO.getDictCode(),hospitalSysDictDO.getDictValue());
    }
@ -751,6 +757,9 @@ public class BusinessOrderService extends BaseJpaService<BusinessOrderDO,Busines
            orderRefundDao.save(orderRefundDO);
            updatePayStatusByRefund(orderNo);
        }
        if (businessOrderDO!=null){
            ykyyService.updateYktOrderStatus(businessOrderDO.getOrderNo(),"2");
        }
        return map;
    }
@ -922,7 +931,7 @@ public class BusinessOrderService extends BaseJpaService<BusinessOrderDO,Busines
                        wlyyPrescriptionDO.setPayStatus(1);
                        wlyyPrescriptionDO.setPayTime(new Date());
                        prescriptionDao.save(wlyyPrescriptionDO);
                        List<WlyyInspectionDO> inspectionDOList = inspectionDao.findByPrescriptionId(wlyyPrescriptionDO.getId(),1);
                        /*List<WlyyInspectionDO> inspectionDOList = inspectionDao.findByPrescriptionId(wlyyPrescriptionDO.getId(),1);
                        for (WlyyInspectionDO wlyyInspectionDO:inspectionDOList){
                            String updateMsYj01 = "update V_MS_YJ01 t set t.HLWJF=1 where t.yjxh='"+wlyyInspectionDO.getHisCode()+"'";
                            try {
@ -930,7 +939,7 @@ public class BusinessOrderService extends BaseJpaService<BusinessOrderDO,Busines
                            } catch (Exception e) {
                                e.printStackTrace();
                            }
                        }
                        }*/
                        prescriptionLogService.addPrescriptionLog(wlyyPrescriptionDO.getId(),30,1,wlyyPrescriptionDO.getPatientCode(),wlyyPrescriptionDO.getPatientName(),"",new Date());
                        List<WlyyPrescriptionInfoDO> infoDOS = prescriptionInfoDao.findByPrescriptionId(wlyyPrescriptionDO.getId(),1);
                        if (infoDOS!=null&&infoDOS.size()!=0){
@ -1349,6 +1358,7 @@ public class BusinessOrderService extends BaseJpaService<BusinessOrderDO,Busines
     */
    public BusinessOrderDO updatePayStatus(String orderNo) throws Exception {
        logger.info("入参:"+orderNo);
        String baseUrl = prescriptionService.findDomainUrlInDict();
        BusinessOrderDO businessOrderDO = businessOrderDao.selectByOrderNo(orderNo);
        WlyyHospitalSysDictDO changeMethod = hospitalSysDictDao.findById("consultPay");
        String changeflag="0";
@ -1358,7 +1368,7 @@ public class BusinessOrderService extends BaseJpaService<BusinessOrderDO,Busines
        if (businessOrderDO==null){
            throw new Exception("查不到订单!");
        }
        if (businessOrderDO.getOrderCategory().equalsIgnoreCase("1")){
        if (businessOrderDO.getOrderCategory().equalsIgnoreCase("1")&&businessOrderDO.getStatus()==0){
            if ("0".equalsIgnoreCase(changeflag)){
                ConsultDo consultDo = consultOrderDao.findOne(businessOrderDO.getRelationCode());
                consultDo.setPayStatus(1);
@ -1394,16 +1404,15 @@ public class BusinessOrderService extends BaseJpaService<BusinessOrderDO,Busines
                    }
                }
                if (wechatId.equalsIgnoreCase("xm_zsyy_wx")){
                    String url="https://hlwyy.xmzsh.com/hlwyy/ims-app-web/#/onlineChat/detail?_rs_title="+outpatientDO.getDescription()+"&type=3&id="+outpatientDO.getId();
                    String url=baseUrl+"/hlwyy/ims-app-web/#/onlineChat/detail?_rs_title="+outpatientDO.getDescription()+"&type=3&id="+outpatientDO.getId();
                    enterpriseService.sendTWMesByDoctor("zsyy",outpatientDO.getDoctor(),title,msg,url);
                }else if(wechatId.equalsIgnoreCase("xm_ykyy_wx")){
                    String url="https://intel.yanketong.com/ims-app-web/#/onlineChat/detail?_rs_title="+outpatientDO.getDescription()+"&type=3&id="+outpatientDO.getId();
                    String url=baseUrl+"/ims-app-web/#/onlineChat/detail?_rs_title="+outpatientDO.getDescription()+"&type=3&id="+outpatientDO.getId();
                    enterpriseService.sendTWMesByDoctor("xm_ykyy_wx",outpatientDO.getDoctor(),title,msg,url);
                }else if (wechatId.equalsIgnoreCase("xm_xzzx_wx")){
                    String url="https://ih.xmheart.com/hlwyy/ims-app-web/#/onlineChat/detail?_rs_title="+outpatientDO.getDescription()+"&type=3&id="+outpatientDO.getId();
                    enterpriseService.sendTWMesByDoctor("xm_xzzx_wx",outpatientDO.getDoctor(),title,msg,url);
                }
                System.out.println("发送企业模板消息成功");
                try {
                    if ("xm_zsyy_wx".equalsIgnoreCase(wechatId)){
@ -1414,19 +1423,19 @@ public class BusinessOrderService extends BaseJpaService<BusinessOrderDO,Busines
                }
            }
        }else if (businessOrderDO.getOrderCategory().equalsIgnoreCase("2")||businessOrderDO.getOrderCategory().equalsIgnoreCase("3")){
        }else if (businessOrderDO.getOrderCategory().equalsIgnoreCase("2")||businessOrderDO.getOrderCategory().equalsIgnoreCase("3")||businessOrderDO.getOrderCategory().equalsIgnoreCase("5")){
           WlyyOutpatientDO wlyyOutpatientDO = outpatientDao.findById(businessOrderDO.getRelationCode());
           wlyyOutpatientDO.setPayStatus(1);
           WlyyOutpatientDO outpatientDO = outpatientDao.save(wlyyOutpatientDO);
           try {
               if ("xm_zsyy_wx".equalsIgnoreCase(wechatId)){
               if ("xm_zsyy_wx".equalsIgnoreCase(wechatId)&&StringUtils.isNoneBlank(wlyyOutpatientDO.getDoctor())){
                   String msgUrl="https://hlwyy.xmzsh.com/ims-wx/index.html#/returnVisit/record?outpatientId="+wlyyOutpatientDO.getId();
                   prescriptionService.sendZsMsgFlow("OL_PAY_SUCCESS",wlyyOutpatientDO.getId(),"",msgUrl,"已支付问诊费");
               }
           }catch (Exception e){
               e.printStackTrace();
           }
           if (businessOrderDO.getStatus()!=null&&businessOrderDO.getStatus()!=1){
           if (businessOrderDO.getStatus()!=null&&businessOrderDO.getStatus()==0){
               //发送企业模板消息给医生
               BasePatientDO patientDO = new BasePatientDO();
               patientDO = patientDao.findById(outpatientDO.getPatient());
@ -1442,22 +1451,27 @@ public class BusinessOrderService extends BaseJpaService<BusinessOrderDO,Busines
                   age = IdCardUtil.getAgeForIdcard(patientDO.getIdcard())+"";
               }
               if (outpatientDO!=null){
                   if (outpatientDO.getType().equalsIgnoreCase("1")){
                       title = "图文复诊";
                       type="9";
                       msg = name+"("+sex+" "+age+"岁)向您发起了图文复诊,点击查看";
                   }else if (outpatientDO.getType().equalsIgnoreCase("2")){
                       title = "视频复诊";
                       type="16";
                       date = DateUtil.dateToStrLong(outpatientDO.getRegisterDate());
                       msg = name+"("+sex+" "+age+"岁)预约了"+date+"的视频复诊,点击查看";
                   if (outpatientDO.getOutpatientType().equalsIgnoreCase("2")){
                       title = "协同复诊";
                       msg = name+"("+sex+" "+age+"岁)向您发起了协同复诊,点击查看";
                   }else {
                       if (outpatientDO.getType().equalsIgnoreCase("1")){
                           title = "图文复诊";
                           type="9";
                           msg = name+"("+sex+" "+age+"岁)向您发起了图文复诊,点击查看";
                       }else if (outpatientDO.getType().equalsIgnoreCase("2")){
                           title = "视频复诊";
                           type="16";
                           date = DateUtil.dateToStrLong(outpatientDO.getRegisterDate());
                           msg = name+"("+sex+" "+age+"岁)预约了"+date+"的视频复诊,点击查看";
                       }
                   }
               }
               if (wechatId.equalsIgnoreCase("xm_zsyy_wx")){
                       String url="https://hlwyy.xmzsh.com/hlwyy/ims-app-web/#/onlineChat/detail?_rs_title="+outpatientDO.getDescription()+"&type=3&id="+outpatientDO.getId();
                   String url=baseUrl+"/hlwyy/ims-app-web/#/onlineChat/detail?_rs_title="+outpatientDO.getDescription()+"&type=3&id="+outpatientDO.getId();
                   enterpriseService.sendTWMesByDoctor("zsyy",outpatientDO.getDoctor(),title,msg,url);
               }else if (wechatId.equalsIgnoreCase("xm_ykyy_wx")){
                   String url="https://intel.yanketong.com/ims-app-web/#/onlineChat/detail?_rs_title="+outpatientDO.getDescription()+"&type=3&id="+outpatientDO.getId();
                   String url=baseUrl+"/ims-app-web/#/onlineChat/detail?_rs_title="+outpatientDO.getDescription()+"&type=3&id="+outpatientDO.getId();
                   enterpriseService.sendTWMesByDoctor("xm_ykyy_wx",outpatientDO.getDoctor(),title,msg,url);
               }else if (wechatId.equalsIgnoreCase("xm_xzzx_wx")){
                   String url="https://ih.xmheart.com/hlwyy/ims-app-web/#/onlineChat/detail?_rs_title="+outpatientDO.getDescription()+"&type=3&id="+outpatientDO.getId();
@ -1495,6 +1509,8 @@ public class BusinessOrderService extends BaseJpaService<BusinessOrderDO,Busines
     */
    public BusinessOrderDO updatePayStatusByRelation(String relationCode,String wxId) throws Exception {
        logger.info("入参:"+relationCode);
        logger.info("进入无需支付");
        String baseUrl = prescriptionService.findDomainUrlInDict();
        BusinessOrderDO businessOrderDO = businessOrderDao.selectByRelationCode(relationCode);
        WlyyHospitalSysDictDO changeMethod = hospitalSysDictDao.findById("consultPay");
        String changeflag="0";
@ -1504,7 +1520,7 @@ public class BusinessOrderService extends BaseJpaService<BusinessOrderDO,Busines
        if (businessOrderDO==null){
            throw new Exception("查不到订单!");
        }
        if (businessOrderDO.getOrderCategory().equalsIgnoreCase("1")){
        if (businessOrderDO.getOrderCategory().equalsIgnoreCase("1")&&0==businessOrderDO.getStatus()){
            if ("0".equalsIgnoreCase(changeflag)){
                ConsultDo consultDo = consultOrderDao.findOne(businessOrderDO.getRelationCode());
                consultDo.setPayStatus(1);
@ -1513,7 +1529,7 @@ public class BusinessOrderService extends BaseJpaService<BusinessOrderDO,Busines
                WlyyOutpatientDO wlyyOutpatientDO = outpatientDao.findById(businessOrderDO.getRelationCode());
                wlyyOutpatientDO.setPayStatus(1);
                WlyyOutpatientDO outpatientDO = outpatientDao.save(wlyyOutpatientDO);
                if (businessOrderDO.getStatus()!=null&&businessOrderDO.getStatus()!=1){
                if (businessOrderDO.getStatus()!=null&&businessOrderDO.getStatus()==0){
                    //发送企业模板消息给医生
                    BasePatientDO patientDO = new BasePatientDO();
                    patientDO = patientDao.findById(outpatientDO.getPatient());
@ -1538,27 +1554,27 @@ public class BusinessOrderService extends BaseJpaService<BusinessOrderDO,Busines
                        }
                    }
                    if (wxId.equalsIgnoreCase("xm_zsyy_wx")){
                        String url="https://hlwyy.xmzsh.com/hlwyy/ims-app-web/#/onlineChat/detail?_rs_title="+outpatientDO.getDescription()+"&type=3&id="+outpatientDO.getId();
                        String url=baseUrl+"/hlwyy/ims-app-web/#/onlineChat/detail?_rs_title="+outpatientDO.getDescription()+"&type=3&id="+outpatientDO.getId();
                        enterpriseService.sendTWMesByDoctor("zsyy",outpatientDO.getDoctor(),title,msg,url);
                    }else if (wxId.equalsIgnoreCase("xm_xzzx_wx")){
                        String url="https://ih.xmheart.com/hlwyy/ims-app-web/#/onlineChat/detail?_rs_title="+outpatientDO.getDescription()+"&type=3&id="+outpatientDO.getId();
                        enterpriseService.sendTWMesByDoctor("xm_xzzx_wx",outpatientDO.getDoctor(),title,msg,url);
                    }else if (wxId.equalsIgnoreCase("xm_ykyy_wx")){
                        String url="https://intel.yanketong.com/ims-app-web/#/onlineChat/detail?_rs_title="+outpatientDO.getDescription()+"&type=3&id="+outpatientDO.getId();
                        String url=baseUrl+"/ims-app-web/#/onlineChat/detail?_rs_title="+outpatientDO.getDescription()+"&type=3&id="+outpatientDO.getId();
                        enterpriseService.sendTWMesByDoctor("xm_ykyy_wx",outpatientDO.getDoctor(),title,msg,url);
                    }
                    if ("xm_zsyy_wx".equalsIgnoreCase(wechatId)){
                    if ("xm_zsyy_wx".equalsIgnoreCase(wechatId)&&StringUtils.isNoneBlank(wlyyOutpatientDO.getDoctor())){
                        String msgUrl="https://hlwyy.xmzsh.com/ims-wx/index.html#/returnVisit/record?outpatientId="+wlyyOutpatientDO.getId();
                        prescriptionService.sendZsMsgFlow("OL_PAY_SUCCESS",wlyyOutpatientDO.getId(),"",msgUrl,"已支付问诊费");
                    }
                    System.out.println("发送企业模板消息成功");
                }
            }
        }else if (businessOrderDO.getOrderCategory().equalsIgnoreCase("2")||businessOrderDO.getOrderCategory().equalsIgnoreCase("3")){
        }else if (businessOrderDO.getOrderCategory().equalsIgnoreCase("2")||businessOrderDO.getOrderCategory().equalsIgnoreCase("3")||businessOrderDO.getOrderCategory().equalsIgnoreCase("5")&&0==businessOrderDO.getStatus()){
            WlyyOutpatientDO wlyyOutpatientDO = outpatientDao.findById(businessOrderDO.getRelationCode());
            wlyyOutpatientDO.setPayStatus(1);
            WlyyOutpatientDO outpatientDO = outpatientDao.save(wlyyOutpatientDO);
            if (businessOrderDO.getStatus()!=null&&businessOrderDO.getStatus()!=1){
            if (businessOrderDO.getStatus()!=null&&businessOrderDO.getStatus()==0){
                //发送企业模板消息给医生
                BasePatientDO patientDO = new BasePatientDO();
                patientDO = patientDao.findById(outpatientDO.getPatient());
@ -1574,26 +1590,32 @@ public class BusinessOrderService extends BaseJpaService<BusinessOrderDO,Busines
                    age = IdCardUtil.getAgeForIdcard(patientDO.getIdcard())+"";
                }
                if (outpatientDO!=null){
                    if (outpatientDO.getType().equalsIgnoreCase("1")){
                        title = "图文复诊";
                        msg = name+"("+sex+" "+age+"岁)向您发起了图文复诊,点击查看";
                    }else if (outpatientDO.getType().equalsIgnoreCase("2")){
                        title = "视频复诊";
                        date = DateUtil.dateToStrLong(outpatientDO.getRegisterDate());
                        msg = name+"("+sex+" "+age+"岁)预约了"+date+"的视频复诊,点击查看";
                    if (outpatientDO.getOutpatientType().equalsIgnoreCase("2")){
                        title = "协同复诊";
                        msg = name+"("+sex+" "+age+"岁)向您发起了协同复诊,点击查看";
                    }else {
                        if (outpatientDO.getType().equalsIgnoreCase("1")){
                            title = "图文复诊";
                            msg = name+"("+sex+" "+age+"岁)向您发起了图文复诊,点击查看";
                        }else if (outpatientDO.getType().equalsIgnoreCase("2")){
                            title = "视频复诊";
                            date = DateUtil.dateToStrLong(outpatientDO.getRegisterDate());
                            msg = name+"("+sex+" "+age+"岁)预约了"+date+"的视频复诊,点击查看";
                        }
                    }
                }
                if (wxId.equalsIgnoreCase("xm_zsyy_wx")){
                    String url="https://hlwyy.xmzsh.com/hlwyy/ims-app-web/#/onlineChat/detail?_rs_title="+outpatientDO.getDescription()+"&type=3&id="+outpatientDO.getId();
                    logger.info("进入无需支付zs"+relationCode+"=="+wxId);
                    String url=baseUrl+"/hlwyy/ims-app-web/#/onlineChat/detail?_rs_title="+outpatientDO.getDescription()+"&type=3&id="+outpatientDO.getId();
                    enterpriseService.sendTWMesByDoctor("zsyy",outpatientDO.getDoctor(),title,msg,url);
                }else if (wxId.equalsIgnoreCase("xm_xzzx_wx")){
                    String url="https://ih.xmheart.com/hlwyy/ims-app-web/#/onlineChat/detail?_rs_title="+outpatientDO.getDescription()+"&type=3&id="+outpatientDO.getId();
                    enterpriseService.sendTWMesByDoctor("xm_xzzx_wx",outpatientDO.getDoctor(),title,msg,url);
                }else if (wxId.equalsIgnoreCase("xm_ykyy_wx")){
                    String url="https://intel.yanketong.com/ims-app-web/#/onlineChat/detail?_rs_title="+outpatientDO.getDescription()+"&type=3&id="+outpatientDO.getId();
                    String url=baseUrl+"/ims-app-web/#/onlineChat/detail?_rs_title="+outpatientDO.getDescription()+"&type=3&id="+outpatientDO.getId();
                    enterpriseService.sendTWMesByDoctor("xm_ykyy_wx",outpatientDO.getDoctor(),title,msg,url);
                }
                if ("xm_zsyy_wx".equalsIgnoreCase(wechatId)){
                if ("xm_zsyy_wx".equalsIgnoreCase(wechatId)&&StringUtils.isNoneBlank(wlyyOutpatientDO.getDoctor())){
                    String msgUrl="https://hlwyy.xmzsh.com/ims-wx/index.html#/returnVisit/record?outpatientId="+wlyyOutpatientDO.getId();
                    prescriptionService.sendZsMsgFlow("OL_PAY_SUCCESS",wlyyOutpatientDO.getId(),"",msgUrl,"已支付问诊费");
                }

+ 5 - 0
business/base-service/src/main/java/com/yihu/jw/order/dao/BusinessOrderDao.java

@ -32,4 +32,9 @@ public interface BusinessOrderDao extends PagingAndSortingRepository<BusinessOrd
    @Query("from BusinessOrderDO w where w.status = ?1 and w.orderCategory <>4")
    List<BusinessOrderDO> selectByStatus(Integer status);
    @Query("from BusinessOrderDO w where w.patient = ?1 and w.status=?2  and w.orderCategory =?3")
    List<BusinessOrderDO> selectByPatientAndStatusAndOrderCategory(String patient,Integer status,String orderCategory);
    @Query("from BusinessOrderDO  w where w.status=0 and w.lastPayTime<=?1")
    List<BusinessOrderDO> selectByLastPayTime(Long lastPayTime);
}

+ 6 - 0
business/base-service/src/main/java/com/yihu/jw/org/dao/BaseOrgDao.java

@ -61,4 +61,10 @@ public interface BaseOrgDao extends PagingAndSortingRepository<BaseOrgDO, String
    
    @Query(value="select b.* from base_org b where b.org_level= ?1 and b.del=?2 ORDER BY sort DESC",nativeQuery = true)
    List<BaseOrgDO> findByLevelAndDel(Integer level,String del);
    @Query(value="select Distinct org from BaseOrgDO org,BaseDoctorHospitalDO h where org.code = h.orgCode and h.del=1 and org.del=1 and h.doctorCode=?1 and org.type=?2 " )
    List<BaseOrgDO> findByDoctorAndType(String doctor,String type);
    @Query(value="select org from BaseOrgDO org where org.del=1  and org.type in ?1 " )
    List<BaseOrgDO> findByTypeIn(String[] type);
}

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

@ -0,0 +1,14 @@
package com.yihu.jw.patient.dao;
import com.yihu.jw.entity.patient.BasePatientGroupDO;
import com.yihu.jw.entity.patient.BasePatientGroupDictDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
public interface BasePatientGroupDao extends PagingAndSortingRepository<BasePatientGroupDO, String>, JpaSpecificationExecutor<BasePatientGroupDO> {
    @Query("from BasePatientGroupDO t where t.doctor=?1 and t.patient=?2 and t.groupId=?3")
    BasePatientGroupDO findOneGroupByDoctorAndPatientAndGroupId(String doctor,String patient,String groupId);
    @Query("select count(1) from BasePatientGroupDO t where t.doctor=?1  and t.groupId=?2")
    int getCountByDoctor(String doctor,String dictId);
}

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

@ -0,0 +1,18 @@
package com.yihu.jw.patient.dao;
import com.yihu.jw.entity.patient.BasePatientGroupDictDO;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
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 BasePatientGroupDictDao extends PagingAndSortingRepository<BasePatientGroupDictDO, String>, JpaSpecificationExecutor<BasePatientGroupDictDO> {
    Page<BasePatientGroupDictDO> findByCreateUserAndDel(String doctor,String del, Pageable pageable);
    @Query("select count(id) from BasePatientGroupDictDO where createUser=?1 and del='1'")
    int findByDoctorCount(String doctor);
}

+ 183 - 0
business/base-service/src/main/java/com/yihu/jw/patient/service/BasePatientGroupDictService.java

@ -0,0 +1,183 @@
package com.yihu.jw.patient.service;
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.base.patient.PatientMedicareCardDO;
import com.yihu.jw.entity.patient.BasePatientGroupDO;
import com.yihu.jw.entity.patient.BasePatientGroupDictDO;
import com.yihu.jw.patient.dao.BasePatientDao;
import com.yihu.jw.patient.dao.BasePatientGroupDao;
import com.yihu.jw.patient.dao.BasePatientGroupDictDao;
import com.yihu.jw.patient.dao.BasePatientMedicareCardDao;
import com.yihu.jw.patient.util.ConstantUtils;
import com.yihu.jw.restmodel.web.MixEnvelop;
import com.yihu.jw.utils.hibernate.HibenateUtils;
import com.yihu.mysql.query.BaseJpaService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Service;
import java.util.*;
@Service
public class BasePatientGroupDictService <T, R extends CrudRepository> extends BaseJpaService<BasePatientGroupDictDO, BasePatientGroupDictDao> {
    @Autowired
    private BasePatientGroupDao basePatientGroupDao;
    @Autowired
    private BasePatientGroupDictDao basePatientGroupDictDao;
    @Autowired
    private BaseDoctorDao basedoctorDao;
    @Autowired
    private BasePatientDao basePatientDao;
    @Autowired
    private HibenateUtils hibenateUtils;
    //创建/修改分组
    public BasePatientGroupDictDO createPatientGroupDict(String dictId,String doctor,String groupCode,String groupName){
        BaseDoctorDO baseDoctorDO = basedoctorDao.findById(doctor);
        BasePatientGroupDictDO basePatientGroupDictDO=null;
        if (StringUtils.isNotBlank(dictId)){
            basePatientGroupDictDO = basePatientGroupDictDao.findOne(dictId);
        }else {
            basePatientGroupDictDO = new BasePatientGroupDictDO();
        }
        if (baseDoctorDO!=null){
            basePatientGroupDictDO.setCreateUser(doctor);
            basePatientGroupDictDO.setCreateUserName(baseDoctorDO.getName());
        }
        basePatientGroupDictDO.setDel("1");
        basePatientGroupDictDO.setCreateTime(new Date());
        basePatientGroupDictDO.setGroupCode(groupCode);
        basePatientGroupDictDO.setGroupName(groupName);
       return basePatientGroupDictDao.save(basePatientGroupDictDO);
    }
    //删除分组
    public BasePatientGroupDictDO delPatientGroupDict(String dictId,String del){
        BasePatientGroupDictDO  basePatientGroupDictDO = basePatientGroupDictDao.findOne(dictId);
        basePatientGroupDictDO.setDel(del);
        return basePatientGroupDictDao.save(basePatientGroupDictDO);
    }
    public MixEnvelop findByDoctor(String doctor,String groupName,Integer page,Integer pageSize){
        Page<BasePatientGroupDictDO> list= basePatientGroupDictDao.findByCreateUserAndDel(doctor,"1",new PageRequest(page-1,pageSize));
        int listCount= basePatientGroupDictDao.findByDoctorCount(doctor);
        MixEnvelop mixEnvelop = new MixEnvelop();
        mixEnvelop.setPageSize(pageSize);
        mixEnvelop.setCurrPage(page+1);
        mixEnvelop.setDetailModelList(list.getContent());
        mixEnvelop.setTotalCount(listCount);
        return mixEnvelop;
    }
    /**
     * 创建分页对象
     * @param page
     * @param size
     * @param sorts
     * @return
     */
    public Pageable creatPage(Integer page, Integer size, String sorts){
        PageRequest pageRequest = null;
        if(null == page || page <= 0){
            page = defaultPage;
        }
        if(null == size || size <= 0){
            size = defaultSize;
        }
        if(!org.apache.commons.lang3.StringUtils.isEmpty(sorts)){
            pageRequest = new PageRequest(page,size,createSort(sorts));
        }else{
            pageRequest = new PageRequest(page,size);
        }
        return pageRequest;
    }
    //将患者移动到指定分组中
    public void movePatientToGroup(String groupId,String patient,String doctor) throws Exception{
        BasePatientGroupDO basePatientGroupDO= basePatientGroupDao.findOneGroupByDoctorAndPatientAndGroupId(doctor,patient,groupId);
        if (basePatientGroupDO==null){
            basePatientGroupDO = new BasePatientGroupDO();
            basePatientGroupDO.setCreateTime(new Date());
            BasePatientDO basePatientDO = basePatientDao.findById(patient);
            if (basePatientDO!=null){
                basePatientGroupDO.setPatient(patient);
                basePatientGroupDO.setPatientName(basePatientDO.getName());
            }
            BaseDoctorDO baseDoctorDO = basedoctorDao.findById(doctor);
            if (baseDoctorDO!=null){
                basePatientGroupDO.setDoctor(doctor);
                basePatientGroupDO.setDoctorName(baseDoctorDO.getName());
            }
            basePatientGroupDO.setGroupId(groupId);
            basePatientGroupDao.save(basePatientGroupDO);
        }else {
            throw  new Exception("该患者已存在该分组中");
        }
    }
    //将患者从指定分组中删除
    public void delPatientGroup(String id) throws Exception{
        BasePatientGroupDO basePatientGroupDO= basePatientGroupDao.findOne(id);
        if (basePatientGroupDO!=null){
            basePatientGroupDao.delete(id);
        }else {
            throw  new Exception("该记录已删除");
        }
    }
    //查询患者分组
    public MixEnvelop findPatientGroup(String patientName,String doctor,String dictId,Integer page,Integer pageSize){
        String sql = "select t.id as \"id\"," +
                "  t.group_id as \"groupId\"," +
                "  t.patient as \"patient\"," +
                "  t.patient_name as \"patientName\"," +
                "  t.doctor as \"doctor\"," +
                "  b.idcard as \"idcard\"," +
                "  t.create_time as \"createTime\"" +
                " from base_patient_group t left join base_patient b " +
                " on t.patient = b.id where b.del = '1'";
        String sqlCount ="select count(1) as \"total\"" +
                " from base_patient_group t left join base_patient b " +
                " on t.patient = b.id where b.del = '1'";
        if (StringUtils.isNoneBlank(patientName)){
            sql +=" and b.name like '%"+patientName+"%'";
            sqlCount +=" and b.name like '%"+patientName+"%'";
        }
        if (StringUtils.isNoneBlank(doctor)){
            sql +=" and t.doctor ='"+doctor+"'";
            sqlCount +=" and t.doctor ='"+doctor+"'";
        }
        if (StringUtils.isNoneBlank(dictId)){
            sql +=" and t.group_id ='"+dictId+"'";
            sqlCount +=" and t.group_id ='"+dictId+"'";
        }
        List<Map<String,Object>> list = hibenateUtils.createSQLQuery(sql ,page,pageSize);
        List<Map<String,Object>> rstotal = hibenateUtils.createSQLQuery(sqlCount);
        Long count = 0L;
        if (rstotal != null && rstotal.size() > 0) {
            count = Long.parseLong(rstotal.get(0).get("total").toString());
        }
        MixEnvelop mixEnvelop = new MixEnvelop();
        mixEnvelop.setTotalCount(count.intValue());
        mixEnvelop.setPageSize(pageSize);
        mixEnvelop.setCurrPage(page);
        mixEnvelop.setDetailModelList(list);
        return mixEnvelop;
    }
    //查询分组患者数量
    public List<Map<String,Object>> findPatientGroupNum(String doctor,String dictIds){
        List<Map<String,Object>> list = new ArrayList<>();
        if (StringUtils.isNoneBlank(dictIds)){
            String[] dictIdGroup = dictIds.split(",");
            for (int i=0;i<dictIdGroup.length;i++){
                int count = basePatientGroupDao.getCountByDoctor(doctor,dictIdGroup[i]);
                Map map = new HashMap();
                map.put(dictIdGroup[i],count);
                list.add(map);
            }
        }
        return list;
    }
}

+ 406 - 33
business/base-service/src/main/java/com/yihu/jw/patient/service/BasePatientService.java

@ -2,30 +2,54 @@ package com.yihu.jw.patient.service;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.entity.base.patient.PatientMedicareCardDO;
import com.yihu.jw.entity.hospital.prescription.WlyyInspectionDO;
import com.yihu.jw.entity.hospital.prescription.WlyyOutpatientDO;
import com.yihu.jw.entity.hospital.prescription.WlyyPrescriptionInfoDO;
import com.yihu.jw.hospital.prescription.dao.OutpatientDao;
import com.yihu.jw.hospital.prescription.dao.PrescriptionDao;
import com.yihu.jw.hospital.prescription.dao.PrescriptionInfoDao;
import com.yihu.jw.hospital.prescription.dao.WlyyInspectionDao;
import com.yihu.jw.hospital.prescription.service.PrescriptionService;
import com.yihu.jw.hospital.ykyy.service.YkyyService;
import com.yihu.jw.patient.dao.BasePatientDao;
import com.yihu.jw.patient.dao.BasePatientGroupDao;
import com.yihu.jw.patient.dao.BasePatientGroupDictDao;
import com.yihu.jw.patient.util.ConstantUtils;
import com.yihu.jw.restmodel.base.patient.BasePatientVO;
import com.yihu.jw.restmodel.hospital.prescription.WlyyInspectionVO;
import com.yihu.jw.restmodel.hospital.prescription.WlyyPrescriptionInfoVO;
import com.yihu.jw.restmodel.hospital.prescription.WlyyPrescriptionVO;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.MixEnvelop;
import com.yihu.jw.restmodel.web.ObjEnvelop;
import com.yihu.jw.restmodel.web.PageEnvelop;
import com.yihu.jw.rm.base.BaseRequestMapping;
import com.yihu.jw.rm.iot.IotRequestMapping;
import com.yihu.jw.util.common.IdCardUtil;
import com.yihu.jw.utils.hibernate.HibenateUtils;
import com.yihu.mysql.query.BaseJpaService;
import com.yihu.utils.security.MD5;
import org.apache.commons.lang3.StringUtils;
import org.checkerframework.checker.units.qual.A;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.repository.CrudRepository;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.*;
/**
 * 
@ -41,6 +65,7 @@ import java.util.Set;
 */
@Service
public class BasePatientService<T, R extends CrudRepository> extends BaseJpaService<BasePatientDO, BasePatientDao> {
    private static final Logger logger = LoggerFactory.getLogger(BasePatientService.class);
    @Autowired
    private BasePatientDao basePatientDao;
@ -50,7 +75,7 @@ public class BasePatientService<T, R extends CrudRepository> extends BaseJpaServ
    @Autowired
    private ObjectMapper objectMapper;
    
    @Autowired
    private JdbcTemplate jdbcTemplate;
    @Autowired
@ -59,27 +84,29 @@ public class BasePatientService<T, R extends CrudRepository> extends BaseJpaServ
    private YkyyService ykyyService;
    @Value("${wechat.id}")
    private String wxId;
    @Autowired
    private OutpatientDao outpatientDao;
    @Value("${demo.flag}")
    private boolean demoFlag;
    @Value("${wechat.flag}")
    private boolean flag;
    @Autowired
    private WlyyInspectionDao wlyyInspectionDao;
    @Autowired
    private PrescriptionDao prescriptionDao;
    @Autowired
    private PrescriptionInfoDao prescriptionInfoDao;
    @Autowired
    private BasePatientGroupDao basePatientGroupDao;
    @Autowired
    private BasePatientGroupDictDao basePatientGroupDictDao;
    /**
     * 居民id
     * @param patientId
     * @return
     */
    public String getPatientById(String patientId) throws Exception{
        JSONObject result = new JSONObject();
        if(StringUtils.isEmpty(patientId)){
            result.put("result","parameter patientId is null");
            return result.toString();
        }
        List<BasePatientDO> patientDOList = this.findByField("id",patientId);
        if(CollectionUtils.isEmpty(patientDOList)){
            result.put("result","not exist patient for id:"+patientId);
            return result.toString();
        }
        result.put("patient",patientDOList.get(0));
        List<PatientMedicareCardDO> cards = basePatientMedicardCardService.findPatientCardByCode(patientId);
        result.put("medicareCard",cards);
        return result.toJSONString();
    public BasePatientDO findPatientById(String patientId) throws Exception{
        return basePatientDao.findById(patientId);
    }
    /**
@ -87,26 +114,31 @@ public class BasePatientService<T, R extends CrudRepository> extends BaseJpaServ
     * @param patientId
     * @return
     */
    public String findPatientById(String patientId) throws Exception{
        JSONObject result = new JSONObject();
    public Map getPatientById(String patientId) throws Exception{
        Map result = new HashMap();
        if(StringUtils.isEmpty(patientId)){
            result.put("result","parameter patientId is null");
            return result.toString();
            return result;
        }
        BasePatientDO patientDO = basePatientDao.findById(patientId);
        if(patientDO == null){
        BasePatientDO basePatientDO = basePatientDao.findById(patientId);
        /*List<BasePatientDO> patientDOList = this.findByField("id",patientId);
        if(CollectionUtils.isEmpty(patientDOList)){
            result.put("result","not exist patient for id:"+patientId);
            return result.toString();
        }
        }*/
        PatientMedicareCardDO card = basePatientMedicardCardService.findByTypeAndPatientCodeAndDel("A_01",patientId,"1");
        if(card != null){
            patientDO.setSsc(card.getCode());
        result.put("patient", basePatientDO);
        List<PatientMedicareCardDO> cards = basePatientMedicardCardService.findPatientCardByCode(patientId);
        if (cards==null||cards.size()==0){
            System.out.println("new一个list");
            PatientMedicareCardDO patientMedicareCardDO = new PatientMedicareCardDO();
            cards.add(patientMedicareCardDO);
        }
        result.put("patient",patientDO);
        return result.toJSONString();
        result.put("medicareCard",cards);
        return result;
    }
    /**
     * 获取用户基础信息,参数为空查全部
     * @param nameOrIdcard
@ -187,6 +219,68 @@ public class BasePatientService<T, R extends CrudRepository> extends BaseJpaServ
        return ConstantUtils.SUCCESS;
    }
    /**
     * 新增档案
     * @param jsonData
     * @return
     */
    @Transactional(rollbackFor = Exception.class)
    public String createArchive(String jsonData) throws Exception {
        JSONObject jsonObject = JSONObject.parseObject(jsonData);
        JSONObject patient = jsonObject.getJSONObject("patient");
        if(null == patient){
            return ConstantUtils.FAIL;
        }
        BasePatientDO patientDO = objectMapper.readValue(patient.toJSONString(),BasePatientDO.class);
        this.save(patientDO);
        return ConstantUtils.SUCCESS;
    }
    /**
     * 修改档案
     * @param jsonData
     * @return
     */
    @Transactional(rollbackFor = Exception.class)
    public String updateArchive(String jsonData) throws Exception {
        BasePatientDO basePatientDO = objectMapper.readValue(jsonData,BasePatientDO.class);
        if(StringUtils.isEmpty(basePatientDO.getId())){
            return ConstantUtils.FAIL;
        }
        BasePatientDO basePatientDO1 = basePatientDao.findById(basePatientDO.getId());
        if (null!=basePatientDO1){
            basePatientDO1.setName(basePatientDO.getName());
            basePatientDO1.setMobile(basePatientDO.getMobile());
            basePatientDO1.setIdcard(basePatientDO.getIdcard());
            basePatientDO1.setSex(basePatientDO.getSex());
            basePatientDO1.setBirthday(basePatientDO.getBirthday());
            basePatientDO1.setNational(basePatientDO.getNational());
            basePatientDO1.setNationalName(basePatientDO.getNationalName());
            basePatientDO1.setMarriage(basePatientDO.getMarriage());
            basePatientDO1.setProvinceCode(basePatientDO.getProvinceCode());
            basePatientDO1.setCityCode(basePatientDO.getCityCode());
            basePatientDO1.setTownCode(basePatientDO.getTownCode());
            basePatientDO1.setProvinceName(basePatientDO.getProvinceName());
            basePatientDO1.setTownName(basePatientDO.getTownName());
            basePatientDO1.setCityName(basePatientDO.getCityName());
            basePatientDO1.setMedicareNumber(basePatientDO.getMedicareNumber());
            basePatientDO1.setMobileRemarks(basePatientDO.getMobileRemarks());
            basePatientDO1.setBlood(basePatientDO.getBlood());
            basePatientDO1.setSsc(basePatientDO.getSsc());
            basePatientDO1.setCommitteeCode(basePatientDO.getCommitteeCode());
            basePatientDO1.setCommitteeName(basePatientDO.getCommitteeName());
            basePatientDO1.setArchiveType(basePatientDO.getArchiveType());
            basePatientDO1.setAddress(basePatientDO.getAddress());
            basePatientDO1.setPhoto(basePatientDO.getPhoto());
            basePatientDO1.setArchiveStatus(basePatientDO.getArchiveStatus());
            // 保存修改的居民信息
            this.save(basePatientDO1);
        }
        return ConstantUtils.SUCCESS;
    }
    /**
     * 修改居民
     * @param jsonData
@ -217,6 +311,18 @@ public class BasePatientService<T, R extends CrudRepository> extends BaseJpaServ
            basePatientDO1.setTownName(basePatientDO.getTownName());
            basePatientDO1.setCityName(basePatientDO.getCityName());
            basePatientDO1.setMobile(basePatientDO.getMobile());
            basePatientDO1.setRemark(basePatientDO.getRemark());
            basePatientDO1.setLiveCityCode(basePatientDO.getLiveCityCode());
            basePatientDO1.setLiveCityName(basePatientDO.getLiveCityName());
            basePatientDO1.setLiveProvinceCode(basePatientDO.getLiveProvinceCode());
            basePatientDO1.setLiveProvinceName(basePatientDO.getLiveProvinceName());
            basePatientDO1.setLiveStreetCode(basePatientDO.getLiveStreetCode());
            basePatientDO1.setLiveStreetName(basePatientDO.getLiveStreetName());
            basePatientDO1.setLiveTownCode(basePatientDO.getLiveTownCode());
            basePatientDO1.setLiveTownName(basePatientDO.getLiveTownName());
            basePatientDO1.setAddress(basePatientDO.getAddress());
            basePatientDO1.setCommitteeCode(basePatientDO.getCommitteeCode());
            basePatientDO1.setCommitteeName(basePatientDO.getCommitteeName());
            // 保存修改的居民信息
            this.save(basePatientDO1);
        }
@ -226,6 +332,7 @@ public class BasePatientService<T, R extends CrudRepository> extends BaseJpaServ
        for (Object obj : patientMedicareCards) {
            PatientMedicareCardDO card = objectMapper.readValue(obj.toString(), PatientMedicareCardDO.class);
            card.setPatientCode(basePatientDO.getId());
            card.setDel("1");
            if(cardIdList.contains(card.getId())){
                cardIdList.remove(card.getId());
            }
@ -264,7 +371,6 @@ public class BasePatientService<T, R extends CrudRepository> extends BaseJpaServ
        return list.get(0);
    }
    public Boolean updatePatientPw(String id,String pw,String orgPw){
        BasePatientDO patientDO = basePatientDao.findOne(id);
        String orgPwMd5 = MD5.md5Hex(orgPw + "{" + patientDO.getSalt() + "}");
@ -296,5 +402,272 @@ public class BasePatientService<T, R extends CrudRepository> extends BaseJpaServ
        saveDoctorPwlimitDate(id);*/
        return true;
    }
    public Map<String,Object> getPatientCountByDoctor(String doctor,String patient) throws  Exception{
        List<WlyyOutpatientDO> fzList = outpatientDao.findByDoctorAndOutpatientType(doctor,"1",patient);
        List<WlyyOutpatientDO> xtList = outpatientDao.findByDoctorAndOutpatientType(doctor,"2",patient);
        List<WlyyOutpatientDO> zxList = outpatientDao.findByDoctorAndOutpatientType(doctor,"3",patient);
        Map<String,Object> resultMap = new HashMap<>();
        resultMap.put("fzNum",fzList==null?0:fzList.size());
        resultMap.put("xtNum",xtList==null?0:xtList.size());
        resultMap.put("zxNum",zxList==null?0:zxList.size());
        return resultMap;
    }
    //查询电子病历
        public MixEnvelop findEmrByPatientId(String patient,String doctor,Integer page ,Integer pageSize){
        String sql ="select e.id as \"id\"," +
                " e.prescription_id as \"prescriptionId\"," +
                " e.complaint as \"complaint\"," +
                " e.medical_history as \"medicalHistory\"," +
                " e.past_history as \"pastHistory\"," +
                " e.physical_examination as \"physicalExamination\"," +
                " e.assist_examination as \"assistExamination\"," +
                " p.doctor_name as \"doctorName\"," +
                " p.doctor as \"doctor\"," +
                " e.popular_history as \"popularHistory\"," +
                " e.special_history as \"specialHistory\"," +
                " e.create_time as \"createTime\"," +
                " e.allergic_history as \"allergicHistory\"" +
                " from wlyy_prescription_emr e " +
                " left join  wlyy_prescription p on e.prescription_id = p.id" +
                " where p.status >= 20";
        if (StringUtils.isNoneBlank(patient)){
            sql+=" and p.patient_code ='"+patient+"'";
        }
        if (StringUtils.isNoneBlank(doctor)){
            sql+=" and p.doctor ='"+doctor+"'";
        }
        List<Map<String, Object>> list = hibenateUtils.createSQLQuery(sql,page,pageSize);
        MixEnvelop mixEnvelop = new MixEnvelop();
        mixEnvelop.setTotalCount(list==null?0:list.size());
        mixEnvelop.setPageSize(pageSize);
        mixEnvelop.setCurrPage(page);
        mixEnvelop.setDetailModelList(list);
        return mixEnvelop;
    }
    //查询电子病历
   /* public MixEnvelop findPrescriptionByPatientAndDoctor(String patient,String doctor,Integer page ,Integer pageSize){
        String sql ="select p.id as \"id\"," +
                " p.outpatient_id as \"outpatient_id\"," +
                " p.real_order as \"real_order\"," +
                " p.origin_real_order as \"origin_real_order\"," +
                " p.adm_no as \"adm_no\"," +
                " p.origin_adm_no as \"origin_adm_no\"," +
                " p.serial_no as \"serial_no\"," +
                " p.origin_serial_no as \"origin_serial_no\"," +
                " p.type as \"type\"," +
                " p.patient_code as \"patient_code\"," +
                " p.patient_name as \"patient_name\"," +
                " p.status as \"status\"," +
                " p.mk_fail_reason as \"mk_fail_reason\"," +
                " p.idcard as \"idcard\"," +
                " p.idcard as \"idcard\"," +
                " p.idcard as \"idcard\"," +
                " p.idcard as \"idcard\"," +
                " p.idcard as \"idcard\"," +
                " p.idcard as \"idcard\"," +
                " p.idcard as \"idcard\"," +
                " p.idcard as \"idcard\"," +
                " p.idcard as \"idcard\"," +
                " p.idcard as \"idcard\"," +
                " p.ssc as \"ssc\"" +
                " from wlyy_prescription p " +
                " where p.status >= 20";
        if (StringUtils.isNoneBlank(patient)){
            sql+=" and p.patient_code ='"+patient+"'";
        }
        if (StringUtils.isNoneBlank(doctor)){
            sql+=" and p.doctor ='"+doctor+"'";
        }
        List<Map<String, Object>> list = hibenateUtils.createSQLQuery(sql,page,pageSize);
        MixEnvelop mixEnvelop = new MixEnvelop();
        mixEnvelop.setTotalCount(list==null?0:list.size());
        mixEnvelop.setPageSize(pageSize);
        mixEnvelop.setCurrPage(page);
        mixEnvelop.setDetailModelList(list);
        return mixEnvelop;
    }*/
    /**
     * 查询患者所有处方信息
     *
     * @param page
     * @param size
     * @return
     */
    public PageEnvelop findPatientAllPrescription(String doctor,String keyName, String status, Integer page, Integer size,String patient,String isSelectDrug) {
        BasePatientDO patientDO = basePatientDao.findById(patient);
        if (patientDO==null){
            return PageEnvelop.getError("找不到该患者",-1);
        }
        StringBuffer sql = new StringBuffer(" SELECT DISTINCT b.*, c.oneself_pickup_flg,f.job_title_code,f.job_title_name  FROM (SELECT a.* FROM wlyy_prescription a left join wlyy_outpatient o ON o.id=a.outpatient_id  WHERE o.consumer = '");
        StringBuffer countSql = new StringBuffer("select COUNT(DISTINCT b.id) count FROM (SELECT a.* FROM wlyy_prescription a left join wlyy_outpatient o ON o.id=a.outpatient_id  WHERE o.consumer = '");
        sql.append(patient).append("') b  LEFT JOIN wlyy_prescription_expressage c ON c.outpatient_id = b.outpatient_id LEFT JOIN base_doctor f ON b.doctor=f.id  ");
        countSql.append(patient).append("') b  LEFT JOIN wlyy_prescription_expressage c ON c.outpatient_id = b.outpatient_id LEFT JOIN base_doctor f ON b.doctor=f.id  ");
        if (StringUtils.isNoneBlank(isSelectDrug)){
            if("0".equalsIgnoreCase(isSelectDrug)){
                sql.append(" left join wlyy_inspection m on b.outpatient_id =m.outpatient_id");
                countSql.append(" left join wlyy_inspection m on b.outpatient_id =m.outpatient_id");
            }
            if ("1".equalsIgnoreCase(isSelectDrug)){
                sql.append(" left join wlyy_prescription_info m on b.id =m.prescription_id");
                countSql.append(" left join wlyy_prescription_info m on b.id =m.prescription_id");
            }
        }
        if (StringUtils.isNotEmpty(status)) {
            status = status.substring(1, status.length() - 1);
            if (StringUtils.isNoneBlank(isSelectDrug)){
                if("0".equalsIgnoreCase(isSelectDrug)){
                    sql.append(" where b.status IN( 9,").append(status).append(")");
                    countSql.append(" where b.status IN( 9,").append(status).append(")");
                }else {
                    sql.append(" where b.status IN(").append(status).append(")");
                    countSql.append(" where b.status IN(").append(status).append(")");
                }
            }else{
                sql.append(" where b.status IN(").append(status).append(")");
                countSql.append(" where b.status IN(").append(status).append(")");
            }
        } else {
            sql.append("  where b.status IN(20,21,30,31,32,100,101)");
            countSql.append(" where b.status IN(20,21,30,31,32,100,101) ");
        }
        if (StringUtils.isNoneBlank(isSelectDrug)){
            if("0".equalsIgnoreCase(isSelectDrug)){
                sql.append(" and m.del =1 ");
                countSql.append(" and m.del =1 ");
            }
            if ("1".equalsIgnoreCase(isSelectDrug)){
                sql.append(" and m.del =1");
                countSql.append(" and m.del =1");
            }
        }
        if (StringUtils.isNotEmpty(keyName)) {
            sql.append(" and (" +
                    " b.doctor_name LIKE '%" + keyName + "%' " +
                    " OR b.dept_name LIKE'%" + keyName + "%' " +
                    " OR b.hospital_name LIKE '%" + keyName + "%' " +
                    " OR m.drug_name LIKE '%" + keyName + "%' " +
                    " OR b.real_order LIKE '%" + keyName + "%' " +
                    ")");
            countSql.append(" and (" +
                    " b.doctor_name LIKE '%" + keyName + "%' " +
                    " OR b.dept_name LIKE'%" + keyName + "%' " +
                    " OR b.hospital_name LIKE '%" + keyName + "%' " +
                    " OR m.drug_name LIKE '%" + keyName + "%' " +
                    " OR b.real_order LIKE '%" + keyName + "%' " +
                    ")");
        }
        if (StringUtils.isNotEmpty(doctor)) {
            sql.append(" and  b.doctor ='" +doctor+"'");
            countSql.append(" and  b.doctor ='" +doctor+"'");
        }
        sql.append(" order by b.prescribe_time DESC ");
        List<WlyyPrescriptionVO> list = null;
        if ("xm_ykyy_wx".equalsIgnoreCase(wxId)) {
            String oracleSql = "SELECT\n" +
                    "\t*\n" +
                    "FROM\n" +
                    "\t(\n" +
                    "\t\tSELECT\n" +
                    "\t\t\tA .*\n" +
                    "\t\tFROM\n" +
                    "\t\t\t(";
            oracleSql += sql.toString();
            oracleSql += "\t\t\t) A\n" +
                    "\t\tWHERE\n" +
                    "  ROWNUM <=" + page * size +
                    "\t) \n" +
                    "WHERE\n" +
                    "\tROWNUM >= " + (page - 1) * size;
            if (flag){
                sql.append("  limit ").append((page - 1) * size).append(",").append(size);
                logger.info("MySql=" + sql.toString());
                list = jdbcTemplate.query(sql.toString(), new BeanPropertyRowMapper<>(WlyyPrescriptionVO.class));
            }else {
                logger.info("oracleSql=" + oracleSql);
                list = jdbcTemplate.query(oracleSql, new BeanPropertyRowMapper<>(WlyyPrescriptionVO.class));
            }
        } else {
//            sql+=" LIMIT  " + (page - 1) * size + "," + size + "";
            sql.append("  limit ").append((page - 1) * size).append(",").append(size);
            logger.info("MySql=" + sql.toString());
            list = jdbcTemplate.query(sql.toString(), new BeanPropertyRowMapper<>(WlyyPrescriptionVO.class));
        }
        for (WlyyPrescriptionVO singlePre:list){
            List<WlyyPrescriptionInfoDO> infoDOs = prescriptionInfoDao.findByPrescriptionId(singlePre.getId(),1);
            logger.info("singlePreId===="+singlePre.getId());
            logger.info("infoDOs"+infoDOs);
            List<WlyyPrescriptionInfoVO> infoVOS = new ArrayList<>();
            convertToModels(infoDOs, infoVOS, WlyyPrescriptionInfoVO.class);
            logger.info("infoVOS"+infoVOS);
            singlePre.setInfoVOs(infoVOS);
            List<WlyyInspectionDO> inspectionDOS = wlyyInspectionDao.findByPrescriptionId(singlePre.getId(),1);
            List<WlyyInspectionVO> inspectionVOS = new ArrayList<>();
            convertToModels(inspectionDOS, inspectionVOS, WlyyInspectionVO.class);
            //BeanUtils.copyProperties(inspectionDOS,inspectionVOS);
            singlePre.setInspectionVOs(inspectionVOS);
        }
//        List<WlyyPrescriptionVO> list = jdbcTemplate.query(sql.toString(), new BeanPropertyRowMapper<>(WlyyPrescriptionVO.class));
        logger.info("countSql=" + countSql.toString());
        List<Map<String, Object>> mapList = jdbcTemplate.queryForList(countSql.toString());
        long count = Long.parseLong(mapList.get(0).get("count").toString());
        return PageEnvelop.getSuccessListWithPage(IotRequestMapping.Common.message_success_find, list, page, size, count);
    }
    public Map<String,Object>  findPatientInfoById(String patientId,String doctor){
        String sql = "select b.id as \"id\"," +
                "  b.group_code as \"groupCode\"," +
                "  b.group_name as \"groupName\"" +
                "  from base_patient_group t " +
                " left join base_patient_group_dict b on t.group_id = b.id" +
                " where b.del = '1' and t.patient ='"+patientId+"' and t.doctor ='"+doctor+"'";
        sql+=" group by b.id,b.group_code,b.group_name";
        List<Map<String,Object>> list = hibenateUtils.createSQLQuery(sql);
        String patientSql= "select t.id as \"id\"," +
                " t.name as \"name\"," +
                " t.idcard as \"idcard\"," +
                " t.disease as \"disease\"" +
                "  from base_patient t where t.del = '1' and t.id='"+patientId+"'";
        List<Map<String,Object>> patientInfo = hibenateUtils.createSQLQuery(patientSql);
        if (patientInfo!=null&&patientInfo.size()>0){
            Map<String,Object> patient = patientInfo.get(0);
            String sex = IdCardUtil.getSexForIdcard_new(patient.get("idcard").toString());
            Integer age = IdCardUtil.getAgeForIdcard(patient.get("idcard").toString());
            patient.put("sex",sex);
            patient.put("age",age);
            patient.put("groupList",list);
            return patient;
        }
        return null;
    }
    public PageEnvelop pageByCondition(String name, Integer archiveType, Integer archiveStatus,int page,int size){
        List<BasePatientVO> list = new ArrayList<>();
        if (page>0){
            page--;
        }else{
            page=0;
        }
        String sqlCount = "select count(*) from base_patient where 1=1 ";
        String sql = "select * from base_patient where 1=1 ";
        String sqlCondition = "";
        if (StringUtils.isNotBlank(name)){
            sqlCondition += " and (name like '%"+name+"%' or idcard like '%"+name+"%' or mobile like '%"+name+"%') ";
        }
        if (archiveType!=null){
            sqlCondition += " and archive_type ="+archiveType;
        }
        if (archiveStatus!=null){
            sqlCondition += " and archive_status ="+archiveStatus;
        }
        Long count = jdbcTemplate.queryForObject(sqlCount+sqlCondition,Long.class);
        sqlCondition +=" limit "+page*size+","+size;
        list = jdbcTemplate.query(sql+sqlCondition,new BeanPropertyRowMapper<>(BasePatientVO.class));
        return PageEnvelop.getSuccessListWithPage("success",list,page,size,count);
    }
}

+ 17 - 0
business/base-service/src/main/java/com/yihu/jw/pay/dao/WxPayHttpLogDao.java

@ -0,0 +1,17 @@
package com.yihu.jw.pay.dao;
import com.yihu.jw.entity.care.common.WxPayHttpLogDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
/**
 * Created with IntelliJ IDEA.
 *
 * @Author: yeshijie
 * @Date: 2021/6/29
 * @Description:
 */
public interface WxPayHttpLogDao extends PagingAndSortingRepository<WxPayHttpLogDO,String>, JpaSpecificationExecutor<WxPayHttpLogDO> {
}

+ 105 - 0
business/base-service/src/main/java/com/yihu/jw/pay/service/CloudCarePayService.java

@ -0,0 +1,105 @@
package com.yihu.jw.pay.service;
import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.entity.base.wx.WxWechatDO;
import com.yihu.jw.entity.care.common.WxPayHttpLogDO;
import com.yihu.jw.entity.order.BusinessOrderDO;
import com.yihu.jw.entity.order.BusinessOrderRefundDO;
import com.yihu.jw.order.BusinessOrderService;
import com.yihu.jw.order.dao.BusinessOrderDao;
import com.yihu.jw.order.dao.BusinessOrderRefundDao;
import com.yihu.jw.patient.dao.BasePatientDao;
import com.yihu.jw.pay.dao.WxPayHttpLogDao;
import com.yihu.jw.wechat.dao.WechatDao;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.util.*;
import static jxl.biff.FormatRecord.logger;
/**
 * Created with IntelliJ IDEA.
 * @Author: yeshijie
 * @Date: 2021/6/28
 * @Description:
 */
@Service
public class CloudCarePayService {
    private Logger log = LoggerFactory.getLogger(CloudCarePayService.class);
    @Autowired
    private BasePatientDao patientDao;
    @Autowired
    private BusinessOrderDao businessOrderDao;
//    @Value("${wechat.id}")
    public String wechatId="hz_yyyzh_wx";
    @Autowired
    private WxPayHttpLogDao wxPayHttpLogDao;
    @Autowired
    private BusinessOrderService businessOrderService;
    @Autowired
    private WechatDao wechatDao;
    @Autowired
    private BusinessOrderRefundDao orderRefundDao;
    /**
     * 微信退款
     * @param orderNo
     * @return
     * @throws Exception
     */
    public void orderRefund(String orderNo) throws Exception {
        WxWechatDO wxWechatDO = wechatDao.findById(wechatId);
        if (wxWechatDO==null){
            throw new Exception("this wechatId is null");
        }
        BusinessOrderDO businessOrderDO = businessOrderDao.selectByOrderNo(orderNo);
        if (businessOrderDO==null){
            throw new Exception("this orderId not exit");
        }
        BasePatientDO patientDO = patientDao.findById(businessOrderDO.getPatient());
        if (patientDO==null){
            throw new Exception("this patient not exit");
        }
        BusinessOrderRefundDO orderRefundDO = orderRefundDao.selectByOrderNo(orderNo);
        if (orderRefundDO==null){
            throw new Exception("this refund not exit");
        }
        Integer orderPrice = orderRefundDO.getOrderPrice().intValue();
        Integer refundPrice1 = orderRefundDO.getRefundPrice().intValue();
        Map<String,Object> map = businessOrderService.refund(wechatId,orderRefundDO.getOrderNo(),orderRefundDO.getOutRefundNo(),orderPrice.toString(),refundPrice1.toString(),orderRefundDO.getRefundDesc());
        logger.info("map"+map);
        addHttpLog("1",businessOrderDO.getOrderNo(),null,map.toString());
        if (map.get("return_code").toString().equalsIgnoreCase("SUCCESS")){
            //退款申请提交成功
            throw new Exception(map.get("return_msg").toString());
        }
    }
    /**
     * 添加支付日志
     * @param type
     * @param orderNo
     * @param res
     * @param req
     */
    public void addHttpLog(String type,String orderNo,String res,String req){
        WxPayHttpLogDO logDO = new WxPayHttpLogDO();
        logDO.setType(type);
        logDO.setOrderNo(orderNo);
        logDO.setOrderReq(req);
        logDO.setOrderRes(res);
        wxPayHttpLogDao.save(logDO);
    }
    public String getOrderNo(){
        return ""+System.currentTimeMillis()+(int)(Math.random()*900)+100;
    }
}

+ 97 - 0
business/base-service/src/main/java/com/yihu/jw/utils/JDBCSqlServer.java

@ -0,0 +1,97 @@
package com.yihu.jw.utils;
import com.yihu.jw.entity.hospital.consult.WlyyHospitalSysDictDO;
import com.yihu.jw.entity.hospital.httplog.BaseOperateLogDO;
import com.yihu.jw.hospital.dict.WlyyHospitalSysDictDao;
import com.yihu.jw.util.date.DateUtil;
import lombok.extern.slf4j.Slf4j;
import org.checkerframework.checker.units.qual.A;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.List;
/**
 * @ClassName: JDBCUtils
 * @Description: 实现连接池效果,初始化10个JDBC连接对象并放入池中,提供方法每次返回一个对象
 * @Author: xuezhouyi
 * @Version: V1.0
 **/
@Slf4j
@Service
public class JDBCSqlServer {
    @Autowired
    private WlyyHospitalSysDictDao wlyyHospitalSysDictDao;
    public  void insertZsSqlserver(BaseOperateLogDO baseOperateLogDO) {
        Connection connection=null;
        String driverName="com.microsoft.sqlserver.jdbc.SQLServerDriver";//SQL数据库引擎
        String dbURL="jdbc:sqlserver://192.10.33.110:1433;DatabaseName=logdb";//数据源  !!!注意若出现加载或者连接数据库失败一般是这里出现问题
        String dbName="nethoslogdba";
        String dbPwd="nethoslogdba^1";
        List<WlyyHospitalSysDictDO> configlist = wlyyHospitalSysDictDao.findByDictName("sqlServerConfig");
        for (WlyyHospitalSysDictDO wlyyHospitalSysDictDO:configlist){
            if ("isOpen".equalsIgnoreCase(wlyyHospitalSysDictDO.getDictCode())){
                if (!"1".equalsIgnoreCase(wlyyHospitalSysDictDO.getDictValue())){
                    System.out.println("关闭传入sqlserver");
                    return;
                }
            }
            System.out.println("开启传入sqlserver");
            if ("dbURL".equalsIgnoreCase(wlyyHospitalSysDictDO.getDictCode())){
                dbURL=wlyyHospitalSysDictDO.getDictValue();
            }
            if ("dbName".equalsIgnoreCase(wlyyHospitalSysDictDO.getDictCode())){
                dbName=wlyyHospitalSysDictDO.getDictValue();
            }
            if ("dbPwd".equalsIgnoreCase(wlyyHospitalSysDictDO.getDictCode())){
                dbPwd=wlyyHospitalSysDictDO.getDictValue();
            }
        }
        try{
            Class.forName(driverName);
            connection=DriverManager.getConnection(dbURL,dbName,dbPwd);
            System.out.println("连接数据库成功");
        }catch(Exception e){
            e.printStackTrace();
            System.out.println("连接失败");
        }
        Statement stmt = null;
        try {
            stmt = connection.createStatement();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        String creatTime=DateUtil.dateToStr(baseOperateLogDO.getCreateTime(),"yyyy-MM-dd hh:mm:ss");
        //增删改操作
        String sql_1="insert into nethoslog values('"+baseOperateLogDO.getId()+"','"+baseOperateLogDO.getCode()+"','"+baseOperateLogDO.getName()+"','"+baseOperateLogDO.getOperator()+ "','"+baseOperateLogDO.getOperatorName()+"','"+baseOperateLogDO.getPatient()+"','"+baseOperateLogDO.getPatientName()+"','"+creatTime+ "','','','"+baseOperateLogDO.getIsDel()+"')";
        int count_1 = 0;
        try {
            count_1 = stmt.executeUpdate(sql_1);
            connection.commit();
        } catch (SQLException e) {
            e.printStackTrace();
        }//返回值表示增删改几条数据
        //处理结果
        if(count_1>0){
            System.out.println("更新成功!");
        }
        //关闭
        try {
            stmt.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        try {
            connection.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

+ 13 - 0
business/base-service/src/main/java/com/yihu/jw/utils/StringUtil.java

@ -12,6 +12,7 @@ import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Random;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@ -1437,4 +1438,16 @@ public class StringUtil {
        return dest;
    }
    /**
     * 生成随机
     * @return
     */
    private String getRandomIntStr(){
        Random rand = new Random();
        int i = rand.nextInt(); //int范围类的随机数
        i = rand.nextInt(100); //生成0-100以内的随机数
        i = (int)(Math.random() * 100000000); //0-100以内的随机数,用Matn.random()方式
        return String.valueOf(i);
    }
}

+ 52 - 6
business/base-service/src/main/java/com/yihu/jw/wechat/enterprise/EnterpriseService.java

@ -7,12 +7,15 @@ import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
import com.yihu.jw.entity.hospital.enterprise.WxEnterpriseDO;
import com.yihu.jw.entity.hospital.enterprise.WxEnterpriseTokenDO;
import com.yihu.jw.entity.hospital.enterprise.WxEnterpriseUserDO;
import com.yihu.jw.entity.hospital.httplog.WlyyHttpLogDO;
import com.yihu.jw.hospital.httplog.dao.WlyyHttpLogDao;
import com.yihu.jw.util.date.DateUtil;
import com.yihu.jw.util.wechat.wxhttp.HttpUtil;
import com.yihu.jw.wechat.enterprise.dao.WxEnterpriseDao;
import com.yihu.jw.wechat.enterprise.dao.WxEnterpriseTokenDao;
import com.yihu.jw.wechat.enterprise.dao.WxEnterpriseUserDao;
import org.apache.commons.lang3.StringUtils;
import org.checkerframework.checker.units.qual.A;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@ -47,6 +50,8 @@ public class EnterpriseService {
    private WxEnterpriseDao wxEnterpriseDao;
    @Autowired
    private BaseDoctorDao baseDoctorDao;
    @Autowired
    private WlyyHttpLogDao wlyyHttpLogDao;
    public String getToken(String enterpriseId)throws Exception{
@ -151,11 +156,22 @@ public class EnterpriseService {
    public String sendMKMesByDoctor(String enterpriseId,String doctor,String content)throws Exception {
        BaseDoctorDO baseDoctorDO = baseDoctorDao.findById(doctor);
        String res="";
        if (baseDoctorDO != null && StringUtils.isNotBlank(baseDoctorDO.getMobile())) {
            WxEnterpriseUserDO user = wxEnterpriseUserDao.findByEnterpriseIdAndMobile(enterpriseId, baseDoctorDO.getMobile());
            if (user != null) {
                return sendMKMes(enterpriseId, user.getUserid(), content);
                WlyyHttpLogDO wlyyHttpLogDO = new WlyyHttpLogDO();
                wlyyHttpLogDO.setDoctor(doctor);
                wlyyHttpLogDO.setRequest(content);
                wlyyHttpLogDO.setName("im消息推送");
                wlyyHttpLogDO.setCode(enterpriseId);
                wlyyHttpLogDO.setCreateTime(new Date());
                wlyyHttpLogDO.setRequest("enterpriseId:"+enterpriseId+",doctor:"+doctor+",url:"+content);
                res=sendTextMes(enterpriseId, user.getUserid(), content);
                wlyyHttpLogDO.setResponse(res);
                logger.info(res);
                wlyyHttpLogDao.save(wlyyHttpLogDO);
                return res;
            }
        }
        return "";
@ -165,19 +181,39 @@ public class EnterpriseService {
        WxEnterpriseUserDO user = wxEnterpriseUserDao.findByEnterpriseIdAndMobile(enterpriseId,mobile);
        if(user!=null){
            return sendMKMes(enterpriseId,user.getUserid(),content);
            return sendTextMes(enterpriseId,user.getUserid(),content);
        }
        return "";
    }
    public String sendTWMesByDoctor(String enterpriseId,String doctor,String title,String description,String url)throws Exception{
        BaseDoctorDO baseDoctorDO = baseDoctorDao.findById(doctor);
        String res = "";
        if(baseDoctorDO!=null&&StringUtils.isNotBlank(baseDoctorDO.getMobile())){
            WxEnterpriseUserDO user = wxEnterpriseUserDao.findByEnterpriseIdAndMobile(enterpriseId,baseDoctorDO.getMobile());
            if(user!=null){
                return sendTWMes(enterpriseId,user.getUserid(),title,description,url);
                res =sendTWMes(enterpriseId,user.getUserid(),title,description,url);
                logger.info("开始保存日志");
                logger.info("url==="+url);
                try {
                    if (StringUtils.isNoneBlank(url)){
                        logger.info("进入保存接口");
                        String outPatientId = url.substring(url.lastIndexOf("=")+1,url.length());
                        WlyyHttpLogDO wlyyHttpLogDO = new WlyyHttpLogDO();
                        wlyyHttpLogDO.setDoctor(doctor);
                        wlyyHttpLogDO.setRequest(url);
                        wlyyHttpLogDO.setName(title);
                        wlyyHttpLogDO.setCode(outPatientId);
                        wlyyHttpLogDO.setCreateTime(new Date());
                        wlyyHttpLogDO.setRequest("enterpriseId:"+enterpriseId+",doctor:"+doctor+",url:"+url);
                            wlyyHttpLogDO.setResponse(res);
                        logger.info(res);
                        wlyyHttpLogDao.save(wlyyHttpLogDO);
                    }
                }catch (Exception e){
                    e.printStackTrace();
                }
                return res;
            }
        }
        return "";
@ -318,6 +354,16 @@ public class EnterpriseService {
        String rs = HttpUtil.sendPost(mesurl,param.toJSONString());
        logger.info("MKMes:"+rs);
        WlyyHttpLogDO wlyyHttpLogDO = new WlyyHttpLogDO();
        wlyyHttpLogDO.setDoctor(userId);
        wlyyHttpLogDO.setRequest(content);
        wlyyHttpLogDO.setName("im消息推送");
        wlyyHttpLogDO.setCode(enterpriseId);
        wlyyHttpLogDO.setCreateTime(new Date());
        wlyyHttpLogDO.setRequest("enterpriseId:"+enterpriseId+",doctor:"+userId+",url:"+content);
        wlyyHttpLogDO.setResponse(rs);
        logger.info(rs);
        wlyyHttpLogDao.save(wlyyHttpLogDO);
        return rs;
    }

+ 2 - 5
business/base-service/src/main/java/com/yihu/jw/wechat/service/BaseSensitiveFilterWordsService.java

@ -19,8 +19,6 @@ import java.util.*;
@Service
public class BaseSensitiveFilterWordsService extends BaseJpaService<BaseSensitiveDO, BaseSensitiveDao> {
    @Autowired
    private BaseSensitiveDao baseSensitiveDao;
    @Autowired
@ -34,14 +32,13 @@ public class BaseSensitiveFilterWordsService extends BaseJpaService<BaseSensitiv
     * @param txt
     * @return
     */
    public String filterSensitiveWords(String txt){
        List<BaseSensitiveDO> list = (List<BaseSensitiveDO>) baseSensitiveDao.findAll();
    public String filterSensitiveWords(String txt, List<BaseSensitiveDO> list){
        HashSet<String> set = new HashSet<>();
        for (BaseSensitiveDO one : list) {
            set.add(one.getSensitiveWord());
        }
        SensitivewordFilter filter = new SensitivewordFilter(set);
        Set<String> words = filter.getSensitiveWord(txt, 1);
        /*Set<String> words = filter.getSensitiveWord(txt, 1);*/
        String replaceTxt = filter.replaceSensitiveWord(txt, 1, "***");
        return replaceTxt;
    }

+ 7 - 7
business/base-service/src/main/java/com/yihu/jw/wechat/service/WxTemplateService.java

@ -617,15 +617,15 @@ public class WxTemplateService {
                        config.setUrl(url);
                        weixinMessagePushUtils.putWxMsg(wxAccessTokenService.getWxAccessTokenById(wechatId).getAccessToken(),basePatientWechatDo.getOpenid(),config);
                }
                List<WlyyOutpatientDO> list = outpatientDao.findWlyyOutpatientDO(basePatientDO.getId());
                if (list!=null&&list.size()>0){
                    WlyyOutpatientDO wlyyOutpatientDO = list.get(0);
                    wlyyOutpatientDO.setConsumer(basePatientDO.getId());
                    wlyyOutpatientDO.setDoctorName(senderName);
                    prescriptionService.wxTempalteJPush("consult_remind",wlyyOutpatientDO,null,"","","","");
                }
            }
            List<WlyyOutpatientDO> list = outpatientDao.findWlyyOutpatientDO(basePatientDO.getId());
            if (list!=null&&list.size()>0){
                WlyyOutpatientDO wlyyOutpatientDO = list.get(0);
                wlyyOutpatientDO.setConsumer(basePatientDO.getId());
                wlyyOutpatientDO.setDoctorName(senderName);
                prescriptionService.wxTempalteJPush("consult_remind",wlyyOutpatientDO,null,"","","","");
            }
        }else{
            throw new Exception("接收者ID错误,无法找到该账号");

+ 10 - 1
business/base-service/src/main/java/com/yihu/jw/wlyy/service/WlyyBusinessService.java

@ -17,6 +17,8 @@ import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.entity.base.patient.PatientMedicareCardDO;
import com.yihu.jw.entity.hospital.mapping.DoctorMappingDO;
import com.yihu.jw.entity.hospital.prescription.WlyyOutpatientDO;
import com.yihu.jw.hospital.httplog.dao.BaseOperateLogDao;
import com.yihu.jw.hospital.httplog.service.BaseOperateLogService;
import com.yihu.jw.hospital.mapping.dao.DoctorMappingDao;
import com.yihu.jw.hospital.prescription.dao.OutpatientDao;
import com.yihu.jw.hospital.prescription.service.PrescriptionService;
@ -86,6 +88,8 @@ public class WlyyBusinessService {
    private BasePatientMedicareCardDao patientMedicareCardDao;
    @Autowired
    private XzzxEntranceService xzzxEntranceService;
    @Autowired
    private BaseOperateLogService baseOperateLogService;
    /**
@ -275,7 +279,7 @@ public class WlyyBusinessService {
     * @return
     * @throws Exception
     */
    public String wlyyGetPatientAccetokenByIdcard(String patientId,String wxId) throws Exception {
    public String wlyyGetPatientAccetokenByIdcard(String patientId,String wxId,String doctorId) throws Exception {
        
        String idcard = "";
        String result = "";
@ -396,6 +400,11 @@ public class WlyyBusinessService {
                    throw new Exception("请求i健康接口失败");
                }
            }
            try {
                baseOperateLogService.saveOperateLog(doctorId,patientId,"JKDA","健康档案","","");
            }catch (Exception e){
                e.printStackTrace();
            }
        }else {
            throw new Exception("该居民不存在");
        }

+ 93 - 1
business/base-service/src/main/java/com/yihu/jw/wlyy/wlyyhttp/WlyyHttpService.java

@ -1,7 +1,9 @@
package com.yihu.jw.wlyy.wlyyhttp;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.entity.hospital.consult.WlyyHospitalSysDictDO;
import com.yihu.jw.entity.wlyyinfo.OauthWlyyConfigDO;
import com.yihu.jw.hospital.dict.WlyyHospitalSysDictDao;
import com.yihu.jw.util.http.HttpClientUtil;
import com.yihu.jw.wlyy.dao.OauthWlyyConfigDao;
import org.apache.commons.collections.map.HashedMap;
@ -14,6 +16,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
@ -31,6 +34,8 @@ public class WlyyHttpService {
    @Autowired
    private HttpClientUtil httpClientUtil;
    @Autowired
    private WlyyHospitalSysDictDao wlyyHospitalSysDictDao;
    /**
     * @param configId 配置ID
@ -95,6 +100,93 @@ public class WlyyHttpService {
        }
        return null;
    }
    /**
     * @param configId 配置ID
     * @param param key为param,的参数
     * @return
     */
    public JSONObject sendWlyyMesGet(String configId,String param) {
        try{
            OauthWlyyConfigDO oauthWlyyConfigDO = oauthWlyyConfigDao.findOne(configId);
            //token获取accesstoken
            List<NameValuePair> params = new ArrayList<>();
            params.add(new BasicNameValuePair("appid", oauthWlyyConfigDO.getAppId()));
            params.add(new BasicNameValuePair("appSecret", oauthWlyyConfigDO.getAppSecret()));
            String res = httpClientUtil.post(oauthWlyyConfigDO.getTokenUrl(), params, "UTF-8");
            String token = null;
            JSONObject rsjson = JSONObject.parseObject(res);
            logger.info("sendWlyyMes token :" + rsjson.toString());
            Integer status = rsjson.getInteger("status");
            if (status == 10000) {
                //设置头部
                token = rsjson.getJSONObject("result").getString("accesstoken");
                Map<String,Object> headerMap = new HashedMap();
                headerMap.put("accesstoken",token);
                logger.info("sendWlyyMes url :"+oauthWlyyConfigDO.getUrl()+param);
                String rs = httpClientUtil.get(oauthWlyyConfigDO.getUrl()+param,"utf-8",headerMap);
                JSONObject re = JSONObject.parseObject(rs);
                Integer s = re.getInteger("status");
                if(s == 200){
                    return re;
                }else{
                    return null;
                }
            }else{
                return null;
            }
        }catch (Exception e){
            logger.error("sendWlyyMes error:"+e.toString());
        }
        return null;
    }
    public  JSONObject testgeet(String ip){
        String gt="d99d7ba0ce0ad944d02c11e2e00b184f";
        String url = "http://bypass.geetest.com/v1/bypass_status.php";
        String register="http://localhost:8088/register";
        JSONObject result = new JSONObject();
        List<WlyyHospitalSysDictDO> list = wlyyHospitalSysDictDao.findByDictName("geetConfig");
        for (WlyyHospitalSysDictDO wlyyHospitalSysDictDO:list){
            if ("type".equalsIgnoreCase(wlyyHospitalSysDictDO.getDictCode())){
                result.put("type",wlyyHospitalSysDictDO.getDictValue());
            }
            if ("register".equalsIgnoreCase(wlyyHospitalSysDictDO.getDictCode())){
                register = wlyyHospitalSysDictDO.getDictValue();
            }
            if ("bypass".equalsIgnoreCase(wlyyHospitalSysDictDO.getDictCode())){
                url = wlyyHospitalSysDictDO.getDictValue();
            }
            if ("gt".equalsIgnoreCase(wlyyHospitalSysDictDO.getDictCode())){
                gt = wlyyHospitalSysDictDO.getDictValue();
            }
        }
        List<NameValuePair> params = new ArrayList<>();
        params.add(new BasicNameValuePair("gt",gt));
        String res = httpClientUtil.post(url, params, "UTF-8");
        JSONObject statusObject = JSONObject.parseObject(res);
        if (statusObject!=null){
            result.put("offline",statusObject.getString("status"));
        }
        System.out.println(res);
        Long t= new Date().getTime();
        String registerRes= httpClientUtil.get(register+"?t="+t,"UTF-8");
        System.out.println(registerRes);
        JSONObject registerObject= JSONObject.parseObject(registerRes);
        if (registerObject!=null){
            result.put("challenge",registerObject.getString("challenge"));
            result.put("newCaptcha",registerObject.getString("new_captcha"));
        }
        result.put("gt",gt);
        System.out.println(result.toJSONString());
        return result;
    }
    
}

+ 4 - 2
business/base-service/src/mqConfig/mqdata/BS15018.json

@ -7,7 +7,8 @@
		"OP_DATE": "2011-09-27 15:35:57",
		"CARD_TYPE": "2",
		"CARD_TYPE_NAME": "社保卡",
		"social_no": "350211198411053024"
		"social_no": "350211198411053024",
			"name":"白海灵"
		},
	{
		"PAT_NO": "P5616242-0",
@ -16,6 +17,7 @@
		"OP_DATE": "2014-07-25 08:46:40",
		"CARD_TYPE": "2",
		"CARD_TYPE_NAME": "社保卡",
		"social_no": "350211198411053024"
		"social_no": "350211198411053024",
		"name":"白海灵"
	}]
}

+ 8 - 6
business/es-service/src/main/java/com/yihu/jw/es/service/StatisticsEsService.java

@ -16,6 +16,7 @@ import com.yihu.jw.es.util.SaveModel;
import com.yihu.jw.evaluate.score.service.BaseEvaluateScoreService;
import com.yihu.jw.org.dao.BaseOrgDao;
import com.yihu.jw.util.date.DateUtil;
import com.yihu.jw.utils.hibernate.HibenateUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -55,6 +56,8 @@ public class StatisticsEsService {
    private BaseCityDao cityDao;
    @Autowired
    private BaseEvaluateScoreService baseEvaluateScoreService;
    @Autowired
    private HibenateUtils hibenateUtils;
    @Value("${wechat.id}")
    private String wxId;
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
@ -1265,8 +1268,8 @@ public class StatisticsEsService {
        }else if (flag ==2) {
            List<SaveModel> saveModels = elasticsearchUtil.findDateQuotaLevel0(startDate, endDate, area, level, index, SaveModel.timeLevel_ZL, null, "6");
            String deptSql = "select hd.CODE as \"CODE\",hd.NAME as \"NAME\" from DICT_HOSPITAL_DEPT hd where hd.ORG_CODE ='" + area + "' and CONSULT_DEPT_FLAG=1";
            List<Map<String, Object>> mapList = jdbcTemplate.queryForList(deptSql);
            String deptSql = "select hd.CODE as \"code\",hd.NAME as \"name\" from DICT_HOSPITAL_DEPT hd where hd.ORG_CODE ='" + area + "' and hd.CONSULT_DEPT_FLAG=1";
            List<Map<String, Object>> mapList = hibenateUtils.createSQLQuery(deptSql);
            List<JSONObject> result = new ArrayList<>();
            for (SaveModel saveModel : saveModels) {
                List<BaseDoctorHospitalDO> baseDoctorHospitalDOS = doctorHospitalDao.findByDoctorCode(saveModel.getDoctor());
@ -3745,7 +3748,6 @@ public class StatisticsEsService {
            List<SaveModel> total = elasticsearchUtil.findListDateQuotaLevel1(startDate, endDate, area, level, index1, SaveModel.timeLevel_ZL, null,lowCode);
            //已结束
            List<SaveModel> endTotal = elasticsearchUtil.findListDateQuotaLevel2(startDate, endDate, area, level, index, SaveModel.timeLevel_ZL, null,lowCode,"3");
            logger.info("total"+total==null?"0":String.valueOf(total.size())+";"+total.get(0).getResult1());
            //已接诊
            List<SaveModel> haveReceiveTotal = elasticsearchUtil.findListDateQuotaLevel2(startDate, endDate, area, level, index1, SaveModel.timeLevel_ZL, null,lowCode,"1");
            //未接诊
@ -4041,7 +4043,7 @@ public class StatisticsEsService {
            }else {
                JSONArray array = dateTotalStatistics2(startDate,endDate,area,level,index1,lowCode,SaveModel.timeLevel_ZL,null);
                object.put("totalData",array);//新增量
                JSONArray array1 = dateTotalStatistics2(startDate,endDate,area,level,index,lowCode,SaveModel.timeLevel_ZL,"0");//未接诊
                JSONArray array1 = dateTotalStatistics2(startDate,endDate,area,level,index1,lowCode,SaveModel.timeLevel_ZL,"0");//未接诊
                object.put("noReceiveData",array1);//未接诊
                JSONArray array2 = dateTotalStatistics2(startDate,endDate,area,level,index1,lowCode,SaveModel.timeLevel_ZL,"1");//已接诊
                object.put("haveReceiveData",array2);//已接诊
@ -4066,7 +4068,7 @@ public class StatisticsEsService {
            }else {
                JSONArray array = weekTotalStatistics8(startDate,endDate,area,level,index1,lowCode,SaveModel.timeLevel_ZL,null);
                object.put("totalData",array);//新增量
                JSONArray array1 = weekTotalStatistics8(startDate,endDate,area,level,index,lowCode,SaveModel.timeLevel_ZL,"0");//未接诊
                JSONArray array1 = weekTotalStatistics8(startDate,endDate,area,level,index1,lowCode,SaveModel.timeLevel_ZL,"0");//未接诊
                object.put("noReceiveData",array1);;//未接诊
                JSONArray array2 = weekTotalStatistics8(startDate,endDate,area,level,index1,lowCode,SaveModel.timeLevel_ZL,"1");//已接诊
                object.put("haveReceiveData",array2);//已接诊
@ -4091,7 +4093,7 @@ public class StatisticsEsService {
            }else {
                JSONArray array = monthTotalStatistics2(startDate,endDate,area,level,index1,lowCode,SaveModel.timeLevel_ZL,null);
                object.put("totalData",array);
                JSONArray array1 = monthTotalStatistics2(startDate,endDate,area,level,index,lowCode,SaveModel.timeLevel_ZL,"0");
                JSONArray array1 = monthTotalStatistics2(startDate,endDate,area,level,index1,lowCode,SaveModel.timeLevel_ZL,"0");
                object.put("noReceiveData",array1);
                JSONArray array2 = monthTotalStatistics2(startDate,endDate,area,level,index1,lowCode,SaveModel.timeLevel_ZL,"1");
                object.put("haveReceiveData",array2);

+ 159 - 1
business/es-service/src/main/java/com/yihu/jw/es/util/ElasticsearchUtil.java

@ -899,7 +899,7 @@ public class ElasticsearchUtil {
     * @return
     * @throws Exception
     */
    public List findDateAllQuotaLevel1(String startDate, String endDate, String area, int level, String index, String timeLevel, String interval, String lowLevel) throws Exception {
    public List findDateAllQuotaLevel1(String startDate, String endDate, String area, int level, String index, String timeLevel, String interval, String lowLevel,String areaLevel) throws Exception {
        //时间格式转换  yyyy-MM-dd转成 2017-07-17T00:00:00+0800
        if (StringUtils.isNotEmpty(startDate)) {
@ -939,6 +939,164 @@ public class ElasticsearchUtil {
            groupBy.append("  group by city,cityName,slaveKey1,slaveKey1Name");
        }
        if (StringUtils.isNotEmpty(area)) {
            if (SaveModel.doctorLevel.equals(level + "")) {
                sql.append(" doctor='" + area + "'");
            }else if (SaveModel.deptLevel.equals(level + "")) {
                sql.append(" dept='" + area + "'");
            } else if (SaveModel.OrgLevel.equals(level + "")) {
                sql.append(" hospital='" + area + "'");
            } else if (SaveModel.townLevel.equals(level + "")) {
                sql.append(" town='" + area + "'");
            } else if (SaveModel.cityLevel.equals(level + "")) {
                sql.append(" city='" + area + "'");
            }
            sql.append(" and ");
        }
        sql.append(" quotaCode='" + index + "'  ");
        sql.append(" and timeLevel='" + timeLevel + "'  ");
        sql.append(" and areaLevel='"+areaLevel+"'");
        if (StringUtils.isNotEmpty(startDate)) {
            sql.append(" and quotaDate>='" + startDate + "'");
        }
        if (StringUtils.isNotEmpty(endDate)) {
            sql.append(" and quotaDate<='" + endDate + "'");
        }
        //根据时间维度分组
        if (StringUtils.isNotEmpty(interval)) {
            if (SaveModel.interval_month.equals(interval)) {
                groupBy.append(" ,date_histogram(field='quotaDate','interval'='month','time_zone'='+08:00','alias'='quotaDate') ");
            } else if (SaveModel.interval_week.equals(interval)) {
                groupBy.append(" ,date_histogram(field='quotaDate','interval'='week','time_zone'='+08:00','alias'='quotaDate') ");
            } else if (SaveModel.interval_day.equals(interval)) {
                groupBy.append(" ,date_histogram(field='quotaDate','interval'='1d','time_zone'='+08:00','alias'='quotaDate') ");
            }
        }
        sql.append(groupBy);
        return excute(sql.toString(), SaveModel.class, "", "");
    }
    public List findDateAllQuotaLevel2(String startDate, String endDate, String area, int level, String index, String timeLevel, String interval, String lowLevel,String areaLevel) throws Exception {
        //时间格式转换  yyyy-MM-dd转成 2017-07-17T00:00:00+0800
        if (StringUtils.isNotEmpty(startDate)) {
            if (startDate.length() > 10) {
                startDate = changeTime(startDate);
            } else {
                startDate = changeDate(startDate);
            }
        }
        if (StringUtils.isNotEmpty(endDate)) {
            if (endDate.length() > 10) {
                endDate = changeTime(endDate);
            } else {
                endDate = changeDate(endDate);
            }
        }
        StringBuffer sql = new StringBuffer();
        StringBuffer groupBy = new StringBuffer();
        String low_level = level + "";
        if (StringUtils.isNotEmpty(lowLevel)) {
            low_level = lowLevel;
        }
        if (SaveModel.doctorLevel.equals(low_level)) {
            sql.append("select doctor as doctor,doctorName as doctorName,slaveKey2 as slaveKey2,slaveKey2Name as slaveKey2Name,sum(result1) as result1, sum(result2) as result2 from " + esIndex + " where ");
            groupBy.append("  group by doctor,doctorName,slaveKey2,slaveKey2Name");
        }else if (SaveModel.deptLevel.equals(low_level)) {
            sql.append("select dept as dept,deptName as deptName,slaveKey2 as slaveKey2,slaveKey2Name as slaveKey2Name,sum(result1) as result1, sum(result2) as result2 from " + esIndex + " where ");
            groupBy.append("  group by dept,deptName,slaveKey2,slaveKey2Name");
        } else if (SaveModel.OrgLevel.equals(low_level)) {
            sql.append("select hospital as hospital,hospitalName as hospitalName,slaveKey2 as slaveKey2,slaveKey2Name as slaveKey2Name,sum(result1) as result1,sum(result2) as result2 from " + esIndex + " where ");
            groupBy.append("  group by hospital,hospitalName,slaveKey2,slaveKey2Name");
        } else if (SaveModel.townLevel.equals(low_level)) {
            sql.append("select town as town,townName as townName,slaveKey2 as slaveKey2,slaveKey2Name as slaveKey2Name,sum(result1) as result1,sum(result2) as result2 from " + esIndex + " where ");
            groupBy.append("  group by town,townName,slaveKey2,slaveKey2Name");
        } else if (SaveModel.cityLevel.equals(low_level)) {
            sql.append("select city as city,cityName as cityName,slaveKey2 as slaveKey2,slaveKey2Name as slaveKey2Name,sum(result1) as result1,sum(result2) as result2 from " + esIndex + " where ");
            groupBy.append("  group by city,cityName,slaveKey2,slaveKey2Name");
        }
        if (StringUtils.isNotEmpty(area)) {
            if (SaveModel.doctorLevel.equals(level + "")) {
                sql.append(" doctor='" + area + "'");
            }else if (SaveModel.deptLevel.equals(level + "")) {
                sql.append(" dept='" + area + "'");
            } else if (SaveModel.OrgLevel.equals(level + "")) {
                sql.append(" hospital='" + area + "'");
            } else if (SaveModel.townLevel.equals(level + "")) {
                sql.append(" town='" + area + "'");
            } else if (SaveModel.cityLevel.equals(level + "")) {
                sql.append(" city='" + area + "'");
            }
            sql.append(" and ");
        }
        sql.append(" quotaCode='" + index + "'  ");
        sql.append(" and timeLevel='" + timeLevel + "'  ");
        sql.append(" and areaLevel='"+areaLevel+"'");
        if (StringUtils.isNotEmpty(startDate)) {
            sql.append(" and quotaDate>='" + startDate + "'");
        }
        if (StringUtils.isNotEmpty(endDate)) {
            sql.append(" and quotaDate<='" + endDate + "'");
        }
        //根据时间维度分组
        if (StringUtils.isNotEmpty(interval)) {
            if (SaveModel.interval_month.equals(interval)) {
                groupBy.append(" ,date_histogram(field='quotaDate','interval'='month','time_zone'='+08:00','alias'='quotaDate') ");
            } else if (SaveModel.interval_week.equals(interval)) {
                groupBy.append(" ,date_histogram(field='quotaDate','interval'='week','time_zone'='+08:00','alias'='quotaDate') ");
            } else if (SaveModel.interval_day.equals(interval)) {
                groupBy.append(" ,date_histogram(field='quotaDate','interval'='1d','time_zone'='+08:00','alias'='quotaDate') ");
            }
        }
        sql.append(groupBy);
        return excute(sql.toString(), SaveModel.class, "", "");
    }
    public List findDateAllQuotaLevel3(String startDate, String endDate, String area, int level, String index, String timeLevel, String interval, String lowLevel) throws Exception {
        //时间格式转换  yyyy-MM-dd转成 2017-07-17T00:00:00+0800
        if (StringUtils.isNotEmpty(startDate)) {
            if (startDate.length() > 10) {
                startDate = changeTime(startDate);
            } else {
                startDate = changeDate(startDate);
            }
        }
        if (StringUtils.isNotEmpty(endDate)) {
            if (endDate.length() > 10) {
                endDate = changeTime(endDate);
            } else {
                endDate = changeDate(endDate);
            }
        }
        StringBuffer sql = new StringBuffer();
        StringBuffer groupBy = new StringBuffer();
        String low_level = level + "";
        if (StringUtils.isNotEmpty(lowLevel)) {
            low_level = lowLevel;
        }
        if (SaveModel.doctorLevel.equals(low_level)) {
            sql.append("select doctor as doctor,doctorName as doctorName,slaveKey3 as slaveKey3,slaveKey3Name as slaveKey3Name,sum(result1) as result1, sum(result2) as result2 from " + esIndex + " where ");
            groupBy.append("  group by doctor,doctorName,slaveKey3,slaveKey3Name");
        }else if (SaveModel.deptLevel.equals(low_level)) {
            sql.append("select dept as dept,deptName as deptName,slaveKey3 as slaveKey3,slaveKey3Name as slaveKey3Name,sum(result1) as result1, sum(result2) as result2 from " + esIndex + " where ");
            groupBy.append("  group by dept,deptName,slaveKey3,slaveKey3Name");
        } else if (SaveModel.OrgLevel.equals(low_level)) {
            sql.append("select hospital as hospital,hospitalName as hospitalName,slaveKey3 as slaveKey3,slaveKey3Name as slaveKey3Name,sum(result1) as result1,sum(result2) as result2 from " + esIndex + " where ");
            groupBy.append("  group by hospital,hospitalName,slaveKey3,slaveKey3Name");
        } else if (SaveModel.townLevel.equals(low_level)) {
            sql.append("select town as town,townName as townName,slaveKey3 as slaveKey3,slaveKey3Name as slaveKey3Name,sum(result1) as result1,sum(result2) as result2 from " + esIndex + " where ");
            groupBy.append("  group by town,townName,slaveKey3,slaveKey3Name");
        } else if (SaveModel.cityLevel.equals(low_level)) {
            sql.append("select city as city,cityName as cityName,slaveKey3 as slaveKey3,slaveKey3Name as slaveKey3Name,sum(result1) as result1,sum(result2) as result2 from " + esIndex + " where ");
            groupBy.append("  group by city,cityName,slaveKey3,slaveKey3Name");
        }
        if (StringUtils.isNotEmpty(area)) {
            if (SaveModel.doctorLevel.equals(level + "")) {
                sql.append(" doctor='" + area + "'");

+ 3 - 0
business/im-service/src/main/java/com/yihu/jw/im/dao/ConsultTeamDao.java

@ -1,6 +1,7 @@
package com.yihu.jw.im.dao;
import com.yihu.jw.entity.base.im.ConsultTeamDo;
import org.hibernate.validator.constraints.LuhnCheck;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
@ -29,4 +30,6 @@ public interface ConsultTeamDao  extends PagingAndSortingRepository<ConsultTeamD
	Integer  countByTime(int type, String doctor, Date startTime, Date endTime);
	ConsultTeamDo queryByRelationCode(String relationCode);
	List<ConsultTeamDo> findByTypeAndDel(Integer type,String del);
}

+ 145 - 162
business/im-service/src/main/java/com/yihu/jw/im/service/ImService.java

@ -1,10 +1,8 @@
package com.yihu.jw.im.service;
import ch.qos.logback.core.joran.conditional.ElseAction;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.ibm.mq.jmqi.MQPD;
import com.yihu.jw.doctor.dao.BaseDoctorDao;
import com.yihu.jw.doctor.dao.BaseDoctorHospitalDao;
import com.yihu.jw.doctor.dao.BaseDoctorRoleDao;
@ -56,8 +54,6 @@ import com.yihu.jw.util.date.DateUtil;
import com.yihu.jw.utils.hibernate.HibenateUtils;
import com.yihu.jw.wechat.service.WxAccessTokenService;
import com.yihu.jw.wechat.service.WxTemplateService;
import com.ylzinfo.onepay.sdk.domain.ext.WaitPayDetailVO;
import com.ylzinfo.onepay.sdk.utils.StringUtil;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
@ -68,7 +64,6 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
import javax.servlet.http.HttpServletRequest;
import javax.xml.bind.Element;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
@ -488,22 +483,6 @@ public class ImService {
		String[] arr = null;
		if (type == 3) {//语音文件处理
//			if(!StringUtils.isEmpty(wechat_appid)){
//				String path = fetchWxVoices(wechat_appid);
//				JSONObject obj = new JSONObject();
//				// 将临时语音拷贝到正式存储路径下
//				if (org.apache.commons.lang3.StringUtils.isNotEmpty(path)) {
//					if("xm_ihealth_wx".equals(wechat_appid)){
//						Map<String, Object> map = fileUploadService.uploadImg(file);
//						uploadVO.setFullUri(map.get("accessory").toString());
//					}else{
//						content = fileUtil.copyTempVoice(path,fastdfs_file_url);
//					}
//					obj.put("path", path);
//					obj.put("times", times);
//					content = obj.toString();
//				}
//			}
			ConsultTeamLogDo log = new ConsultTeamLogDo();
			log.setConsult(consult);
			log.setContent(content);
@ -513,15 +492,7 @@ public class ImService {
			logs.add(log);
		} else if (type == 2) {
//			// 图片消息
//			content = fetchWxImages(wechat_appid);
//			// 将临时图片拷贝到正式存储路径下
//			if (org.apache.commons.lang3.StringUtils.isNotEmpty(content)) {
//				content = fileUtil.copyTempImage(content,upload_temp_path);
//			}
//			if (org.apache.commons.lang3.StringUtils.isEmpty(content)) {
//				throw new Exception("图片上传失败!");
////				return error(-1, "图片上传失败!");
//			}
			String[] images = content.split(",");
			for (String image : images) {
				ConsultTeamLogDo log = new ConsultTeamLogDo();
@ -549,86 +520,14 @@ public class ImService {
		List<String> failed = new ArrayList<>();
		for (ConsultTeamLogDo log : logs) {
//                String response = ImUtill.sendTopicIM(getUID(), patient.getName(), consult, String.valueOf(log.getType()), log.getContent());
			String response = imUtil.sendTopicIM(patientcode, patient.getName(), consult, String.valueOf(log.getType()), log.getContent(),null,patient.getName(),Integer.parseInt(IdCardUtil.getSexForIdcard_new(patient.getIdcard())), IdCardUtil.getAgeForIdcard(patient.getIdcard()));
			if (org.apache.commons.lang3.StringUtils.isNotEmpty(response)) {
				JSONObject resObj = JSON.parseObject(response);
				if (resObj.getInteger("status")  == -1) {
					throw new Exception("追问失败!" + resObj.getString("message"));
//					return invalidUserException(new RuntimeException(resObj.getString("message")), -1, "追问失败!" + resObj.getString("message"));
				}
				failed.add(String.valueOf(resObj.get("data")));
//				try {
//
//					String sql = "";
//					if (consultModel.getType() == 2){
//						//家庭咨询
//						sql = "SELECT t.participant_id FROM " + data_base_name +
//								".participants t where t.session_id = '" +
//								patient.getId() + "_" + consultModel.getTeam() + "_" + consultModel.getType() +
//								"' and t.participant_role = 0";
//					}else if (consultModel.getType() == 8 || consultModel.getType() == 9 || consultModel.getType() == 11){
//						//8-续方咨询 9-在线复诊咨询 11-上门预约服务
//						sql = "SELECT t.participant_id FROM " + data_base_name +
//								".participants t where t.session_id = '" +
//								patient.getId() + "_" + consultModel.getConsult() + "_" + consultModel.getType() +
//								"' and t.participant_role = 0";
//					}
//					if(org.apache.commons.lang3.StringUtils.isEmpty(sql)){
//						throw new Exception("追问失败!不存在该类型!【type】:" + type);
//						return write(-1, "追问失败!", "data", "不存在该类型!【type】:" + type);
//					}
//					List<Map<String, Object>> participants = jdbcTemplate.queryForList(sql);
//
//					for (Map<String, Object> participant : participants) {
//                          //有居民、健管、全科
//						String doctorCode = participant.get("participant_id").toString();
//						if (doctorCode.equals(patient.getCode())) {
//							continue;
//						}
				//健管
//						Boolean flag = messageService.getMessageNoticeSettingByMessageType(doctorCode, "1", MessageNoticeSetting.MessageTypeEnum.imSwitch.getValue());
				//全科
//                            Boolean flag2 = !messageService.getMessageNoticeSettingByMessageType(doctorCode, "1", MessageNoticeSetting.MessageTypeEnum.familyTopicSwitch.getValue());
//						if (flag) {
//							//            新增发送医生助手模板消息 v1.4.0 by wujunjie
//							Doctor doctor = doctorDao.findByCode(doctorCode);
//							String doctorOpenID = doctor.getOpenid();
//							if (org.apache.commons.lang3.StringUtils.isNotEmpty(doctorOpenID)) {
//								String title = "";
//								Consult consultSingle = consultDao.findByCode(log.getConsult());
//								if (consultSingle != null) {
//									Integer singleType = consultSingle.getType();
//									if (singleType != null && singleType == 8) {
//										title = consultSingle.getTitle();
//									} else if (singleType != null && singleType != 8) {
//										title = consultSingle.getSymptoms();
//									}
//									String repContent = parseContentType(type + "", content);
//									String first = "居民" + patient.getName() + "的咨询有新的回复。";
//									String url = doctorAssistant + "/wlyy/feldsher/sendDoctorTemplates";
//									List<NameValuePair> params = new ArrayList<>();
//									params.add(new BasicNameValuePair("type", "8"));
//									params.add(new BasicNameValuePair("openId", doctorOpenID));
//									params.add(new BasicNameValuePair("url", targetUrl));
//									params.add(new BasicNameValuePair("first", first));
//									params.add(new BasicNameValuePair("remark", "请进入手机APP查看"));
//									String keywords = title + "," + repContent + "," + doctor.getName();
//									params.add(new BasicNameValuePair("keywords", keywords));
//
//									httpClientUtil.post(url, params, "UTF-8");
//									System.out.println("发送对象:"+doctorCode);
//									System.out.println("发送对象名字:"+doctor.getName());
//								}
//							}
//						}
//					}
//				} catch (Exception e) {
//					e.printStackTrace();
//				}
			}
		}
		return failed;
@ -1048,7 +947,7 @@ public class ImService {
	 * 添加一条咨询记录
	 * @param patient 患者信息
	 * @param title 咨询标题
	 * @param type 咨询类型:9在线复诊,13专家咨询
	 * @param type 咨询类型:9在线复诊,13专家咨询,23在线咨询
	 * @return
	 */
	public ConsultDo addConsult(String patient, String title, String symptoms, String images, int type,String source) {
@ -1072,7 +971,7 @@ public class ImService {
	 * @param ct
	 * @throws Exception
	 */
	private String addLogs(ConsultTeamDo ct) throws Exception {
	public String addLogs(ConsultTeamDo ct) throws Exception {
		List<ConsultTeamLogDo> logs = new ArrayList<ConsultTeamLogDo>();
		// 添加问题咨询日志
		String content = "";
@ -1687,9 +1586,6 @@ public class ImService {
		evalueContent.put("doctorPhoto",doctor.getPhoto());
		evalueContent.put("consultCode",consult);
//		returnJson = imUtil.sendIM(consultTeam.getDoctor(), consultTeam.getPatient(), "28", evalueContent.toString());
//		String response = imUtil.sendTopicIM(consultTeam.getDoctor(), doctor.getName(), consult, "28", evalueContent.toString(),null);
//		String response = imUtil.sendImMsg(consultTeam.getDoctor(), doctor.getName(), session_id, "28", evalueContent.toString(),null);
		//保存系统消息服务评价
		systemMsgEvaluation(doctor,patient,cons,consultTeam,consult,wxId);
@ -1722,37 +1618,6 @@ public class ImService {
			throw new RuntimeException(String.valueOf(null==obj.get("message")?"无失败信息":obj.get("message")));
		}
//		//推送给IM文字消息
//		if (endType == 1) {
//			BasePatientDO p = basePatientDao.findById(endOperator);
//			name = p.getName();
//			returnJson = imUtil.sendIM(consultTeam.getPatient(), consultTeam.getDoctor(), "7", name + "结束了本次咨询");
//		} else {
//			BaseDoctorDO d = baseDoctorDao.findById(endOperator);
//			name = d.getName();
//			returnJson = imUtil.sendIM(consultTeam.getDoctor(), consultTeam.getPatient(), "7", name + "结束了本次咨询");
//		}
//		if (org.apache.commons.lang3.StringUtils.isEmpty(returnJson)) {
//			throw new RuntimeException("send consult finished IM message failed!");
////			throw new Exception("send consult finished IM message failed");
//		} else {
//			JSONObject jo = JSON.parseObject(returnJson);            //设置消息ID
//			consultTeam.setEndMsgId(jo.getInteger("startId") + "");
//			consultTeam.setEndOperator(endOperator);
//			consultTeam.setEndType(endType);
//		}
//		org.json.JSONObject group = talkGroupService.findConsultTalkGroup(consultTeam.getConsult());
//
//		if (group != null) {
//			String json = sendGroupIM(endOperator, group.getString("code"), "7", name + "结束了本次咨询");
//
//			if (org.apache.commons.lang3.StringUtils.isEmpty(json)) {
//				throw new Exception("send consult finished IM message failed");
//			}
//		}
		consultTeam.setEndMsgId(obj.getString("id"));
		cons.setEndTime(new Date());
		consultTeam.setEndTime(new Date());
@ -2274,6 +2139,10 @@ public class ImService {
		return imUtil.SessionsUnreadMessageCount(userid,type);
	}
	public Integer SessionsUnreadMessageCountByUserId(String userid){
		return imUtil.SessionsUnreadMessageCountByUserId(userid);
	}
	/**
	 * 发送复诊诊断和药品消息
	 * @param wlyyPrescriptionVO
@ -3981,7 +3850,7 @@ public class ImService {
	public void doctorReplyUpdateYktState(String consult,String doctor,String wxId){
		if (wxId.equalsIgnoreCase("xm_ykyy_wx")){
			String sql ="SELECT * FROM topics t where " +
			String sql ="SELECT * FROM im_internet_hospital.topics t where " +
					"t.id='"+consult+"' and t.reply_user='"+doctor+"' and t.reply=1 and t.status IN(0,1) ";
			List<Map<String,Object>> mapList = jdbcTemplate.queryForList(sql);
			logger.info("sql======"+sql);
@ -3990,6 +3859,7 @@ public class ImService {
				if (!flag){
					BusinessOrderDO businessOrderDO = businessOrderDao.selectByRelationCode(consult);
					if (businessOrderDO!=null){
                        System.out.println("11111");
						ykyyService.updateYktOrderStatus(businessOrderDO.getOrderNo(),"5");
					}
				}
@ -4008,10 +3878,11 @@ public class ImService {
	 * @param end_time 结束时间
	 * @return
	 */
	@Transactional(readOnly = true)
	public List<Map<String,Object>>  findConsultRecordByDoctorNew(String doctor, String id,
															   String type, Integer status,
															   int page,int pagesize,
															   String title,String start_time,String end_time) {
															   String title,String start_time,String end_time,String patient) {
		String  sql = "";
		sql = "SELECT " +
				"a.id AS \"id\"," +
@ -4050,7 +3921,7 @@ public class ImService {
				" LEFT JOIN base_patient d on op.patient = d.id " +
				" WHERE 1=1 ";
		if (status == 1) {
			sql += " and op.status = 0";
			sql += " and op.status = 0 and op.pay_status =1 ";
		}else if (status==0){
		}else if (status==2) {
@ -4062,6 +3933,9 @@ public class ImService {
		if (org.apache.commons.lang.StringUtils.isNotBlank(doctor)) {
			sql += " AND op.doctor='" + doctor + "' ";
		}
        if (org.apache.commons.lang.StringUtils.isNotBlank(patient)) {
            sql += " AND (op.consumer='" + patient + "' or op.patient ='"+patient + "')";
        }
		if (!StringUtils.isEmpty(title)) {
			title = "%" + title + "%";
@ -4384,15 +4258,17 @@ public class ImService {
					sql +=" AND  op.register_date >= '"+DateUtil.dateToStrShort(new Date())+" 00:00:00' ";
				}
			}else{}*/
			if("xm_ykyy_wx".equals(wxId)){
				if (flag){
					sql +=" and op.register_date >= str_to_date('"+DateUtil.dateToStrShort(new Date())+" 00:00:00','YYYY-MM-DD HH24:MI:SS')";
			if (!"xm_ihealth_wx".equalsIgnoreCase(wxId)){
				if("xm_ykyy_wx".equals(wxId)){
					if (flag){
						sql +=" and op.register_date >= str_to_date('"+DateUtil.dateToStrShort(new Date())+" 00:00:00','YYYY-MM-DD HH24:MI:SS')";
					}else {
						sql +=" and op.register_date >= to_date('"+DateUtil.dateToStrShort(new Date())+" 00:00:00','YYYY-MM-DD HH24:MI:SS')";
					}
				}else {
					sql +=" and op.register_date >= to_date('"+DateUtil.dateToStrShort(new Date())+" 00:00:00','YYYY-MM-DD HH24:MI:SS')";
					sql +=" AND  op.register_date >= '"+DateUtil.dateToStrShort(new Date())+" 00:00:00' ";
				}
			}else {
				sql +=" AND  op.register_date >= '"+DateUtil.dateToStrShort(new Date())+" 00:00:00' ";
			}
			sql =sql +" AND op.type in ('1','2') AND op.outpatient_type = 3 ";
			sql =sql +" ORDER BY op.create_time DESC";
@ -4445,27 +4321,31 @@ public class ImService {
			}else if("16".equals(type)){
				//视频复诊
				sql =sql +"AND op.type=2 AND op.outpatient_type=1 ";
				if("xm_ykyy_wx".equals(wxId)){
					if (flag){
						sql +=" and op.register_date >= str_to_date('"+DateUtil.dateToStrShort(new Date())+" 00:00:00','YYYY-MM-DD HH24:MI:SS')";
				if (!"xm_ihealth_wx".equalsIgnoreCase(wxId)){
					if("xm_ykyy_wx".equals(wxId)){
						if (flag){
							sql +=" and op.register_date >= str_to_date('"+DateUtil.dateToStrShort(new Date())+" 00:00:00','YYYY-MM-DD HH24:MI:SS')";
						}else {
							sql +=" and op.register_date >= to_date('"+DateUtil.dateToStrShort(new Date())+" 00:00:00','YYYY-MM-DD HH24:MI:SS')";
						}
					}else {
						sql +=" and op.register_date >= to_date('"+DateUtil.dateToStrShort(new Date())+" 00:00:00','YYYY-MM-DD HH24:MI:SS')";
						sql +=" AND  op.register_date >= '"+DateUtil.dateToStrShort(new Date())+" 00:00:00' ";
					}
				}else {
					sql +=" AND  op.register_date >= '"+DateUtil.dateToStrShort(new Date())+" 00:00:00' ";
				}
			}else if("12".equals(type)){
				//视频复诊
				sql =sql +"AND op.outpatient_type=2";
				if("xm_ykyy_wx".equals(wxId)){
					if (flag){
						sql +=" and op.register_date >= str_to_date('"+DateUtil.dateToStrShort(new Date())+" 00:00:00','YYYY-MM-DD HH24:MI:SS')";
					}else  {
						sql +=" and op.register_date >= to_date('"+DateUtil.dateToStrShort(new Date())+" 00:00:00','YYYY-MM-DD HH24:MI:SS')";
				if (!"xm_ihealth_wx".equalsIgnoreCase(wxId)){
					if("xm_ykyy_wx".equals(wxId)){
						if (flag){
							sql +=" and op.register_date >= str_to_date('"+DateUtil.dateToStrShort(new Date())+" 00:00:00','YYYY-MM-DD HH24:MI:SS')";
						}else  {
							sql +=" and op.register_date >= to_date('"+DateUtil.dateToStrShort(new Date())+" 00:00:00','YYYY-MM-DD HH24:MI:SS')";
						}
					}else {
						sql +=" AND  op.register_date >= '"+DateUtil.dateToStrShort(new Date())+" 00:00:00' ";
					}
				}else {
					sql +=" AND  op.register_date >= '"+DateUtil.dateToStrShort(new Date())+" 00:00:00' ";
				}
			}else{}
@ -4482,4 +4362,107 @@ public class ImService {
		}
		return mapList;
	}
	/**
	 * 查询医生所有的咨询记录
	 * @param doctor 医生标识
	 * @param type 咨询会话类型 : 0 全部
	 * @param pagesize 分页大小
	 * @return
	 */
	@Transactional(readOnly = true)
	public List<Map<String,Object>>  findRecordByDoctor(String doctor,
																  String type, String patientIdCard,String patientName,
																  int page,int pagesize) throws Exception {
		String  sql = "select DISTINCT t.id as \"id\"," +
				"  t.name as \"name\"," +
				"  t.idcard as \"idcard\"," +
				"  t.mobile as \"mobile\"," +
				"  op.doctor as \"doctor\"" +
				" from base_patient t  left join  wlyy_outpatient op " +
				" on (t.id = op.consumer or t.id = op.patient) where t.del ='1' and op.status!= -1";
		if (org.apache.commons.lang3.StringUtils.isNoneBlank(doctor)){
			sql+=" and op.doctor = '"+doctor+"'";
		}
		if (org.apache.commons.lang3.StringUtils.isNoneBlank(patientIdCard)){
			sql+=" and t.idcard like '%"+patientIdCard+"%'";
		}
		if (org.apache.commons.lang3.StringUtils.isNoneBlank(patientName)){
			sql+=" and t.name like '%"+patientName+"%'";
		}
		//咨询类型
		if(!StringUtils.isEmpty(type)){
			if (type.equalsIgnoreCase("1")){
				sql +=" AND  op.outpatient_type = 1";
			}else if (type.equalsIgnoreCase("2")){
				sql +=" AND op.outpatient_type = 2";
			}else if (type.equalsIgnoreCase("3")){
				sql +=" AND  op.outpatient_type = 3";
			}else {
				sql +=" AND op.outpatient_type in (1,2,3) ";
			}
		}
		sql+=" order by op.create_time  desc ";
		logger.info("findRecordByDoctorSQL==="+sql);
		List<Map<String,Object>>  list = hibenateUtils.createSQLQuery(sql,page,pagesize);
		for (Map<String,Object> map:list){
			if (map.get("idcard")!=null){
				String idcard = map.get("idcard").toString();
				Integer age = IdCardUtil.getAgeForIdcard(idcard);
				String sex = IdCardUtil.getSexForIdcard(idcard);
				map.put("patientAge",age);
				map.put("patientSex",sex);
			}
		}
		return list;
	}
	@Transactional(readOnly = true)
	public Map<String,Object>  findRecordCountByDoctor(String doctor,
														String type, String patientIdCard,String patientName) {
		String[] outpatientType = type.split(",");
		Map map = new HashMap();
		for (int i=0;i<outpatientType.length;i++){
			String  sql = "select DISTINCT t.id as \"id\"," +
					"  t.name as \"name\"," +
					"  t.idcard as \"idcard\"," +
					"  t.mobile as \"mobile\"," +
					"  op.doctor as \"doctor\"" +
					" from wlyy_outpatient op left join  base_patient t " +
					" on (t.id = op.consumer or t.id = op.patient) where t.del ='1' and op.status!= -1";
			if (org.apache.commons.lang3.StringUtils.isNoneBlank(doctor)){
				sql+=" and op.doctor = '"+doctor+"'";
			}
			if (org.apache.commons.lang3.StringUtils.isNoneBlank(patientIdCard)){
				sql+=" and t.idcard like '%"+patientIdCard+"%'";
			}
			if (org.apache.commons.lang3.StringUtils.isNoneBlank(patientName)){
				sql+=" and t.name like '%"+patientName+"%'";
			}
			//咨询类型
			String mapKey = "";
			if(!StringUtils.isEmpty(outpatientType[i])){
				if (outpatientType[i].equalsIgnoreCase("1")){
					sql +=" AND  op.outpatient_type = 1";
					mapKey="fzNum";
				}else if (outpatientType[i].equalsIgnoreCase("2")){
					sql +=" AND op.outpatient_type = 2";
					mapKey="xtNum";
				}else if (outpatientType[i].equalsIgnoreCase("3")){
					sql +=" AND  op.outpatient_type = 3";
					mapKey="zxNum";
				}else {
					sql +=" AND op.outpatient_type in (1,2,3) ";
					mapKey="zxNum";
				}
				logger.info("findRecordCountByDoctor==="+sql);
				List<Map<String,Object>>  list = hibenateUtils.createSQLQuery(sql);
				map.put(mapKey,list==null?0:list.size());
			}
		}
		return map;
	}
}

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

@ -22,7 +22,7 @@ import java.util.List;
public class ImUtil {
	
	@Autowired
	private HttpClientUtil httpClientUtil;
	private HttpClientUtil HttpClientUtil;
	
	@Value("${im.im_list_get}")
	private String im_host;
@ -71,7 +71,25 @@ public class ImUtil {
			this.value = value;
		}
	}
	
	public String sendMDTSocketMessageToDoctor(String targetUserId, String message) {
		String imAddr = im_host + "api/v2/message/doctorSystemMessage";
		JSONObject params = new JSONObject();
		params.put("targetUserId", targetUserId);
		params.put("message", message);
		String response = HttpClientUtil.postBody(imAddr,params);
		return response;
	}
	public String sendPcManageMessageToPc(String clientType, String message) {
		String imAddr = im_host + "api/v2/message/cloudCarePcManageMessage";
		JSONObject params = new JSONObject();
		params.put("clientType", clientType);
		params.put("message", message);
		String response = HttpClientUtil.postBody(imAddr,params);
		return response;
	}
	/**
	 * 发送消息
	 * @param senderId 发送者的code
@ -87,7 +105,7 @@ public class ImUtil {
		params.put("sender_name", receiverId);
		params.put("content_type", contentType);
		params.put("content", content);
		String response = httpClientUtil.postBody(imAddr, params);
		String response = HttpClientUtil.postBody(imAddr, params);
		return response;
	}
	
@ -113,7 +131,7 @@ public class ImUtil {
		if (reply != null) {
			imAddr += ("&reply=" + reply);
		}
		String response = httpClientUtil.get(imAddr, "UTF-8");
		String response = HttpClientUtil.get(imAddr, "UTF-8");
		return response;
	}
	
@ -122,7 +140,7 @@ public class ImUtil {
		JSONObject params = new JSONObject();
		params.put("topic_id", topicId);
		params.put("data", jsonValue);
		httpClientUtil.putBody(imAddr, params);
		HttpClientUtil.putBody(imAddr, params);
	}
	
	/**
@ -150,7 +168,7 @@ public class ImUtil {
		if (reply != null) {
			imAddr += ("&reply=" + reply);
		}
		String response = httpClientUtil.get(imAddr, "UTF-8");
		String response = HttpClientUtil.get(imAddr, "UTF-8");
		return response;
	}
	
@ -175,7 +193,7 @@ public class ImUtil {
		if (reply != null) {
			imAddr += ("&reply=" + reply);
		}
		String response = httpClientUtil.get(imAddr, "UTF-8");
		String response = HttpClientUtil.get(imAddr, "UTF-8");
		return response;
	}
	
@ -210,7 +228,7 @@ public class ImUtil {
		if (endTime != null) {
			imAddr += ("&endTime=" + endTime);
		}
		String response = httpClientUtil.get(imAddr, "UTF-8");
		String response = HttpClientUtil.get(imAddr, "UTF-8");
		return response;
	}
	
@ -243,7 +261,7 @@ public class ImUtil {
		if (endTime != null) {
			imAddr += ("&endTime=" + endTime);
		}
		String response = httpClientUtil.get(imAddr, "UTF-8");
		String response = HttpClientUtil.get(imAddr, "UTF-8");
		return response;
	}
	
@ -374,7 +392,7 @@ public class ImUtil {
		if(!StringUtils.isEmpty(oldUserId)){
			params.put("old_user_id", oldUserId);
		}
		return httpClientUtil.postBody(imAddr, params);
		return HttpClientUtil.postBody(imAddr, params);
	}
	/**
@ -391,7 +409,7 @@ public class ImUtil {
		if(!StringUtils.isEmpty(oldUserId)){
			params.put("old_user_id", oldUserId);
		}
		return httpClientUtil.postBody(imAddr, params);
		return HttpClientUtil.postBody(imAddr, params);
	}
	
	/**
@ -408,7 +426,7 @@ public class ImUtil {
		params.put("session_type", sessionType );
		params.put("message_id", msgId );
		params.put("content", content );
		return httpClientUtil.postBody(imAddr, params);
		return HttpClientUtil.postBody(imAddr, params);
	}
	
	/**
@ -426,7 +444,7 @@ public class ImUtil {
		params.put("end_user", endUser);
		params.put("end_user_name", endUserName);
		params.put("topic_id", topicId);
		String ret = httpClientUtil.postBody(imAddr, params);
		String ret = HttpClientUtil.postBody(imAddr, params);
		JSONObject obj = null;
		try {
			obj = JSON.parseObject(ret);
@ -447,7 +465,7 @@ public class ImUtil {
		String imAddr = im_host + "api/v2/sessions/" + sessionId + "/participants/" + user;
		JSONObject params = new JSONObject();
		params.put("user", user + ":" + 0);
		httpClientUtil.putBody(imAddr, params);
		HttpClientUtil.putBody(imAddr, params);
	}
	
	/**
@ -466,7 +484,7 @@ public class ImUtil {
		params.put("messages", messages.toString());
		params.put("session_id", sessionId);
		params.put("session_type", sessionType);
		String ret = httpClientUtil.postBody(imAddr, params);
		String ret = HttpClientUtil.postBody(imAddr, params);
		JSONObject obj = null;
		try {
			obj = JSON.parseObject(ret);
@ -483,7 +501,7 @@ public class ImUtil {
		Boolean re = false;
		String url = im_host + "api/v2/sessions/isExist?session_id="+sessionId;
		JSONObject params = new JSONObject();
		String ret = httpClientUtil.get(url, "UTF-8");
		String ret = HttpClientUtil.get(url, "UTF-8");
		JSONObject obj = null;
		try {
			obj = JSON.parseObject(ret);
@ -492,7 +510,7 @@ public class ImUtil {
				if (StringUtils.isNoneBlank(sessionStatus)){
					String sessionStatusUrl = im_host + "api/v2/sessions/"+sessionId+"/status?status=0&sessionId="+sessionId;
					JSONObject object = new JSONObject();
					String rs = httpClientUtil.postBody(sessionStatusUrl, object);
					String rs = HttpClientUtil.postBody(sessionStatusUrl, object);
				}
				re = true;
			}
@ -507,14 +525,12 @@ public class ImUtil {
	 */
	public JSONObject createSession(JSONObject participants, String sessionType, String sessionName, String sessionId) {
		String imAddr = im_host + "api/v2/sessions";
		System.out.println(imAddr);
		JSONObject params = new JSONObject();
		params.put("participants", participants.toString());
		params.put("session_name", sessionName);
		params.put("session_type", sessionType);
		params.put("session_id", sessionId);
		System.out.println(params.toString());
		String ret = httpClientUtil.postBody(imAddr, params);
		String ret = HttpClientUtil.postBody(imAddr, params);
		JSONObject obj = null;
		try {
			obj = JSON.parseObject(ret);
@ -551,7 +567,7 @@ public class ImUtil {
				+ "api/v2/sessions/topic/" + topicId + "/messages?topic_id=" + topicId + "&end=" + startMsgId
				+ "&start=" + (endMsgId == null ? "" : endMsgId) + "&page=" + page + "&pagesize=" + pagesize + "&user=" + uid;
		try {
			String ret = httpClientUtil.get(url, "UTF-8");
			String ret = HttpClientUtil.get(url, "UTF-8");
			JSONObject obj = JSON.parseObject(ret);
			if (obj.getInteger("status") == -1) {
				throw new RuntimeException(obj.getString("message"));
@ -567,7 +583,7 @@ public class ImUtil {
	public JSONArray getSessionMessage(String sessionId, String startMsgId, String endMsgId, int page, int pagesize, String uid) {
		String url = im_host + "api/v2/sessions/" + sessionId + "/messages?session_id=" + sessionId + "&user=" + uid + "&start_message_id=" + startMsgId + "&end_message_id=" + endMsgId + "&page=" + page + "&pagesize=" + pagesize;
		try {
			String ret = httpClientUtil.get(url, "UTF-8");
			String ret = HttpClientUtil.get(url, "UTF-8");
			JSONArray obj = JSON.parseArray(ret);
			return obj;
		} catch (Exception e) {
@ -590,7 +606,7 @@ public class ImUtil {
			params.put("user_id", userId);
			params.put("old_user_id", oldUserId);
			params.put("session_id", sessionId);
			String ret = httpClientUtil.postBody(url, params);
			String ret = HttpClientUtil.postBody(url, params);
			JSONObject obj = JSON.parseObject(ret);
			if (obj.getInteger("status") == -1) {
				throw new RuntimeException("人员更换失败!");
@ -611,7 +627,7 @@ public class ImUtil {
	 */
	public JSONObject deleteParticipants(String sessionId,String participants){
		String url  = im_host+"api/v2/sessions/"+sessionId+"/participants/"+participants;
		String rs = httpClientUtil.doDelete(url,null,null);
		String rs = HttpClientUtil.doDelete(url,null,null);
		JSONObject obj = JSONObject.parseObject(rs);
		if (obj.getInteger("status")==-1){
			throw new RuntimeException("删除会话人员失败!");
@ -630,7 +646,7 @@ public class ImUtil {
	public JSONObject getTopic(String topicId) throws Exception {
		String url = im_host + "api/v2/sessions/topics/" + topicId + "?topic_id=" + topicId;
		try {
			String ret = httpClientUtil.get(url, "utf-8");
			String ret = HttpClientUtil.get(url, "utf-8");
			JSONObject obj = JSON.parseObject(ret);
			if (obj.getInteger("status") == -1) {
				throw new RuntimeException("获取议题失败!");
@ -652,7 +668,7 @@ public class ImUtil {
	public JSONArray getParticipants(String sessionId) {
		String url = im_host + "api/v2/sessions/" + sessionId + "/participants?session_id=" + sessionId;
		try {
			String ret = httpClientUtil.get(url, "utf-8");
			String ret = HttpClientUtil.get(url, "utf-8");
			return JSON.parseArray(ret);
		} catch (Exception e) {
			throw new RuntimeException("获取会话成员!sessionId =" + sessionId);
@ -669,7 +685,7 @@ public class ImUtil {
	public JSONArray getSessions(String sessionId) {
		String url = im_host + "api/v2/sessions/" + sessionId + "/participants?session_id=" + sessionId;
		try {
			String ret = httpClientUtil.get(url, "utf-8");
			String ret = HttpClientUtil.get(url, "utf-8");
			return JSON.parseArray(ret);
		} catch (Exception e) {
			throw new RuntimeException("获取议题失败!");
@ -679,7 +695,7 @@ public class ImUtil {
	public JSONObject cleanMessageToRedis(String sessionId){
		String url = im_host + "api/v2/message/dataMessage?sessionId="+sessionId;
		try {
			String ret = httpClientUtil.get(url,"utf-8");
			String ret = HttpClientUtil.get(url,"utf-8");
			return JSON.parseObject(ret);
		} catch (Exception e) {
			throw new RuntimeException("操作失败!");
@ -689,7 +705,7 @@ public class ImUtil {
	public JSONObject cleanMessageLastFetchTime(String sessionId,String userId){
		String url = im_host + "api/v2/message/cleanMessageLastFetchTimeToRedis?sessionId="+sessionId+"&userId="+userId;
		try {
			String ret = httpClientUtil.get(url,"utf-8");
			String ret = HttpClientUtil.get(url,"utf-8");
			return JSON.parseObject(ret);
		} catch (Exception e) {
			throw new RuntimeException("操作失败!");
@ -706,7 +722,7 @@ public class ImUtil {
	public JSONObject getSingleSessionInfo(String sessionId,String userId){
		String url = im_host + "api/v2/sessions/" + sessionId + "/session?user_id=" + userId;
		try {
			String ret = httpClientUtil.get(url,"utf-8");
			String ret = HttpClientUtil.get(url,"utf-8");
			return JSON.parseObject(ret);
		} catch (Exception e) {
			throw new RuntimeException("操作失败!");
@ -728,7 +744,7 @@ public class ImUtil {
		params.add(new BasicNameValuePair("to", to));
		params.add(new BasicNameValuePair("contentType", contentType));
		params.add(new BasicNameValuePair("content", content));
		String response = httpClientUtil.post(imAddr, params, "UTF-8");
		String response = HttpClientUtil.post(imAddr, params, "UTF-8");
		return response;
	}
	
@ -748,7 +764,12 @@ public class ImUtil {
	public static final String SESSION_TYPE_GUIDANCE_ASSISTANT = "18";//导诊助手
	public static final String SESSION_STATUS_PROCEEDINGS = "0";
	public static final String SESSION_STATUS_END = "1";
	
	public static final String SESSION_TYPE_EMERGENCY_ASSISTANCE = "20";//紧急救助
	public static final String SESSION_TYPE_DOOR_COACH = "21";//上门辅导(上门预约)
	public static final String SESSION_TYPE_SECURITY_WARN = "22";//安防咨询
	public static final String SESSION_TYPE_ONLINE = "23";//新生儿在线咨询
	public static final String SESSION_TYPE_ONLINEAged = "24";//老人在线咨询
	public static final String CONTENT_TYPE_TEXT = "1";
	
	
@ -761,7 +782,7 @@ public class ImUtil {
	 */
	public Integer sessionCountByType(String userid,Integer type,Integer status){
		String url = im_host + "api/v2/sessions/sessionCountByType?user_id="+userid+"&type="+type+"&status="+status;
		String ret = httpClientUtil.get(url,"utf-8");
		String ret = HttpClientUtil.get(url,"utf-8");
		JSONObject obj = JSON.parseObject(ret);
		if(obj.getInteger("status") ==200){
			return obj.getInteger("count");
@ -769,7 +790,19 @@ public class ImUtil {
			return 0;
		}
	}
	
	public Integer SessionsUnreadMessageCountByUserId(String userid){
		String url = im_host + "api/v2/sessions/unread_message_count?user_id="+userid;
//		String url = "http://ehr.yihu.com/api/v2/sessions/unread_message_count?user_id="+userid;
		String ret = HttpClientUtil.get(url,"utf-8");
		JSONObject obj = JSON.parseObject(ret);
//		if(obj.getInteger("count") ==200){
		return obj.getInteger("count");
//		}else{
//			return 0;
//		}
	}
	/**
	 *获取所有会话未读消息数。
	 * @param userid
@ -778,7 +811,7 @@ public class ImUtil {
	 */
	public Integer SessionsUnreadMessageCount(String userid,String type){
		String url = im_host + "api/v2/sessions/unread_message_count?user_id="+userid+"&type="+type;
		String ret = httpClientUtil.get(url,"utf-8");
		String ret = HttpClientUtil.get(url,"utf-8");
		JSONObject obj = JSON.parseObject(ret);
//		if(obj.getInteger("count") ==200){
		return obj.getInteger("count");
@ -786,6 +819,23 @@ public class ImUtil {
//			return 0;
//		}
	}
	/**
	 *获取某个会话某个对象的未读消息数。
	 * @param
	 * @return
	 */
	public Integer UserSessionsUnreadMessageCount(String session,String userid){
		String url = im_host + "api/v2/sessions/"+session+"/unread_message_count?user_id="+userid;
		String ret = HttpClientUtil.get(url,"utf-8");
		JSONObject obj = JSON.parseObject(ret);
//		if(obj.getInteger("count") ==200){
		return obj.getInteger("count");
//		}else{
//			return 0;
//		}
	}
	/**
	 * 获取会话未读消息数量
	 * @param sessionId

+ 22 - 1
business/sms-service/pom.xml

@ -45,6 +45,27 @@
            <groupId>com.yihu.jw</groupId>
            <artifactId>common-util</artifactId>
        </dependency>
        <!--   poi xml导入导出工具 end -->
        <!-- Redis  -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
        </dependency>
        <!-- Redis  -->
        <!-- 腾讯云短信  -->
        <dependency>
            <groupId>com.tencentcloudapi</groupId>
            <artifactId>tencentcloud-sdk-java</artifactId>
            <version>3.1.272</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-redis</artifactId>
            <version>RELEASE</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>
</project>

+ 170 - 0
business/sms-service/src/main/java/com/yihu/jw/sms/service/TXYSmsService.java

@ -0,0 +1,170 @@
package com.yihu.jw.sms.service;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.tencentcloudapi.common.Credential;
import com.tencentcloudapi.common.exception.TencentCloudSDKException;
import com.tencentcloudapi.common.profile.ClientProfile;
import com.tencentcloudapi.common.profile.HttpProfile;
import com.tencentcloudapi.sms.v20210111.SmsClient;
import com.tencentcloudapi.sms.v20210111.models.SendSmsRequest;
import com.tencentcloudapi.sms.v20210111.models.SendSmsResponse;
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.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service;
import java.util.List;
/**
 * Created with IntelliJ IDEA.
 *
 * @Author: yeshijie
 * @Date: 2021/5/24
 * @Description:
 */
@Service
public class TXYSmsService {
    private Logger logger= LoggerFactory.getLogger(ZBSmsService.class);
    @Autowired
    private HospitalSysDictDao sysDictDao;
    @Autowired
    private StringRedisTemplate redisTemplate;
    private String key = "hz_yxyzh_wx_sms";
    private String SecretId;
    private String SecretKey;
    private String signName;
    private String smsSdkAppId;
    private String VerificationCode;
    /**
     * 初始化接口参数
     */
    private void init(){
        if(redisTemplate.hasKey(key+ ":SecretId")){
            SecretId = redisTemplate.opsForValue().get(key + ":SecretId");
            SecretKey = redisTemplate.opsForValue().get(key + ":SecretKey");
            signName = redisTemplate.opsForValue().get(key + ":signName");
            smsSdkAppId = redisTemplate.opsForValue().get(key + ":smsSdkAppId");
            VerificationCode = redisTemplate.opsForValue().get(key + ":VerificationCode");
            return;
        }
        List<WlyyHospitalSysDictDO> dictDOList = sysDictDao.findByDictName(key);
        for (WlyyHospitalSysDictDO wlyyHospitalSysDictDO:dictDOList){
            if (wlyyHospitalSysDictDO.getDictCode().equalsIgnoreCase("SecretId")){
                SecretId=wlyyHospitalSysDictDO.getDictValue();
                redisTemplate.opsForValue().set(key + ":SecretId",SecretId);
            }else if (wlyyHospitalSysDictDO.getDictCode().equalsIgnoreCase("SecretKey")){
                SecretKey=wlyyHospitalSysDictDO.getDictValue();
                redisTemplate.opsForValue().set(key + ":SecretKey",SecretKey);
            }else if (wlyyHospitalSysDictDO.getDictCode().equalsIgnoreCase("signName")){
                signName=wlyyHospitalSysDictDO.getDictValue();
                redisTemplate.opsForValue().set(key + ":signName",signName);
            }else if (wlyyHospitalSysDictDO.getDictCode().equalsIgnoreCase("smsSdkAppId")){
                smsSdkAppId=wlyyHospitalSysDictDO.getDictValue();
                redisTemplate.opsForValue().set(key + ":smsSdkAppId",smsSdkAppId);
            }else if (wlyyHospitalSysDictDO.getDictCode().equalsIgnoreCase("VerificationCode")){
                VerificationCode=wlyyHospitalSysDictDO.getDictValue();
                redisTemplate.opsForValue().set(key + ":VerificationCode",VerificationCode);
            }
        }
    }
    public String sendMessage(String mobile,String code){
        try{
            init();
            Credential cred = new Credential(SecretId, SecretKey);
            HttpProfile httpProfile = new HttpProfile();
            httpProfile.setEndpoint("sms.tencentcloudapi.com");
            ClientProfile clientProfile = new ClientProfile();
            clientProfile.setHttpProfile(httpProfile);
            SmsClient client = new SmsClient(cred, "ap-nanjing", clientProfile);
            SendSmsRequest req = new SendSmsRequest();
            String[] phoneNumberSet1 = {"+86"+mobile};
            req.setPhoneNumberSet(phoneNumberSet1);
            req.setSmsSdkAppId(smsSdkAppId);
            req.setSignName(signName);
            req.setTemplateId(VerificationCode);
            String[] templateParamSet1 = {code};
            req.setTemplateParamSet(templateParamSet1);
            SendSmsResponse resp = client.SendSms(req);
            JSONObject json = JSON.parseObject(SendSmsResponse.toJsonString(resp));
            String res = json.getJSONArray("SendStatusSet").getJSONObject(0).getString("Code");
            if(!"Ok".equals(res)){
                logger.info("腾讯短信发送失败:"+SendSmsResponse.toJsonString(resp));
            }
            return res;
        } catch (TencentCloudSDKException e) {
            e.printStackTrace();
            logger.info("腾讯短信报错:"+e.toString());
        }
        return "error";
    }
    /**
     *
     * @param mobile
     * @param jsonObj {"templateCode":"974603","templateParamArr":["param1","param2","param3"]}
     * @return   模板id暂时写死
     */
    public String sendMessageJson(String mobile,JSONObject jsonObj){
        try {
            init();
            Credential cred = new Credential(SecretId, SecretKey);
            String templateId = jsonObj.getString("templateCode");
            JSONArray templateParamArr = jsonObj.getJSONArray("templateParamArr");
            String[] templateParamSet1 = templateParamArr.toArray(new String[0]);
            HttpProfile httpProfile = new HttpProfile();
            httpProfile.setEndpoint("sms.tencentcloudapi.com");
            ClientProfile clientProfile = new ClientProfile();
            clientProfile.setHttpProfile(httpProfile);
            SmsClient client = new SmsClient(cred, "ap-nanjing", clientProfile);
            SendSmsRequest req = new SendSmsRequest();
            String[] phoneNumberSet1 = {"+86"+mobile};
            req.setPhoneNumberSet(phoneNumberSet1);
            req.setSmsSdkAppId(smsSdkAppId);
            req.setSignName(signName);
            req.setTemplateId(templateId);
            if(templateParamSet1.length>0){
                req.setTemplateParamSet(templateParamSet1);
            }
            SendSmsResponse resp = client.SendSms(req);
            JSONObject json = JSON.parseObject(SendSmsResponse.toJsonString(resp));
            String res = json.getJSONArray("SendStatusSet").getJSONObject(0).getString("Code");
            if(!"Ok".equals(res)){
                logger.info("腾讯短信发送失败:"+SendSmsResponse.toJsonString(resp));
            }
            return res;
        }catch (TencentCloudSDKException e){
            e.printStackTrace();
            logger.info("腾讯短信报错:"+e.toString());
        }
        return "error";
    }
}

+ 898 - 4
common/common-entity/sql记录

@ -84,12 +84,10 @@ CREATE TABLE `wlyy_archive` (
  `sick_name` varchar(50) DEFAULT NULL COMMENT '姓名',
  `archive_operator_name` varchar(50) DEFAULT NULL COMMENT '建档人姓名',
  `doctor_code` varchar(50) DEFAULT NULL COMMENT '医生code',
  `archive_status` int(11) DEFAULT NULL COMMENT '档案状态【1.未管理 2.死亡 3.正常 4.高危】【必填】',
  `archive_time` datetime DEFAULT NULL COMMENT '建档时间',
  `sign_status` tinyint(1) DEFAULT NULL COMMENT '签约状态【0未签约,1已签约】',
  `idcard` varchar(32) DEFAULT NULL COMMENT '身份证',
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE KEY `index_1` (`patient`,`doctor_code`)
  `create_time` datetime DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='建档表';
CREATE TABLE `base_capacity_assessment_record` (
@ -193,3 +191,899 @@ alter table base_patient add `national` int(11) DEFAULT NULL COMMENT '民族';
alter table base_patient add `blood` int(11) DEFAULT NULL COMMENT '血型【1.A型 2.B型 3.O型 4.AB型 5.不详】';
alter table base_patient add `national_name` varchar(20) DEFAULT NULL COMMENT '民族名称';
-- 2021-03-25 ysj 医养云照护相关
alter table base_patient add `archive_status` tinyint(1) DEFAULT NULL COMMENT '档案状态【1.未管理 2.死亡 3.正常 4.高危】【必填】';
alter table base_patient add `medicare_number` varchar(50) DEFAULT NULL COMMENT '医疗保险号';
alter table base_patient add `ssc` varchar(50) DEFAULT NULL COMMENT '社保卡号';
alter table base_patient add `archive_type` tinyint(1) DEFAULT NULL COMMENT '档案类型 1老人 2新生儿';
-- 2021-04-07 ysj
alter table base_doctor add `level` tinyint(4) DEFAULT NULL COMMENT '类型 1社区医生,2助老员';
-- 2021-04-08 lb
CREATE TABLE `base_patient_bed_apply` (
  `id` varchar(50) NOT NULL,
  `patient` varchar(50) NOT NULL,
  `patient_name` varchar(50) DEFAULT NULL,
  `idcard` varchar(50) DEFAULT NULL COMMENT '身份证',
   org_code varchar(50) DEFAULT NULL COMMENT '申请机构code',
   org_name varchar(50) DEFAULT NULL COMMENT '申请机构名称',
   status tinyint(4) DEFAULT '1' COMMENT '状态 -1取消 0已完成 1未处理 2未评估',
  `create_time` timestamp NULL DEFAULT NULL ,
  `create_user` varchar(50) DEFAULT NULL COMMENT '创建者id',
  `create_user_name` varchar(50) DEFAULT NULL COMMENT '创建者称名',
  `update_time` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
  `update_user` varchar(50) DEFAULT NULL,
  `update_user_name` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='居民床位申请';
CREATE TABLE `base_capacity_assessment_baseinfo` (
  `id` varchar(50) NOT NULL,
  `assessment_year` varchar(4) DEFAULT NULL COMMENT '评估年份',
  `status` tinyint(5) DEFAULT '1' COMMENT '状态 0失效 1有效 ',
  `patient` varchar(50) DEFAULT NULL,
  `name` varchar(50) DEFAULT NULL,
  `sex` tinyint(2) DEFAULT NULL,
  `age` varchar(5) DEFAULT NULL,
  `nation` varchar(20) DEFAULT NULL COMMENT '名族',
  `nation_name` varchar(50) DEFAULT NULL COMMENT '名族名称',
  `religion` varchar(20) DEFAULT NULL COMMENT '宗教信仰 0无;1有',
  `idcard` varchar(20) DEFAULT NULL,
  `domicile` varchar(20) DEFAULT NULL COMMENT '户籍 0本地户口;1外地户口',
  `marriage` varchar(20) DEFAULT NULL COMMENT '婚姻状况 10.未婚 20.已婚 30.丧偶 40.离婚 90.未说明的婚姻状况',
  `marriage_remark` varchar(255) DEFAULT NULL COMMENT '婚姻状况 备注',
  `education` varchar(20) DEFAULT NULL COMMENT '文化程度 0文盲及半文盲;1小学;2初中;3高中/技校/中专;4大学专科及以上;5不详',
  `income_type` varchar(20) DEFAULT NULL COMMENT '主要经济来源 0退休金/养老金;1子女补贴;2亲友资助;3其他补贴',
  `pension_flag` varchar(20) DEFAULT NULL COMMENT '是否有养老金收入 0无 1有',
  `pension_count` varchar(20) DEFAULT NULL COMMENT '养老金收入 元/月',
  `family_type` varchar(20) DEFAULT NULL COMMENT '是否为经济困难家庭 0否 1特困 2低保 3低保边缘 ',
  `disability_certificate` varchar(20) DEFAULT NULL COMMENT '是否为持证残疾人 0否 1是 ',
  `medical_insurance` varchar(20) DEFAULT NULL COMMENT '是否购买了商业健康(医疗)保险 0否 1是 ',
  `living_type` varchar(20) DEFAULT NULL COMMENT '现住场所:1自有产权房、私房等;2各类租赁房等;3养老院或类似机构;4护理院或类似机构;5医院或类似机构',
  `living_together` varchar(20) DEFAULT NULL COMMENT '同居者类型 0独居;1与配偶/伴侣居住;2与子女居住;3与孙辈居住;4与父母居住;5与兄弟姐妹居住;6与其他亲友居住;7其他',
  `living_together_remark` varchar(255) DEFAULT NULL COMMENT '同居者备注',
  `dementia_flag` varchar(20) DEFAULT NULL COMMENT '痴呆症 0无 1有',
  `mental_illness` varchar(20) DEFAULT NULL COMMENT '精神疾病(可多选)0无;1精神分裂症;2双相情感障碍;3偏执性精神障碍;4分裂情感性障碍;5癫痫所致精神障碍;6精神发育迟滞伴发精神障碍',
  `disease_type` varchar(20) DEFAULT NULL COMMENT '患病类型可多选;0无 1肿瘤(晚期)2严重心律失常3压疮4慢性心力衰竭(心功能III-IV级)5慢性肾功能衰竭(尿毒症期)6多器官功能衰竭7蛋白质能量营养不足(重度)8慢性阻塞性肺疾病(肺心病心功能III-IV级)9呼吸衰竭10脑血管意外合并吞咽障碍11其他',
  `disease_remark` varchar(255) DEFAULT NULL COMMENT '其他疾病',
  `fall_lately` varchar(20) DEFAULT NULL COMMENT '近30天跌倒 0无;1一次;2两次;3三次及以上',
  `lost_lately` varchar(20) DEFAULT NULL COMMENT '近30天走失 0无;1一次;2两次;3三次及以上',
  `choking_lately` varchar(20) DEFAULT NULL COMMENT '近30天噎食 0无;1一次;2两次;3三次及以上',
  `suicide_lately` varchar(20) DEFAULT NULL COMMENT '近30天自杀 0无;1一次;2两次;3三次及以上',
  `remark_lately` varchar(255) DEFAULT NULL COMMENT '近30天意外 其他 0无;1一次;2两次;3三次及以上',
  `medical_services` varchar(255) DEFAULT NULL COMMENT '近7天是否接受过医疗护理服务 0无1有',
  `domicile_county` varchar(255) DEFAULT NULL COMMENT '户籍  区(县、市)',
  `domicile_county_name` varchar(255) DEFAULT NULL COMMENT '户籍  区(县、市)',
  `domicile_street` varchar(255) DEFAULT NULL COMMENT '户籍  街(镇)',
  `domicile_street_name` varchar(255) DEFAULT NULL COMMENT '户籍  街(镇)',
  `domicile_org` varchar(255) DEFAULT NULL COMMENT '户籍 社(村)',
  `domicile_org_name` varchar(255) DEFAULT NULL COMMENT '户籍 社(村)',
  `domicile_building` varchar(255) DEFAULT NULL COMMENT '户籍 xx幢',
  `domicile_room` varchar(255) DEFAULT NULL COMMENT '户籍 xx室',
  `live_county` varchar(255) DEFAULT NULL COMMENT '居住地  区(县、市)',
  `live_county_name` varchar(255) DEFAULT NULL COMMENT '居住地名称  区(县、市)',
  `live_street` varchar(255) DEFAULT NULL COMMENT '居住地  街(镇)',
  `live_street_name` varchar(255) DEFAULT NULL COMMENT '居住地名称  街(镇)',
  `live_org` varchar(255) DEFAULT NULL COMMENT '居住地 社(村)',
  `live_org_name` varchar(255) DEFAULT NULL COMMENT '居住地名称 社(村)',
  `live_building` varchar(255) DEFAULT NULL COMMENT '居住地 xx幢',
  `live_room` varchar(255) DEFAULT NULL COMMENT '居住地 xx室',
  `postcode` varchar(50) DEFAULT NULL COMMENT '邮编',
  `residence_phone` varchar(50) DEFAULT NULL COMMENT '住宅电话',
  `patient_phone` varchar(50) DEFAULT NULL COMMENT '手机',
  `proxy_name` varchar(50) DEFAULT NULL COMMENT '代理人姓名',
  `applicant_relation` varchar(50) DEFAULT NULL COMMENT '与申请人关系',
  `proxy_address` varchar(255) DEFAULT NULL COMMENT '代理人地址',
  `proxy_telephone` varchar(50) DEFAULT NULL COMMENT '代理人电话',
  `proxy_phone` varchar(50) DEFAULT NULL COMMENT '代理人手机',
  `applicant_sign` varchar(255) DEFAULT NULL COMMENT '申请人(代理人) 签字结果图片url',
  `applicant_date` varchar(50) DEFAULT NULL COMMENT '申请日期',
  `service_type` varchar(50) DEFAULT NULL COMMENT '养老服务形式 0居家养老 1机构养老',
  `acceptable_services_life1` varchar(50) DEFAULT NULL COMMENT '直接生活照顾  1穿衣;2修饰;3口腔清洁;4皮肤清洁;5喂食服务;6排泄照料 ',
  `acceptable_services_life2` varchar(50) DEFAULT NULL COMMENT '间接生活照顾  1居室清洁;2更换洗涤;3上门维修;4定期探访;5膳食服务;6文化教育;7娱乐休闲;8室外休闲(户外);9紧急呼援;10法律援助;11转介服务;12咨询服务',
  `acceptable_services_mental` varchar(50) DEFAULT NULL COMMENT '精神心理照顾 1危机干预;2沟通;3精神支持;4心理疏导;5心理咨询',
  `acceptable_services_rehabilitation` varchar(255) DEFAULT NULL COMMENT '康复护理照顾 1定期翻身;2压疮预;3防活动肢体;4肢体保健;5康复活动;6预防保健;7健康咨询;8健康管理;9健康教育;10临终关怀 ',
  `acceptable_services_other` varchar(255) DEFAULT NULL COMMENT '其他',
  `create_time` datetime DEFAULT NULL,
  `medical_insurance_type` varchar(20) DEFAULT NULL COMMENT '医保类别 1职工基本医疗保险 2城乡居民基本医疗保险 3其他医疗保障 4无任何保障',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='能力评估-基本信息表';
CREATE TABLE `base_capacity_assessment_living_ability` (
  `id` varchar(50) NOT NULL,
  `assessment_year` varchar(4) DEFAULT NULL COMMENT '评估年份',
  `status` tinyint(5) DEFAULT '1' COMMENT '状态 0失效 1有效 ',
  `patient` varchar(50) DEFAULT NULL,
  `eating_ability_score` varchar(50) DEFAULT NULL COMMENT '进食能力得分 10可独立进食;5需部分帮助;0需要极大帮助或完全依赖他人',
  `shower_ability_score` varchar(50) DEFAULT NULL COMMENT '洗澡能力得分 5可独立完成;0需要帮助',
  `washing_ability_score` varchar(50) DEFAULT NULL COMMENT '洗漱能力得分 5可独立完成;0需要帮助',
  `dressing_ability_score` varchar(50) DEFAULT NULL COMMENT '穿衣能力得分 10可独立完成;5需要部分帮助;0需要极大帮助或完全依赖他人',
  `excretion_ability_score` varchar(50) DEFAULT NULL COMMENT '排便控制能力得分 10可自主控制;5偶尔失控(每周小于一次,或需要他人提示);0完全失控',
  `urination_ability_score` varchar(50) DEFAULT NULL COMMENT '排尿控制能力得分 10可自主控制;5偶尔失控(每周小于一次,或需要他人提示);0完全失控或留置导尿管',
  `toilet_ability_score` varchar(50) DEFAULT NULL COMMENT '如厕能力得分 10可独立完成;5需部分帮助;0需要极大帮助或完全依赖他人',
  `transfer_bed_ability_score` varchar(50) DEFAULT NULL COMMENT '床椅转移能力得分 15可独立完成10需要部分帮忙5需要极大帮忙0完全依赖他人',
  `walking_ability_score` varchar(50) DEFAULT NULL COMMENT '平地行走能力得分 15可独立行走45m;10需要部分帮助;5需要极大帮助;0完全依赖他人',
  `down_stairs_ability_score` varchar(50) DEFAULT NULL COMMENT '上下楼梯能力得分10可独立上下楼梯(连续10~15个台阶);5需要部分帮忙0需要极大帮助或完全依赖他人',
  `total_score` varchar(50) DEFAULT NULL COMMENT '日常生活能力总分 上述得分和 总分100 ',
  `ability_grade` varchar(50) DEFAULT NULL COMMENT '能力等级:0能力完好(100);1轻度受损(65-95);2中度受损(45-60);3重度受损(≤40)',
  `create_time` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='能力评估-日常生活能力评估表';
CREATE TABLE `base_capacity_assessment_cognitive_ability` (
  `id` varchar(50) NOT NULL,
  `assessment_year` varchar(4) DEFAULT NULL COMMENT '评估年份',
  `status` tinyint(5) DEFAULT '1' COMMENT '状态 0失效 1有效 ',
  `patient` varchar(50) DEFAULT NULL,
  `question1` varchar(4) DEFAULT NULL COMMENT '问题一得分 总分3分',
  `question2` varchar(4) DEFAULT NULL COMMENT '问题二得分 总分5分',
  `question3` varchar(4) DEFAULT NULL COMMENT '问题三得分 总分5分',
  `question4` varchar(4) DEFAULT NULL COMMENT '问题四得分 总分3分',
  `total_score` varchar(50) DEFAULT NULL COMMENT '认知能力 上述得分和  ',
  `ability_grade` varchar(50) DEFAULT NULL COMMENT '能力等级:0能力完好(16);1轻度受损(13-15);2中度受损(9-12);3重度受损(≤8)',
  `create_time` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='能力评估-认知能力表';
CREATE TABLE `base_capacity_assessment_social_ability` (
  `id` varchar(50) NOT NULL,
  `assessment_year` varchar(4) DEFAULT NULL COMMENT '评估年份',
  `status` tinyint(5) DEFAULT '1' COMMENT '状态 0失效 1有效 ',
  `patient` varchar(50) DEFAULT NULL,
  `aggress_score` varchar(4) DEFAULT NULL COMMENT '攻击行为得分 总分3分',
  `depressed_score` varchar(4) DEFAULT NULL COMMENT '抑郁状态得分 总分5分',
  `consciousness_score` varchar(4) DEFAULT NULL COMMENT '意识水平得分 总分5分',
  `communicate_score` varchar(4) DEFAULT NULL COMMENT '沟通交流得分 总分3分',
  `social_skills_score` varchar(50) DEFAULT NULL COMMENT '社交能力得分   ',
  `vision_score` varchar(50) DEFAULT NULL COMMENT '视力功能得分   ',
  `hearing_score` varchar(50) DEFAULT NULL COMMENT '听力能力得分   ',
  `total_score` varchar(50) DEFAULT NULL COMMENT ' 精神状态与社会交流能力总分 上述得分和 总分22',
  `ability_grade` varchar(50) DEFAULT NULL COMMENT '能力等级:0能力完好(22);1轻度受损(15-21);2中度受损(7-14);3重度受损(≤6)',
  `create_time` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='能力评估-精神状态与社会交流能力表';
CREATE TABLE `base_security_monitoring_order_cancel_log` (
  `id` varchar(50) NOT NULL,
  `order_id` varchar(50) NOT NULL COMMENT '工单id',
  `patient` varchar(50) NOT NULL COMMENT '居民code',
  `cancel_type` int(1) NOT NULL COMMENT '取消类型:1-调度员取消,2-居民取消 3 医生取消',
  `cancel_reason` varchar(50) DEFAULT NULL COMMENT '取消理由',
  `time` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '取消时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='安防工单取消记录';
CREATE TABLE `base_semoni_patient_confirm_log` (
  `id` varchar(50) NOT NULL,
  `order_id` varchar(50) NOT NULL COMMENT '工单id',
  `patient` varchar(50) NOT NULL COMMENT '居民',
  `patient_name` varchar(50) NOT NULL COMMENT '居民姓名',
  `type` int(1) NOT NULL COMMENT '确认操作类型:1-确认基础信息无误或变更,2-确认医生变更服务信息,3-同意工单转接  4同意取消工单',
  `description` varchar(200) DEFAULT NULL COMMENT '操作描述',
  `create_user` varchar(50) DEFAULT NULL COMMENT '创建者id',
  `create_user_name` varchar(50) DEFAULT NULL COMMENT '创建者称名',
  `create_time` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '转接时间',
  `update_time` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
  `update_user` varchar(50) DEFAULT NULL,
  `update_user_name` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='安防服务工单居民确认操作日志记录';
CREATE TABLE `base_semoni_doctor_status` (
  `id` varchar(50) NOT NULL,
  `doctor` varchar(50) NOT NULL COMMENT '医生code',
  `status` int(1) NOT NULL DEFAULT '1' COMMENT '医生状态:1-待派单,2-待接单,3-待服务,4-服务中,5-停止接单',
  `create_user` varchar(50) DEFAULT NULL COMMENT '创建者id',
  `create_user_name` varchar(50) DEFAULT NULL COMMENT '创建者称名',
  `create_time` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '转接时间',
  `update_time` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
  `update_user` varchar(50) DEFAULT NULL,
  `update_user_name` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='医生安防服务工单状态情况';
alter TABLE base.base_security_monitoring_order add COLUMN doctor_confirm_finish_img VARCHAR(3000) DEFAULT NULL COMMENT '医生确认完成照片';
alter TABLE base.base_security_monitoring_order add COLUMN doctor_confirm_finish_time timestamp NULL DEFAULT NULL COMMENT '医生确认完成时间';
-- 2021-04-09 中山消息推送
alter table wlyy_outpatient ADD last_remind_time timestamp ;
alter table wlyy_outpatient ADD remind_doctor  varchar(50) ;
-- 2021-04-10 lb
ALTER table base.base_patient_bed_apply  MODIFY `patient` varchar(50) DEFAULT NULL;
-- 2021-04-12 lb
CREATE TABLE `base_emergency_assistance_order` (
  `id` varchar(50) NOT NULL DEFAULT '',
  `patient` varchar(50) DEFAULT NULL COMMENT '发起救助的居民id',
  `patient_name` varchar(10) DEFAULT NULL COMMENT '发起救助的居民姓名',
  `patient_phone` varchar(15) DEFAULT NULL COMMENT '救助居民电话',
  `patient_idcard` varchar(200) DEFAULT NULL COMMENT '救助居民身份证',
  `org_code` varchar(100) DEFAULT NULL COMMENT '救助居民所在机构code',
  `org_name` varchar(100) DEFAULT NULL COMMENT '救助居民所在机构名称',
  `serve_address` varchar(100) DEFAULT NULL COMMENT '居民当前定位地址',
  `serve_lat` varchar(100) DEFAULT NULL COMMENT '居民当前定位地址纬度',
  `serve_lon` varchar(100) DEFAULT NULL COMMENT '居民当前定位地址经度',
  `session_id` varchar(150) DEFAULT NULL COMMENT '会话id',
  `doctor` varchar(50) DEFAULT NULL COMMENT '医生code',
  `doctor_name` varchar(50) DEFAULT NULL COMMENT '医生name',
  `doctor_address` varchar(100) DEFAULT NULL COMMENT '医生当前定位地址',
  `doctor_lat` varchar(100) DEFAULT NULL COMMENT '医生当定位地址纬度',
  `doctor_lon` varchar(100) DEFAULT NULL COMMENT '医生当前定位地址经度',
  `conclusion` varchar(100) DEFAULT NULL COMMENT '服务完成笔记',
  `conclusion_img` varchar(100) DEFAULT NULL COMMENT '服务相关附件',
  `status` tinyint(4) DEFAULT '1' COMMENT '工单状态 -1已取消 0已完成 1申请中',
  `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间',
  `create_user` varchar(50) DEFAULT NULL COMMENT '创建者id',
  `create_user_name` varchar(50) DEFAULT NULL COMMENT '创建者名称',
  `update_time` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
  `update_user` varchar(50) DEFAULT NULL,
  `update_user_name` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='居民紧急救助服务工单';
-- 2021-04-13 lb
ALTER table base_doctor ADD COLUMN `doctor_lat` varchar(100) DEFAULT NULL COMMENT '医生当前定位地址纬度';
ALTER table base_doctor ADD COLUMN `doctor_lon` varchar(100) DEFAULT NULL COMMENT '医生当前定位地址经度';
alter TABLE base_emergency_assistance_order add COLUMN complete_time timestamp NULL DEFAULT NULL COMMENT '医生确认完成时间';
-- 2021-04-19 lb
ALTER table base.base_doctor add COLUMN `doctor_locate_address` varchar(100) DEFAULT NULL COMMENT '医生当前定位地址';
ALTER table base.base_emergency_assistance_order add COLUMN `team_code` varchar(100) DEFAULT NULL COMMENT '服务团队';
--2021-04-23
ALTER table base.base_emergency_assistance_order modify COLUMN  `conclusion_img` varchar(1000) DEFAULT NULL COMMENT '服务相关附件';
-- 2021-04-26
ALTER table base.base_emergency_assistance_order add COLUMN `proxy_patient` varchar(50) DEFAULT NULL COMMENT '代理发起工单的居民code,替父母,孩子等发起工单';
ALTER table base.base_emergency_assistance_order add COLUMN `proxy_patient_name` varchar(10) DEFAULT NULL COMMENT '代理发起工单的居民code,替父母,孩子等发起工单';
ALTER table base.base_emergency_assistance_order add COLUMN  `proxy_patient_phone` varchar(15) DEFAULT NULL COMMENT '代理发起工单的居民联系电话';
ALTER table base.base_emergency_assistance_order add COLUMN   `type` tinyint(2) DEFAULT '1' COMMENT '发起类型(1本人发起 2家人待预约 3医生代预约)';
-- 2021-04-20 wj
alter table base_doctor add doctor_level tinyint(4) DEFAULT NULL COMMENT '类型 1社区医生,2助老员';
-- 2021-04-29 wj
alter table base_patient ADD disease varchar(50) ;
alter table patient_medicare_card ADD medicare_number varchar(50) ;
-- 2021-05-07 ysj
alter table base_patient_family_member add is_contacts tinyint(1) DEFAULT NULL COMMENT '是否是一键联系人';
CREATE TABLE `base_capacity_doctor` (
  `id` varchar(50) NOT NULL,
  `capacity_id` varchar(50) DEFAULT NULL COMMENT '能力评估记录id',
  `doctor_id` varchar(50) DEFAULT NULL COMMENT '医生id',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='能力评估医生关联表';
CREATE TABLE `base_patient_contacts_org` (
  `id` varchar(50) NOT NULL,
  `patient` varchar(50) DEFAULT NULL,
  `org_code` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='居民联系服务站';
-- 2021-05-07 skj
ALTER TABLE base.wlyy_patient_device add COLUMN  `sos_address` varchar(50) DEFAULT NULL COMMENT '设备类型为报警器时,需要填写投放地址 category_code = 7';
-- 2021-05-08 skj
ALTER TABLE base.base_life_care_item_dict add COLUMN  `life_care_img` varchar(255) DEFAULT NULL COMMENT '服务项目图片';
-- 2021-05-08 lb
CREATE TABLE `base_device_sos_log` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `patient` varchar(50) DEFAULT NULL COMMENT '居民code',
  `patient_name` varchar(50) DEFAULT NULL COMMENT '姓名',
  `idcard` varchar(32) DEFAULT NULL COMMENT '身份证',
  `category_code` varchar(50) DEFAULT NULL COMMENT '设备类型标识1血糖仪,2.血压计,3药盒,4智能手表',
  `device_sn` varchar(50) NOT NULL COMMENT '设备SN码',
  `sos_address` varchar(100) DEFAULT NULL COMMENT '报警地址',
  `sos_lat` varchar(100) DEFAULT NULL COMMENT '报警地址纬度',
  `sos_lon` varchar(100) DEFAULT NULL COMMENT '报警地址经度',
  `sos_send_status` varchar(255) DEFAULT NULL COMMENT '紧急救助发起状态 200成功, -1 失败',
  `sos_send_message` varchar(500) DEFAULT NULL COMMENT '紧急救助发起返回消息',
  `create_time` datetime DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='设备紧急救助日志表';
-- 2021-05-10 lb
ALTER table base.base_emergency_assistance_order add column `order_source` tinyint(4) DEFAULT '1' COMMENT '工单发起来源状态 1APP 2手环3居家报警'
-- 2021-05-10 ysj
ALTER table base.base_business_order_refund add column `enclosure` VARCHAR(3000)  COMMENT '附件';
DROP TABLE IF EXISTS `base_course`;
CREATE TABLE `base_course` (
  `id` varchar(50) NOT NULL,
  `type` varchar(1) DEFAULT NULL COMMENT '课程类型',
  `name` varchar(50) DEFAULT NULL COMMENT '课程名称',
  `org_code` varchar(50) DEFAULT NULL COMMENT '机构id',
  `org_name` varchar(50) DEFAULT NULL COMMENT '机构名称',
  `doctor` varchar(50) DEFAULT NULL COMMENT '教师id',
  `doctor_name` varchar(50) DEFAULT NULL COMMENT '教师名称',
  `live_time` datetime DEFAULT NULL COMMENT '直播时间',
  `live_status` varchar(1) DEFAULT NULL COMMENT '直播状态',
  `live_duration` varchar(10) DEFAULT NULL COMMENT '直播时长',
  `course_cover` varchar(300) DEFAULT NULL COMMENT '课程封面',
  `status` varchar(1) DEFAULT NULL COMMENT '上架状态',
  `fee` decimal(10,2) DEFAULT NULL COMMENT '费用',
  `introduction` varchar(3000) DEFAULT NULL COMMENT '课程简介',
  `del` tinyint(1) DEFAULT NULL COMMENT '删除标志 1正常 0删除',
  `create_time` datetime DEFAULT NULL,
  `create_user` varchar(50) DEFAULT NULL,
  `create_user_name` varchar(50) DEFAULT NULL,
  `update_time` datetime DEFAULT NULL,
  `update_user` varchar(50) DEFAULT NULL,
  `update_user_name` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='课程表';
DROP TABLE IF EXISTS `base_course_catalogue`;
CREATE TABLE `base_course_catalogue` (
  `id` varchar(50) NOT NULL,
  `course_id` varchar(50) DEFAULT NULL,
  `name` varchar(50) DEFAULT NULL COMMENT '目录名称',
  `type` varchar(1) DEFAULT NULL COMMENT '目录类型',
  `content` varchar(3000) DEFAULT NULL COMMENT '小节内容',
  `video_url` varchar(300) DEFAULT NULL COMMENT '小节视频url',
  `create_time` datetime DEFAULT NULL,
  `update_time` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='课程目录表';
DROP TABLE IF EXISTS `base_patient_order_refund`;
CREATE TABLE `base_patient_order_refund` (
  `id` varchar(50) NOT NULL,
  `patient` varchar(50) DEFAULT NULL COMMENT '居民code',
  `patient_name` varchar(50) DEFAULT NULL COMMENT '居民名字',
  `order_price` varchar(0) DEFAULT NULL COMMENT '订单金额',
  `refund_price` varchar(0) DEFAULT NULL COMMENT '退款金额',
  `refund_desc` varchar(500) DEFAULT NULL COMMENT '退款原因',
  `status` tinyint(1) DEFAULT NULL COMMENT '1待退款2已退款',
  `refund_time` datetime DEFAULT NULL COMMENT '退款时间',
  `create_time` datetime DEFAULT NULL COMMENT '退款申请时间',
  `buy_time` datetime DEFAULT NULL COMMENT '购买时间',
  `enclosure` varchar(3000) DEFAULT NULL COMMENT '附件',
  `bussiness_order_refund_id` int(11) DEFAULT NULL COMMENT '退款表id',
  `order_id` varchar(50) DEFAULT NULL COMMENT '订单id',
  `type` varchar(1) DEFAULT NULL COMMENT '类型 1招生报名,2课程',
  `org_code` varchar(50) DEFAULT NULL,
  `org_name` varchar(50) DEFAULT NULL COMMENT '课程名称/招生标题',
  `title` varchar(255) DEFAULT NULL,
  `mobile` varchar(20) DEFAULT NULL COMMENT '联系电话',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='居民发起的退款记录表';
DROP TABLE IF EXISTS `base_recruit_students`;
CREATE TABLE `base_recruit_students` (
  `id` varchar(50) NOT NULL,
  `org_code` varchar(50) DEFAULT NULL COMMENT '招生机构',
  `org_name` varchar(50) DEFAULT NULL COMMENT '招生机构名称',
  `theme` varchar(100) DEFAULT NULL COMMENT '招生主题',
  `start_time` datetime DEFAULT NULL COMMENT '报名开始时间',
  `end_time` datetime DEFAULT NULL COMMENT '报名结束时间',
  `num` int(11) DEFAULT NULL COMMENT '招生名额',
  `fee` decimal(10,2) DEFAULT NULL COMMENT '报名费用',
  `admitted_num` int(11) DEFAULT NULL COMMENT '已录取人数',
  `del` tinyint(1) DEFAULT NULL COMMENT '删除标志 1正常 0删除',
  `create_time` datetime DEFAULT NULL,
  `update_time` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='招生表';
DROP TABLE IF EXISTS `base_recruit_students_record`;
CREATE TABLE `base_recruit_students_record` (
  `id` varchar(50) NOT NULL,
  `recruit_students_id` varchar(50) DEFAULT NULL COMMENT '招生id',
  `recruit_name` varchar(100) DEFAULT NULL COMMENT '招生名称',
  `patient` varchar(50) DEFAULT NULL,
  `patient_name` varchar(50) DEFAULT NULL COMMENT '姓名',
  `sex` varchar(1) DEFAULT NULL COMMENT '性别',
  `org_code` varchar(50) DEFAULT NULL COMMENT '机构code',
  `org_name` varchar(50) DEFAULT NULL COMMENT '机构名称',
  `mobile` varchar(20) DEFAULT NULL COMMENT '手机',
  `status` varchar(1) DEFAULT NULL COMMENT '状态(待审核、待支付、已支付、已退费、审核未通过)',
  `del` tinyint(1) DEFAULT NULL,
  `create_time` datetime DEFAULT NULL,
  `update_time` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='招生记录表';
DROP TABLE IF EXISTS `base_customer_service`;
CREATE TABLE `base_customer_service` (
  `id` varchar(50) NOT NULL,
  `org_code` varchar(50) DEFAULT NULL,
  `org_name` varchar(50) DEFAULT NULL,
  `team_id` varchar(50) DEFAULT NULL,
  `team_name` varchar(50) DEFAULT NULL,
  `create_time` datetime DEFAULT NULL,
  `update_time` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='机构客服团队表';
DROP TABLE IF EXISTS `base_children_examination_record`;
CREATE TABLE `base_children_examination_record` (
  `id` varchar(50) NOT NULL,
  `type` varchar(1) DEFAULT NULL COMMENT '体检类型',
  `exam_time` datetime DEFAULT NULL COMMENT '体检时间',
  `org_code` varchar(50) DEFAULT NULL COMMENT '体检机构code',
  `org_name` varchar(50) DEFAULT NULL COMMENT '体检机构',
  `month_age` varchar(10) DEFAULT NULL COMMENT '月龄',
  `height` varchar(10) DEFAULT NULL COMMENT '身高',
  `weight` varchar(10) DEFAULT NULL COMMENT '体重',
  `head_circumference` varchar(10) DEFAULT NULL COMMENT '头围',
  `create_time` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='儿童体检记录表';
-- 计算2点距离函数
CREATE FUNCTION funDistance(lat1 DOUBLE,lon1 DOUBLE,lat2 DOUBLE,lon2 DOUBLE) RETURNS DOUBLE
BEGIN DECLARE juli DOUBLE;
SET juli = acos(sin(lat1 * PI() / 180) * sin(lat2 * PI() / 180) + cos(lat1 * PI() / 180) * cos(lat2 * PI() / 180) * cos(lon1 * PI() / 180 - lon2 * PI() / 180)) * 6378.137;
RETURN juli;
END;
DROP TABLE IF EXISTS `base_business_sys_dict`;
CREATE TABLE `base_business_sys_dict` (
  `id` varchar(50) NOT NULL,
  `dict_name` varchar(50) DEFAULT NULL COMMENT '所属字典',
  `dict_code` varchar(300) DEFAULT NULL COMMENT '字典项代码',
  `dict_value` text COMMENT '字典项所属值',
  `py_code` varchar(50) DEFAULT NULL COMMENT '拼音缩写码',
  `sort` int(11) DEFAULT NULL COMMENT '排序',
  `create_time` varchar(50) DEFAULT NULL,
  `update_time` varchar(50) DEFAULT NULL,
  `img_url` varchar(1000) DEFAULT NULL COMMENT '图片地址',
  `model_name` varchar(50) DEFAULT NULL COMMENT '模块名称',
    `ext1` varchar(50) DEFAULT NULL COMMENT '备用字段1,托育字典服务项的时候表示费用',
    `ext2` varchar(50) DEFAULT NULL COMMENT '备用字段2 ',
  PRIMARY KEY (`id`),
  KEY `dict_name` (`dict_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='托育业务字典表';
CREATE TABLE `wlyy_devices` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `apply_date` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '申请日期',
  `org_name` varchar(255) DEFAULT NULL COMMENT '机构名称',
  `linkman` varchar(255) DEFAULT NULL COMMENT '联系人',
  `tel` varchar(255) DEFAULT NULL COMMENT '联系电话',
  `server_ip` varchar(255) DEFAULT NULL COMMENT '服务IP地址',
  `device_name` varchar(255) DEFAULT NULL COMMENT '设备名称',
  `device_model` varchar(255) DEFAULT NULL COMMENT '型号',
  `device_code` varchar(255) DEFAULT NULL COMMENT '设备唯一标识',
  `manufacturer_code` varchar(255) DEFAULT NULL COMMENT '厂商代码',
  `manufacturer` varchar(255) DEFAULT NULL COMMENT '厂家名称',
  `address` varchar(255) DEFAULT NULL COMMENT '厂家地址',
  `representative` varchar(255) DEFAULT NULL COMMENT '法人代表',
  `applicant_name` varchar(255) DEFAULT NULL COMMENT '申请注册人',
  `applicant_identity` varchar(255) DEFAULT NULL COMMENT '申请人身份证号',
  `applicant_tel` varchar(255) DEFAULT NULL COMMENT '申请人手机',
  `applicant_mail` varchar(255) DEFAULT NULL COMMENT '申请人邮箱',
  `sim` varchar(50) DEFAULT NULL COMMENT 'sim卡号',
  `manufacturer_id` varchar(50) DEFAULT NULL COMMENT '厂商id',
  `is_grant` int(2) DEFAULT '0' COMMENT '是否发放(0否1是)',
  `grant_admin_team` varchar(50) DEFAULT NULL COMMENT '发放的患者所在团队',
  `grant_org_code` varchar(50) DEFAULT NULL COMMENT '发放所在机构',
  `is_binding` int(2) DEFAULT '0' COMMENT '是否绑定(0否 1 是)',
  `binding_count` varchar(50) DEFAULT NULL COMMENT '绑定次数({"1":"0", "2":"0"})',
  `grant_time` datetime DEFAULT NULL COMMENT '发放时间',
  `grant_doctor` varchar(50) DEFAULT NULL COMMENT '发放医生code',
  `grant_doctor_name` varchar(50) DEFAULT NULL COMMENT '发放医生姓名',
  `neighborhood_committee_code` varchar(12) DEFAULT NULL COMMENT '居委会code',
  `neighborhood_committee_name` varchar(100) DEFAULT NULL COMMENT '居委会名称',
  PRIMARY KEY (`id`),
  KEY `idx_device_code` (`device_code`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='厦门设备信息表';
-- 2021-05-12 lb
alter table base.base_business_sys_dict add column org_code varchar(50) default null comment '归属机构';
-- 2021-05-13 lb
CREATE TABLE `base_door_coach_order` (
  `id` varchar(50) NOT NULL DEFAULT '',
  `number` varchar(50) DEFAULT NULL COMMENT '服务编号',
  `proxy_patient` varchar(50) DEFAULT NULL COMMENT '代理发起工单的居民code,替父母,孩子等发起工单',
  `proxy_patient_name` varchar(10) DEFAULT NULL COMMENT '代理发起工单的居民code,替父母,孩子等发起工单',
  `proxy_patient_phone` varchar(15) DEFAULT NULL COMMENT '代理发起工单的居民联系电话',
  `patient` varchar(50) DEFAULT NULL COMMENT '被服务的居民code,发起工单的居民的亲属',
  `patient_name` varchar(10) DEFAULT NULL COMMENT '被服务的居民姓名,发起工单的居民的亲属',
  `patient_phone` varchar(15) DEFAULT NULL COMMENT '被服务的居民联系电话',
  `patient_relation` varchar(10) DEFAULT NULL COMMENT '发起人与被服务人的关系:自己,父亲,母亲,儿子等',
  `dispatcher` varchar(50) DEFAULT NULL COMMENT '调度员code',
  `dispatcher_name` varchar(50) DEFAULT NULL COMMENT '调度员name',
  `patient_expected_serve_time` varchar(200) DEFAULT NULL COMMENT '居民期望服务时间',
  `serve_desc` varchar(200) DEFAULT NULL COMMENT '居民自己服务描述',
  `serve_town` varchar(100) DEFAULT NULL COMMENT '上门服务的区',
  `serve_address` varchar(100) DEFAULT NULL COMMENT '上门服务详细地址',
  `serve_lat` varchar(100) DEFAULT NULL COMMENT '上门服务地址纬度',
  `serve_lon` varchar(100) DEFAULT NULL COMMENT '上门服务地址经度',
  `remark` varchar(200) DEFAULT NULL COMMENT '调度员备注',
  `is_patient_confirm` int(1) DEFAULT NULL COMMENT '居民对工单需要服务情况是否已确认,0-未确认,1-已确认 2-不同意',
  `patient_confirm_time` timestamp NULL DEFAULT NULL COMMENT '居民对工单需要服务情况确认时间',
  `is_trans_other_org` int(1) DEFAULT NULL COMMENT '工单是否转给其他机构,0-不转,1-已转',
  `transed_org_code` varchar(50) DEFAULT NULL COMMENT '最后转接的机构code',
  `transed_dispatcher` varchar(50) DEFAULT NULL COMMENT '最后转接的机构调度员code',
  `transed_dispatcher_name` varchar(50) DEFAULT NULL COMMENT '最后转接的机构调度员name',
  `total_fee` decimal(10,2) DEFAULT NULL COMMENT '服务总的支付费用',
  `doctor` varchar(50) DEFAULT NULL COMMENT '接单的医生code',
  `doctor_name` varchar(50) DEFAULT NULL COMMENT '接单的医生name',
  `doctor_type` varchar(50) DEFAULT NULL COMMENT '接单的医生类型:医生,健管师,护士等',
  `doctor_arriving_time` varchar(200) DEFAULT NULL COMMENT '医生预计到达时间',
  `doctor_sign_time` timestamp NULL DEFAULT NULL COMMENT '医生签到时间',
  `doctor_sign_way` int(1) DEFAULT NULL COMMENT '医生签到方式:1-定位,2-扫码,3-拍照',
  `doctor_sign_location` varchar(50) DEFAULT NULL COMMENT '医生签到位置,记录详细地址',
  `doctor_sign_img` varchar(3000) DEFAULT NULL COMMENT '医生签到照片',
  `patient_confirm_finish_way` int(1) DEFAULT NULL COMMENT '居民确认结束服务方式:1-电子签名,2-手持身份证拍照',
  `patient_confirm_finish_img` varchar(200) DEFAULT NULL COMMENT '居民确认结束服务照片',
  `patient_confirm_finish_time` timestamp NULL DEFAULT NULL COMMENT '居民确认医生结束服务时间',
  `present_imgs` varchar(3000) DEFAULT NULL COMMENT '医生诊疗现场照片,最多9张,逗号分隔',
  `exam_paper_status` int(1) DEFAULT NULL COMMENT '是否需要上传补录报告:0-不需要,1-需要,待补录;2-需要,已补录',
  `exam_paper_imgs` varchar(3000) DEFAULT NULL COMMENT '医生上传居民的化验检查报告照片',
  `exam_paper_upload_time` timestamp NULL DEFAULT NULL COMMENT '化验检查报告补录时间',
  `exam_paper_upload_way` int(1) DEFAULT NULL COMMENT '化验检查报告补录方式,1-拍照补录,2-接口数据',
  `status` int(1) DEFAULT NULL COMMENT '工单状态:-1-已取消,1-待(调度员)派单,2-待(医生)接单,3-已接单,4-签到,5-登记服务小结,6-已完成',
  `complete_time` timestamp NULL DEFAULT NULL COMMENT '工单完成时间(对工单评价完即工单完成)',
  `cancel_type` int(1) DEFAULT NULL COMMENT '取消类型:1-调度员取消,2-居民取消,3-医生取消',
  `cancel_reason` varchar(200) DEFAULT NULL COMMENT '取消理由',
  `cancel_time` timestamp NULL DEFAULT NULL COMMENT '取消时间',
  `pay_way` int(1) DEFAULT NULL COMMENT '付款方式:1-微信支付,2-线下支付(居民自己向医院支付,具体怎么支付由医院来定)',
  `pay_number` varchar(100) DEFAULT NULL COMMENT '支付流水号',
  `pay_time` timestamp NULL DEFAULT NULL COMMENT '支付时间',
  `dispatcher_response_time` timestamp NULL DEFAULT NULL COMMENT '调度员响应时间(派单时间或取消时间)',
  `service_response_time` timestamp NULL DEFAULT NULL COMMENT '服务医生响应时间(第一条咨询或者接单时间)',
  `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间',
  `create_user` varchar(50) DEFAULT NULL COMMENT '创建者id',
  `create_user_name` varchar(50) DEFAULT NULL COMMENT '创建者名称',
  `update_time` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
  `update_user` varchar(50) DEFAULT NULL,
  `update_user_name` varchar(50) DEFAULT NULL,
  `expected_doctor_name` varchar(10) DEFAULT '' COMMENT '居民期望服务的医生姓名',
  `hospital` varchar(50) DEFAULT NULL COMMENT '服务机构',
  `conclusion_status` int(1) DEFAULT NULL COMMENT '服务小结登记状态:1待补录;2-已补录',
  `prescription_status` int(1) DEFAULT NULL COMMENT '开方状态:1已完成,0未开方',
  `prescription_code` varchar(100) DEFAULT NULL COMMENT '处方单号,多个用逗号隔开',
  `prescription_time` timestamp NULL DEFAULT NULL COMMENT '开方完成时间',
  `outpatient_id` varchar(50) DEFAULT NULL COMMENT '关联门诊记录',
  `type` tinyint(2) DEFAULT '1' COMMENT '发起类型(1本人发起 2家人待预约 3医生代预约)',
  `authorize_image` varchar(500) DEFAULT NULL COMMENT '电子健康卡授权图片',
  `relation_code` varchar(50) DEFAULT NULL COMMENT '业务关联',
  `service_status` varchar(15) DEFAULT NULL COMMENT '服务类型 1-预约项目 2-即时项目',
  `order_info` varchar(15) DEFAULT NULL COMMENT '工单详情 0-未推送 1-未确认 2-已确认',
  `shortcut_type` char(1) DEFAULT NULL COMMENT '快捷类型,1是快捷类型,其他值不是',
  `followup_date` varchar(50) DEFAULT NULL COMMENT '随访时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='上门辅导服务工单';
CREATE TABLE `base_door_coach_fee_detail` (
  `id` varchar(50) NOT NULL,
  `order_id` varchar(50) DEFAULT NULL COMMENT '工单id',
  `type` int(1) NOT NULL COMMENT '费用类型,1-服务项费用,2-医生出诊费用',
  `code` varchar(50) DEFAULT NULL COMMENT '居民请求的服务项code,医生出诊费用code',
  `name` varchar(50) DEFAULT NULL COMMENT '居民请求的服务项名称,医生出诊费用名称',
  `fee` decimal(10,2) DEFAULT NULL COMMENT '费用',
  `fee_discount` decimal(10,2) DEFAULT NULL COMMENT '折扣费用',
  `number` int(1) DEFAULT NULL COMMENT '数量',
  `status` int(1) NOT NULL COMMENT '状态,1-居民新增(预约),2-医生新增,3-医生删除',
  `create_time` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
  `create_user` varchar(50) DEFAULT NULL COMMENT '创建者id',
  `create_user_name` varchar(50) DEFAULT NULL COMMENT '创建者名称',
  `update_time` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
  `update_user` varchar(50) DEFAULT NULL,
  `update_user_name` varchar(50) DEFAULT NULL,
  `pay_status` tinyint(1) DEFAULT NULL COMMENT '付款状态:0未付款 1已付款',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='上门辅导服务工单价格明细(服务项价格,医生出诊费用)';
CREATE TABLE `base_door_coach_doctor_status` (
  `id` varchar(50) NOT NULL,
  `doctor` varchar(50) NOT NULL COMMENT '医生code',
  `status` int(1) NOT NULL DEFAULT '1' COMMENT '医生状态:1-待派单,2-待接单,3-待服务,4-服务中,5-停止接单',
  `create_user` varchar(50) DEFAULT NULL COMMENT '创建者id',
  `create_user_name` varchar(50) DEFAULT NULL COMMENT '创建者称名',
  `create_time` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '转接时间',
  `update_time` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
  `update_user` varchar(50) DEFAULT NULL,
  `update_user_name` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='医生上门辅导服务工单状态情况';
CREATE TABLE `base_door_coach_process_log` (
  `id` varchar(50) NOT NULL,
  `order_id` varchar(50) NOT NULL COMMENT '工单id',
  `status` int(1) NOT NULL COMMENT '工单处理状态',
  `dispatcher` varchar(50) DEFAULT NULL COMMENT '变更状态的调度员',
  `dispatcher_name` varchar(50) DEFAULT NULL COMMENT '变更状态的调度员姓名',
  `create_time` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='上门辅导工单状态变更记录(调度员操作记录)';
CREATE TABLE `base_door_coach_conclusion` (
  `id` varchar(50) NOT NULL,
  `order_id` varchar(50) NOT NULL COMMENT '工单id',
  `patient` varchar(50) DEFAULT NULL COMMENT '工单服务的居民',
  `patient_name` varchar(50) DEFAULT NULL COMMENT '居民姓名',
  `doctor` varchar(50) DEFAULT NULL COMMENT '医生',
  `doctor_name` varchar(50) DEFAULT NULL COMMENT '医生姓名',
  `conclusion` varchar(2000) DEFAULT NULL COMMENT '处置小结',
  `conclusion_img` varchar(1000) DEFAULT NULL COMMENT '服务相关附件',
  `create_time` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
  `create_user` varchar(50) DEFAULT NULL COMMENT '创建者id',
  `create_user_name` varchar(50) DEFAULT NULL COMMENT '创建者称名',
  `update_time` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
  `update_user` varchar(50) DEFAULT NULL,
  `update_user_name` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `orderId` (`order_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='上门辅导工单服务小结';
CREATE TABLE `base_door_coach_patient_confirm_log` (
  `id` varchar(50) NOT NULL,
  `order_id` varchar(50) NOT NULL COMMENT '工单id',
  `patient` varchar(50) NOT NULL COMMENT '居民',
  `patient_name` varchar(50) NOT NULL COMMENT '居民姓名',
  `type` int(1) NOT NULL COMMENT '确认操作类型:1-确认基础信息无误或变更,2-确认上门医生变更上门信息,3-同意工单转接',
  `description` varchar(200) DEFAULT NULL COMMENT '操作描述',
  `create_user` varchar(50) DEFAULT NULL COMMENT '创建者id',
  `create_user_name` varchar(50) DEFAULT NULL COMMENT '创建者称名',
  `create_time` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '转接时间',
  `update_time` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
  `update_user` varchar(50) DEFAULT NULL,
  `update_user_name` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='上门辅导服务工单居民确认操作日志记录';
CREATE TABLE `base_door_coach_cancel_log` (
  `id` varchar(50) NOT NULL,
  `order_id` varchar(50) NOT NULL COMMENT '工单id',
  `patient` varchar(50) NOT NULL COMMENT '居民code',
  `cancel_type` int(1) NOT NULL COMMENT '取消类型:1-调度员取消,2-居民取消',
  `cancel_reason` varchar(50) DEFAULT NULL COMMENT '取消理由',
  `time` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '取消时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='上门辅导工单取消记录';
-- 2021-05-17 ysj
DROP TABLE IF EXISTS `base_course_sales_order_record`;
CREATE TABLE `base_course_sales_order_record` (
  `id` varchar(50) NOT NULL,
  `patient` varchar(50) DEFAULT NULL,
  `patient_name` varchar(5) DEFAULT NULL,
  `org_code` varchar(50) DEFAULT NULL,
  `org_name` varchar(50) DEFAULT NULL,
  `course_id` varchar(50) DEFAULT NULL COMMENT '课程id',
  `course_name` varchar(100) DEFAULT NULL COMMENT '课程名称',
  `buy_time` datetime DEFAULT NULL COMMENT '购买时间',
  `status` varchar(1) DEFAULT NULL COMMENT '状态',
  `price` decimal(10,2) DEFAULT NULL,
  `create_time` datetime DEFAULT NULL,
  `update_time` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='课程销售订单记录表';
DROP TABLE IF EXISTS `base_patient_course_record`;
CREATE TABLE `base_patient_course_record` (
  `id` varchar(50) NOT NULL,
  `nursery_log_id` varchar(50) DEFAULT NULL COMMENT '托育日志id',
  `patient` varchar(50) DEFAULT NULL,
  `content` varchar(2000) DEFAULT NULL COMMENT '课程记录内容',
  `enclosure` varchar(2000) DEFAULT NULL COMMENT '附件',
  `record_date` varchar(20) DEFAULT NULL COMMENT '记录日期',
  `create_time` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='居民课程记录';
DROP TABLE IF EXISTS `base_patient_diet_record`;
CREATE TABLE `base_patient_diet_record` (
  `id` varchar(50) NOT NULL,
  `nursery_log_id` varchar(50) DEFAULT NULL COMMENT '托育日志id',
  `patient` varchar(50) DEFAULT NULL,
  `eat_food` varchar(1000) DEFAULT NULL COMMENT '食用食物json格式',
  `eat_type` varchar(255) DEFAULT NULL COMMENT '食用方式 1喂食 2自主进食',
  `intake` varchar(1) DEFAULT NULL COMMENT '摄入量 全部吃完 吃了1/3 吃了1/2 几乎没吃',
  `additional_notes` varchar(1000) DEFAULT NULL COMMENT '附加说明',
  `enclosure` varchar(2000) DEFAULT NULL COMMENT '附件',
  `record_date` varchar(20) DEFAULT NULL COMMENT '记录日期',
  `create_time` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='居民饮食记录';
DROP TABLE IF EXISTS `base_nursery_log`;
CREATE TABLE `base_nursery_log` (
  `id` varchar(50) NOT NULL,
  `patient` varchar(50) DEFAULT NULL,
  `patient_name` varchar(50) DEFAULT NULL,
  `doctor` varchar(50) DEFAULT NULL,
  `doctor_name` varchar(50) DEFAULT NULL,
  `org_code` varchar(50) DEFAULT NULL,
  `org_name` varchar(50) DEFAULT NULL,
  `record_date` varchar(20) DEFAULT NULL COMMENT '记录日期',
  `status` varchar(1) DEFAULT NULL,
  `create_time` datetime DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `unique1` (`patient`,`record_date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='托育日志记录';
-- 2021-05-18
create table base_org_notice(
	id varchar(50) not null,
	org_code varchar(50) default null COMMENT '机构code',
	org_name varchar(50) default null COMMENT '机构名称',
	status tinyint(1) DEFAULT NULL COMMENT '状态(1待发布,2已发布)',
	del tinyint(1) DEFAULT '1' COMMENT '删除标志(1正常,0删除)',
	title VARCHAR(50) default null comment '通知标题',
	content text default null comment '通知内容',
	img VARCHAR(1000) default null COMMENT '附件',
	notice_time datetime default null COMMENT '通知时间',
	create_time datetime default null,
	PRIMARY KEY(id)
)ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='机构通知表';
ALTER table base_org_notice add column create_user varchar(50) DEFAULT NULL
-- 2021-05-20 lb
ALTER table base.base_security_monitoring_order add column `order_source` tinyint(4) DEFAULT '1' COMMENT '工单发起来源状态 1APP 2手环3居家报警'
-- 2021-05-19
CREATE TABLE `base_course_catalogue_read_time` (
  `id` varchar(50) NOT NULL,
  `patient` varchar(50) DEFAULT NULL COMMENT '用户code',
  `course_catalogue_id` varchar(50) DEFAULT NULL COMMENT '课程目录id',
  `course_id` varchar(50) DEFAULT NULL COMMENT '课程id',
  `read_time` varchar(20) DEFAULT NULL COMMENT '阅读时间,保留时间戳格式,单位s',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=COMPACT COMMENT='记录用户阅读课程时长';
-- 2021 05-21 lb
CREATE TABLE `base_emergency_warn_conclusion` (
  `id` varchar(50) NOT NULL,
  `order_id` varchar(50) NOT NULL COMMENT '工单id',
  `patient` varchar(50) DEFAULT NULL COMMENT '工单服务的居民',
  `patient_name` varchar(50) DEFAULT NULL COMMENT '居民姓名',
  `doctor` varchar(50) DEFAULT NULL COMMENT '医生',
  `doctor_name` varchar(50) DEFAULT NULL COMMENT '医生姓名',
  `conclusion` varchar(2000) DEFAULT NULL COMMENT '处置小结',
   `conclusion_img` varchar(1000) DEFAULT NULL COMMENT '服务相关附件',
  `emergency_reason` tinyint(4) DEFAULT '4' COMMENT '紧急预警工单发起原因 字典emergency_reason',
  `emergency_treatment_status` tinyint(4) DEFAULT '4' COMMENT '紧急预警工单处理结果 字典emergency_treatment_status',
  `create_time` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
  `create_user` varchar(50) DEFAULT NULL COMMENT '创建者id',
  `create_user_name` varchar(50) DEFAULT NULL COMMENT '创建者称名',
  `update_time` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
  `update_user` varchar(50) DEFAULT NULL,
  `update_user_name` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `orderId` (`order_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='紧急预警工单服务小结';
CREATE TABLE `base_emergency_warn_cancel_log` (
  `id` varchar(50) NOT NULL,
  `order_id` varchar(50) NOT NULL COMMENT '工单id',
  `patient` varchar(50) DEFAULT NULL COMMENT '居民code',
  `cancel_type` int(1) DEFAULT NULL COMMENT '取消类型:1-调度员取消,2-居民取消 3 医生取消',
   `cancel_reason` varchar(50) DEFAULT NULL COMMENT '取消理由',
  `time` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '取消时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='紧急预警工单取消记录';
alter table base_security_monitoring_order add column emergency_cancel tinyint(4) DEFAULT '4' COMMENT '紧急预警工单误报警原因 emergency_cancel';
alter table base_emergency_assistance_order add column emergency_cancel tinyint(4) DEFAULT '4' COMMENT '紧急预警工单误报警原因 emergency_cancel';
CREATE TABLE `base_emergency_warn_doctor_response` (
  `id` varchar(50) NOT NULL,
  `order_id` varchar(50) NOT NULL COMMENT '工单id',
  `doctor` varchar(50) NOT NULL COMMENT '医生code',
  `response_time` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP 	COMMENT '医生响应时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='紧急预警医生响应状态';
DROP TABLE IF EXISTS `base_security_monitoring_conclusion`;
DROP TABLE IF EXISTS `base_security_monitoring_order_cancel_log`;
DROP TABLE IF EXISTS `base_semoni_patient_confirm_log`;
alter table wlyy_prescription ADD disable_time timestamp ;
alter table wlyy_outpatient ADD is_agree  varchar(2);
alter table base_doctor ADD is_sign  varchar(2);
alter table base_doctor ADD last_sign_time  timestamp;
-- 2021-06-02 ysj
CREATE TABLE `base_seq` (
  `val` int(11) NOT NULL,
  `type` tinyint(4) NOT NULL COMMENT '类型1生活照料'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='自增序列';
INSERT INTO `base`.`base_seq` (`val`, `type`) VALUES ('1000000001', '1');
CREATE FUNCTION seq(seq_type TINYINT (4)) returns int
begin
 UPDATE base_seq SET val=last_insert_id(val+1) WHERE type=seq_type;
 RETURN last_insert_id();
end;
alter table base_life_care_order add column doctor_sign_time datetime DEFAULT NULL COMMENT '医生签到时间';
alter table base_life_care_order add column doctor_sign_way tinyint(1) DEFAULT NULL COMMENT '医生签到方式:1-定位,2-扫码,3-拍照';
alter table base_life_care_order add column doctor_sign_location varchar(50) DEFAULT NULL COMMENT '医生签到位置,记录详细地址';
alter table base_life_care_order add column doctor_sign_img varchar(3000) DEFAULT NULL COMMENT '医生签到照片';
alter table base_life_care_order add column sign_doctor varchar(50) DEFAULT NULL COMMENT '签到医生';
alter table base_life_care_order add column sign_doctor_name varchar(50) DEFAULT NULL COMMENT '签到医生name';
-- 2021-06-07 ysj
alter table base_life_care_order add column conclusion_imgs varchar(3000) DEFAULT NULL COMMENT '小结照片';
alter table base_life_care_order add column conclusion_time datetime DEFAULT NULL COMMENT '小结时间';
alter table base_life_care_order add column conclusion_remark varchar(1200) DEFAULT NULL COMMENT '小结内容';
-- 2021-06-07 lb
CREATE TABLE `base_doctor_patient_tmp` (
  `id` varchar(50) NOT NULL,
  `patient` varchar(50) DEFAULT NULL,
  `type` tinyint(2) DEFAULT NULL COMMENT '1在线咨询,2上门辅导,3入学报名,4购买课程',
  `relation_code` varchar(50) DEFAULT NULL COMMENT '1:咨询code,2上门辅导工单id,3入学订单id,4课程订单id',
  `doctor_code` varchar(50) DEFAULT NULL COMMENT 'type=(1,2,4为医生id;3机构code) ',
  `status` tinyint(2) DEFAULT '0' COMMENT '入学字段 1已入学,0未入学',
  `del` tinyint(1) DEFAULT '1' COMMENT '1有效 0无效',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  PRIMARY KEY (`id`),
  KEY `patient` (`patient`),
  KEY `type_doc_code` (`type`,`doctor_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='教师医生通讯录埋点数据';
-- 2021-06-10
alter table base.base_service_package_item add column topic_item varchar(50) default null COMMENT '服务项所属专题(base_system_dict_entry remark字段) security 安防服务专题';
-- 2021-06-11
ALTER table base.base_security_monitoring_order add column topic_item varchar(50) default "preventLost" COMMENT '安防工单所属专题 base_system_dict_entry表service_item';
ALTER TABLE base.base_security_monitoring_order ADD INDEX idx_topIt(topic_item);
ALTER table base_capacity_assessment_record add column age tinyint(4) default null  COMMENT '年龄';
ALTER TABLE base.base_doctor_patient_tmp MODIFY COLUMN  doctor_code varchar(50) DEFAULT NULL COMMENT 'type=(1,2,4为医生id) ';
ALTER TABLE base.base_doctor_patient_tmp ADD COLUMN org_code varchar(50) DEFAULT NULL COMMENT 'type=(3为机构code)';
ALTER TABLE base_security_monitoring_order add column scene_img VARCHAR(1000) default null COMMENT '工单发起时的现场照片';
-- 2021-06-21
ALTER table base_patient add column idcard_front varchar(1000) default NULL  COMMENT '身份证正面';
ALTER table base_patient add column idcard_back varchar(1000) default NULL  COMMENT '身份证反面';
-- 2021-06-17 ysj
ALTER table base_patient ADD COLUMN `lat_lon` varchar(100) DEFAULT NULL COMMENT '定位经纬度';
CREATE TABLE `base_service_news` (
  `id` varchar(50) NOT NULL,
  `content` varchar(200) DEFAULT NULL COMMENT '内容',
  `create_time` datetime DEFAULT NULL,
  `name` varchar(50) DEFAULT NULL COMMENT '姓名',
  `type` varchar(2) DEFAULT NULL COMMENT '类型',
  `code` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='服务动态信息';
-- 2021-06-29 ysj
CREATE TABLE `base_wx_pay_http_log` (
  `id` varchar(50) NOT NULL,
  `type` varchar(1) DEFAULT NULL COMMENT '类型1 统一下单 2支付回调 3退款 4 退款回调',
  `order_no` varchar(50) DEFAULT NULL COMMENT '订单号',
  `order_res` text,
  `order_req` text,
  `create_time` datetime DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `index1` (`order_no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='微信支付日志表';
-- 2021-06-30
alter table base.base_door_coach_order add column pay_status TINYINT(2) DEFAULT null COMMENT '0待扣费 1已支付 2已退款';
alter table base.base_life_care_order add column pay_status TINYINT(2) DEFAULT null COMMENT '0待扣费 1已支付 2已退款';
-- 2021-07-01 lb
alter table base.base_business_order_refund add column refuse_desc varchar(255) DEFAULT null COMMENT '拒绝退款说明';
ALTER table base.base_business_order_pay add column last_pay_time BIGINT(13) COMMENT '截至支付日期'
ALTER table base.base_business_order_pay add INDEX index_status_last_pay(status,last_pay_time)

+ 38 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/IdEntity.java

@ -0,0 +1,38 @@
/*******************************************************************************
 * Copyright (c) 2005, 2014 springside.github.io
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 *******************************************************************************/
package com.yihu.jw.entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.MappedSuperclass;
import java.io.Serializable;
/**
 * 统一定义id的entity基类.
 * 
 * 基类统一定义id的属性名称、数据类型、列名映射及生成策略.
 * Oracle需要每个Entity独立定义id的SEQUCENCE时,不继承于本类而改为实现一个Idable的接口。
 * 
 * @author calvin
 */
// JPA 基类的标识
@MappedSuperclass
public abstract class IdEntity implements Serializable {
	private static final long serialVersionUID = 3673803562328635206L;
	protected Long id;  // 非业务主键
	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
}

+ 289 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/base/complaint/BaseComplaintDO.java

@ -0,0 +1,289 @@
package com.yihu.jw.entity.base.complaint;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yihu.jw.entity.UuidIdentityEntity;
import com.yihu.jw.entity.UuidIdentityEntityWithOperator;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;
import java.util.Date;
@Entity
@Table(name = "base_complaint")
public class BaseComplaintDO  extends UuidIdentityEntity {
    private String complaintId;
    private String complaintName;
    private String complaintContent;
    private String visitType;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    private Date visitTime;
    private String visitDept;
    private String visitDeptName;
    private String admNo;
    private String patient;
    private String patientName;
    private String patientIdcard;
    private String idcardFront;
    private String idcardBack;
    private String imgUrl;
    private String isDel;
    private String status;
    @Transient
    private String mobile;
    private String visitTypeName;
    @Transient
    public String getVisitTypeName() {
        return visitTypeName;
    }
    public void setVisitTypeName(String visitTypeName) {
        this.visitTypeName = visitTypeName;
    }
    @Transient
    public String getMobile() {
        return mobile;
    }
    public void setMobile(String mobile) {
        this.mobile = mobile;
    }
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    private Date createTime;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    private Date acceptTime;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    private Date dealTime;
    private String operator;
    private String operatorName;
    private String operatorDept;
    private String operatorDeptName;
    private String feedBack;
    private String feedImg;
    private String acceptor;
    private String acceptorName;
    @Column(name = "operator_dept")
    public String getOperatorDept() {
        return operatorDept;
    }
    public void setOperatorDept(String operatorDept) {
        this.operatorDept = operatorDept;
    }
    @Column(name = "operator_dept_name")
    public String getOperatorDeptName() {
        return operatorDeptName;
    }
    public void setOperatorDeptName(String operatorDeptName) {
        this.operatorDeptName = operatorDeptName;
    }
    @Column(name = "feed_back")
    public String getFeedBack() {
        return feedBack;
    }
    public void setFeedBack(String feedBack) {
        this.feedBack = feedBack;
    }
    @Column(name = "feed_img")
    public String getFeedImg() {
        return feedImg;
    }
    public void setFeedImg(String feedImg) {
        this.feedImg = feedImg;
    }
    @Column(name = "acceptor")
    public String getAcceptor() {
        return acceptor;
    }
    public void setAcceptor(String acceptor) {
        this.acceptor = acceptor;
    }
    @Column(name = "acceptor_name")
    public String getAcceptorName() {
        return acceptorName;
    }
    public void setAcceptorName(String acceptorName) {
        this.acceptorName = acceptorName;
    }
    @Column(name = "complaint_id")
    public String getComplaintId() {
        return complaintId;
    }
    public void setComplaintId(String complaintId) {
        this.complaintId = complaintId;
    }
    @Column(name = "complaint_name")
    public String getComplaintName() {
        return complaintName;
    }
    public void setComplaintName(String complaintName) {
        this.complaintName = complaintName;
    }
    @Column(name = "complaint_content")
    public String getComplaintContent() {
        return complaintContent;
    }
    public void setComplaintContent(String complaintContent) {
        this.complaintContent = complaintContent;
    }
    @Column(name = "visit_type")
    public String getVisitType() {
        return visitType;
    }
    public void setVisitType(String visitType) {
        this.visitType = visitType;
    }
    @Column(name = "visit_time")
    public Date getVisitTime() {
        return visitTime;
    }
    public void setVisitTime(Date visitTime) {
        this.visitTime = visitTime;
    }
    @Column(name = "visit_dept")
    public String getVisitDept() {
        return visitDept;
    }
    public void setVisitDept(String visitDept) {
        this.visitDept = visitDept;
    }
    @Column(name = "visit_dept_name")
    public String getVisitDeptName() {
        return visitDeptName;
    }
    public void setVisitDeptName(String visitDeptName) {
        this.visitDeptName = visitDeptName;
    }
    @Column(name = "adm_no")
    public String getAdmNo() {
        return admNo;
    }
    public void setAdmNo(String admNo) {
        this.admNo = admNo;
    }
    @Column(name = "patient")
    public String getPatient() {
        return patient;
    }
    public void setPatient(String patient) {
        this.patient = patient;
    }
    @Column(name = "patient_name")
    public String getPatientName() {
        return patientName;
    }
    public void setPatientName(String patientName) {
        this.patientName = patientName;
    }
    @Column(name = "patient_idcard")
    public String getPatientIdcard() {
        return patientIdcard;
    }
    public void setPatientIdcard(String patientIdcard) {
        this.patientIdcard = patientIdcard;
    }
    @Column(name = "idcard_front")
    public String getIdcardFront() {
        return idcardFront;
    }
    public void setIdcardFront(String idcardFront) {
        this.idcardFront = idcardFront;
    }
    @Column(name = "idcard_back")
    public String getIdcardBack() {
        return idcardBack;
    }
    public void setIdcardBack(String idcardBack) {
        this.idcardBack = idcardBack;
    }
    @Column(name = "img_url")
    public String getImgUrl() {
        return imgUrl;
    }
    public void setImgUrl(String imgUrl) {
        this.imgUrl = imgUrl;
    }
    @Column(name = "is_del")
    public String getIsDel() {
        return isDel;
    }
    public void setIsDel(String isDel) {
        this.isDel = isDel;
    }
    @Column(name = "status")
    public String getStatus() {
        return status;
    }
    public void setStatus(String status) {
        this.status = status;
    }
    @Column(name = "create_time")
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    @Column(name = "accept_time")
    public Date getAcceptTime() {
            return acceptTime;
    }
    public void setAcceptTime(Date acceptTime) {
        this.acceptTime = acceptTime;
    }
    @Column(name = "deal_time")
    public Date getDealTime() {
        return dealTime;
    }
    public void setDealTime(Date dealTime) {
        this.dealTime = dealTime;
    }
    @Column(name = "operator")
    public String getOperator() {
        return operator;
    }
    public void setOperator(String operator) {
        this.operator = operator;
    }
    @Column(name = "operator_name")
    public String getOperatorName() {
        return operatorName;
    }
    public void setOperatorName(String operatorName) {
        this.operatorName = operatorName;
    }
}

+ 33 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/base/complaint/BaseComplaintDictDO.java

@ -0,0 +1,33 @@
package com.yihu.jw.entity.base.complaint;
import com.yihu.jw.entity.UuidIdentityEntity;
import com.yihu.jw.entity.UuidIdentityEntityWithOperator;
import sun.awt.SunHints;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.util.Date;
@Entity
@Table(name = "base_complaint_dict")
public class BaseComplaintDictDO extends UuidIdentityEntityWithOperator {
    private String name;
    private String isDel;
    @Column(name = "name")
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    @Column(name = "is_del")
    public String getIsDel() {
        return isDel;
    }
    public void setIsDel(String isDel) {
        this.isDel = isDel;
    }
}

+ 69 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/base/complaint/BaseComplaintDoctorDO.java

@ -0,0 +1,69 @@
package com.yihu.jw.entity.base.complaint;
import com.yihu.jw.entity.UuidIdentityEntity;
import com.yihu.jw.entity.UuidIdentityEntityWithOperator;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.util.Date;
@Entity
@Table(name = "base_complaint_doctor")
public class BaseComplaintDoctorDO extends UuidIdentityEntityWithOperator {
    private String complaintId;
    private String doctor;
    private String doctorName;
    private String dept;
    private String deptName;
    private String isDel;
    @Column(name = "complaint_id")
    public String getComplaintId() {
        return complaintId;
    }
    public void setComplaintId(String complaintId) {
        this.complaintId = complaintId;
    }
    @Column(name = "doctor")
    public String getDoctor() {
        return doctor;
    }
    public void setDoctor(String doctor) {
        this.doctor = doctor;
    }
    @Column(name = "doctor_name")
    public String getDoctorName() {
        return doctorName;
    }
    public void setDoctorName(String doctorName) {
        this.doctorName = doctorName;
    }
    @Column(name = "dept")
    public String getDept() {
        return dept;
    }
    public void setDept(String dept) {
        this.dept = dept;
    }
    @Column(name = "dept_name")
    public String getDeptName() {
        return deptName;
    }
    public void setDeptName(String deptName) {
        this.deptName = deptName;
    }
    @Column(name = "is_del")
    public String getIsDel() {
        return isDel;
    }
    public void setIsDel(String isDel) {
        this.isDel = isDel;
    }
}

+ 96 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/base/complaint/BaseComplaintOperateLogDO.java

@ -0,0 +1,96 @@
package com.yihu.jw.entity.base.complaint;
import com.yihu.jw.entity.UuidIdentityEntity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.util.Date;
@Entity
@Table(name = "base_complaint_operate_log")
public class BaseComplaintOperateLogDO extends UuidIdentityEntity {
    private String  relationCode;
    private String  operateFrom;
    private String  operateTo;
    private Date createTime;
    private String  complaintFrom;
    private String  complaintTo;
    private String  status;
    private String  operateType;
    private String  cancelBy;
    @Column(name = "cancel_by")
    public String getCancelBy() {
        return cancelBy;
    }
    public void setCancelBy(String cancelBy) {
        this.cancelBy = cancelBy;
    }
    @Column(name = "status")
    public String getStatus() {
        return status;
    }
    public void setStatus(String status) {
        this.status = status;
    }
    @Column(name = "operate_type")
    public String getOperateType() {
        return operateType;
    }
    public void setOperateType(String operateType) {
        this.operateType = operateType;
    }
    @Column(name = "relation_code")
    public String getRelationCode() {
        return relationCode;
    }
    public void setRelationCode(String relationCode) {
        this.relationCode = relationCode;
    }
    @Column(name = "operate_from")
    public String getOperateFrom() {
        return operateFrom;
    }
    public void setOperateFrom(String operateFrom) {
        this.operateFrom = operateFrom;
    }
    @Column(name = "operate_to")
    public String getOperateTo() {
        return operateTo;
    }
    public void setOperateTo(String operateTo) {
        this.operateTo = operateTo;
    }
    @Column(name = "create_time")
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    @Column(name = "complaint_from")
    public String getComplaintFrom() {
        return complaintFrom;
    }
    public void setComplaintFrom(String complaintFrom) {
        this.complaintFrom = complaintFrom;
    }
    @Column(name = "complaint_to")
    public String getComplaintTo() {
        return complaintTo;
    }
    public void setComplaintTo(String complaintTo) {
        this.complaintTo = complaintTo;
    }
}

+ 105 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/base/dict/BaseExceptionDictDO.java

@ -0,0 +1,105 @@
package com.yihu.jw.entity.base.dict;
import com.yihu.jw.entity.UuidIdentityEntity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.util.Date;
@Entity
@Table(name = "base_exception_dict")
public class BaseExceptionDictDO extends UuidIdentityEntity {
    private String code;
    private String exceptionMessage;
    private Date createTime;
    private String isDel;
    private String modelName;
    private String exceptionType;
    private String exceptionTypeName;
    private String remindContent;
    private String exceptionInfo;
    @Column(name = "exception_info")
    public String getExceptionInfo() {
        return exceptionInfo;
    }
    public void setExceptionInfo(String exceptionInfo) {
        this.exceptionInfo = exceptionInfo;
    }
    @Column(name = "remind_content")
    public String getRemindContent() {
        return remindContent;
    }
    public void setRemindContent(String remindContent) {
        this.remindContent = remindContent;
    }
    @Column(name = "code")
    public String getCode() {
        return code;
    }
    public void setCode(String code) {
        this.code = code;
    }
    @Column(name = "exception_message")
    public String getExceptionMessage() {
        return exceptionMessage;
    }
    public void setExceptionMessage(String exceptionMessage) {
        this.exceptionMessage = exceptionMessage;
    }
    @Column(name = "create_time")
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    @Column(name = "is_del")
    public String getIsDel() {
        return isDel;
    }
    public void setIsDel(String isDel) {
        this.isDel = isDel;
    }
    @Column(name = "model_name")
    public String getModelName() {
        return modelName;
    }
    public void setModelName(String modelName) {
        this.modelName = modelName;
    }
    @Column(name = "exception_type")
    public String getExceptionType() {
        return exceptionType;
    }
    public void setExceptionType(String exceptionType) {
        this.exceptionType = exceptionType;
    }
    @Column(name = "exception_type_name")
    public String getExceptionTypeName() {
        return exceptionTypeName;
    }
    public void setExceptionTypeName(String exceptionTypeName) {
        this.exceptionTypeName = exceptionTypeName;
    }
}

+ 76 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/base/dict/BaseExceptionLogDO.java

@ -0,0 +1,76 @@
package com.yihu.jw.entity.base.dict;
import com.yihu.jw.entity.UuidIdentityEntity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.util.Date;
@Entity
@Table(name = "base_exception_log")
public class BaseExceptionLogDO extends UuidIdentityEntity {
    private String serviceCode;
    private String exceptionCode;
    private String exceptionType;
    private Date createTime;
    private String request;
    private String response;
    @Column(name = "service_code")
    public String getServiceCode() {
        return serviceCode;
    }
    public void setServiceCode(String serviceCode) {
        this.serviceCode = serviceCode;
    }
    @Column(name = "exception_code")
    public String getExceptionCode() {
        return exceptionCode;
    }
    public void setExceptionCode(String exceptionCode) {
        this.exceptionCode = exceptionCode;
    }
    @Column(name = "exception_type")
    public String getExceptionType() {
        return exceptionType;
    }
    public void setExceptionType(String exceptionType) {
        this.exceptionType = exceptionType;
    }
    @Column(name = "create_time")
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    @Column(name = "request")
    public String getRequest() {
        return request;
    }
    public void setRequest(String request) {
        this.request = request;
    }
    @Column(name = "response")
    public String getResponse() {
        return response;
    }
    public void setResponse(String response) {
        this.response = response;
    }
}

+ 60 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/base/dict/BaseExceptionServerDictDO.java

@ -0,0 +1,60 @@
package com.yihu.jw.entity.base.dict;
import com.yihu.jw.entity.UuidIdentityEntity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.util.Date;
@Entity
@Table(name = "base_exception_server_dict")
public class BaseExceptionServerDictDO extends UuidIdentityEntity {
    private String name;
    private Date createTime;
    private Date updateTime;
    private String isDel;
    private String path;
    @Column(name = "name")
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    @Column(name = "create_time")
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    @Column(name = "update_time")
    public Date getUpdateTime() {
        return updateTime;
    }
    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }
    @Column(name = "is_del")
    public String getIsDel() {
        return isDel;
    }
    public void setIsDel(String isDel) {
        this.isDel = isDel;
    }
    @Column(name = "path_url")
    public String getPath() {
        return path;
    }
    public void setPath(String path) {
        this.path = path;
    }
}

+ 124 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/base/doctor/BaseDoctorSuggestDO.java

@ -0,0 +1,124 @@
package com.yihu.jw.entity.base.doctor;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yihu.jw.entity.UuidIdentityEntity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.util.Date;
@Entity
@Table(name = "base_doctor_suggest")
public class BaseDoctorSuggestDO extends UuidIdentityEntity {
    private String suggestType;
    private String suggestName;
    private String suggestContent;
    private String relationCode;
    private String relationType;
    private Date createTime;
    private String createUser;
    private String createUserName;
    private String doctor;
    private String doctorName;
    private String isDel;
    private String imgUrl;
    @Column(name = "suggest_type")
    public String getSuggestType() {
        return suggestType;
    }
    public void setSuggestType(String suggestType) {
        this.suggestType = suggestType;
    }
    @Column(name = "suggest_name")
    public String getSuggestName() {
        return suggestName;
    }
    public void setSuggestName(String suggestName) {
        this.suggestName = suggestName;
    }
    @Column(name = "suggest_content")
    public String getSuggestContent() {
        return suggestContent;
    }
    public void setSuggestContent(String suggestContent) {
        this.suggestContent = suggestContent;
    }
    @Column(name = "relation_code")
    public String getRelationCode() {
        return relationCode;
    }
    public void setRelationCode(String relationCode) {
        this.relationCode = relationCode;
    }
    @Column(name = "relation_type")
    public String getRelationType() {
        return relationType;
    }
    public void setRelationType(String relationType) {
        this.relationType = relationType;
    }
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    @Column(name = "create_time")
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    @Column(name = "create_user")
    public String getCreateUser() {
        return createUser;
    }
    public void setCreateUser(String createUser) {
        this.createUser = createUser;
    }
    @Column(name = "create_user_name")
    public String getCreateUserName() {
        return createUserName;
    }
    public void setCreateUserName(String createUserName) {
        this.createUserName = createUserName;
    }
    @Column(name = "doctor")
    public String getDoctor() {
        return doctor;
    }
    public void setDoctor(String doctor) {
        this.doctor = doctor;
    }
    @Column(name = "doctor_name")
    public String getDoctorName() {
        return doctorName;
    }
    public void setDoctorName(String doctorName) {
        this.doctorName = doctorName;
    }
    @Column(name = "is_del")
    public String getIsDel() {
        return isDel;
    }
    public void setIsDel(String isDel) {
        this.isDel = isDel;
    }
    @Column(name = "img_url")
    public String getImgUrl() {
        return imgUrl;
    }
    public void setImgUrl(String imgUrl) {
        this.imgUrl = imgUrl;
    }
}

+ 3 - 1
common/common-entity/src/main/java/com/yihu/jw/entity/base/im/ConsultTeamDo.java

@ -23,7 +23,9 @@ public class ConsultTeamDo extends UuidIdentityEntity {
	private Integer type;           //  1、15三师咨询,2、家庭医生咨询,
	// 6、患者名医咨询 7医生名医咨询 8续方咨询 9、16在线复诊咨询(居民直接咨询专家)
	// 10医生发起的求助 11思明区上门服务在线咨询
	// 13、互联网医院专家咨询
	// 13、互联网医院专家咨询, 20紧急救助咨询, 21上门辅导咨询, 22安防警报咨询
	// 23 新生儿在线咨询
	// 24 老人在线咨询
	private String patient;         // 提问者标识
	private String name;            // 患者姓名
	private Integer sex;            // 患者性别

+ 87 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/base/menu/BaseLinkDictDO.java

@ -0,0 +1,87 @@
package com.yihu.jw.entity.base.menu;
import com.yihu.jw.entity.UuidIdentityEntityWithCreateTime;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;
@Entity
@Table(name = "base_link_dict")
public class BaseLinkDictDO extends UuidIdentityEntityWithCreateTime {
    private String name;
    private String linkUrl;
    private String isShow;
    private Integer linkSort;
    private String isDel;
    private String status;
    private String showName;
    private String statusName;
    @Transient
    public String getShowName() {
        return showName;
    }
    public void setShowName(String showName) {
        this.showName = showName;
    }
    @Transient
    public String getStatusName() {
        return statusName;
    }
    public void setStatusName(String statusName) {
        this.statusName = statusName;
    }
    @Column(name = "status")
    public String getStatus() {
        return status;
    }
    public void setStatus(String status) {
        this.status = status;
    }
    @Column(name = "name")
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    @Column(name = "link_url")
    public String getLinkUrl() {
        return linkUrl;
    }
    public void setLinkUrl(String linkUrl) {
        this.linkUrl = linkUrl;
    }
    @Column(name = "is_show")
    public String getIsShow() {
        return isShow;
    }
    public void setIsShow(String isShow) {
        this.isShow = isShow;
    }
    @Column(name = "link_sort")
    public Integer getLinkSort() {
        return linkSort;
    }
    public void setLinkSort(Integer linkSort) {
        this.linkSort = linkSort;
    }
    @Column(name = "is_del")
    public String getIsDel() {
        return isDel;
    }
    public void setIsDel(String isDel) {
        this.isDel = isDel;
    }
}

+ 210 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/base/menu/BaseMenuDictDO.java

@ -0,0 +1,210 @@
package com.yihu.jw.entity.base.menu;
import com.yihu.jw.entity.UuidIdentityEntity;
import com.yihu.jw.entity.UuidIdentityEntityWithOperator;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;
@Entity
@Table(name = "base_menu_dict")
public class BaseMenuDictDO extends UuidIdentityEntityWithOperator {
    private String parentId;
    private String name;
    private Integer menuSort;
    private String icon;
    private String url;
    private String isShow;
    private Integer status;
    private String remark;
    private Integer menuLevel;
    private String functionType;
    private String menuLocation;
    private String menuImg;
    private String functionName;
    private String locaTionName;
    private String showName;
    private String statusName;
    private String parentName;
    private String isDel;
    private String bgImg;
    private String menuTitle;
    private String describtion;
    @Column(name = "bg_img")
    public String getBgImg() {
        return bgImg;
    }
    public void setBgImg(String bgImg) {
        this.bgImg = bgImg;
    }
    @Column(name = "menu_title")
    public String getMenuTitle() {
        return menuTitle;
    }
    public void setMenuTitle(String menuTitle) {
        this.menuTitle = menuTitle;
    }
    @Column(name = "describtion")
    public String getDescribtion() {
        return describtion;
    }
    public void setDescribtion(String describtion) {
        this.describtion = describtion;
    }
    public String getIsDel() {
        return isDel;
    }
    public void setIsDel(String isDel) {
        this.isDel = isDel;
    }
    @Transient
    public String getParentName() {
        return parentName;
    }
    public void setParentName(String parentName) {
        this.parentName = parentName;
    }
    @Transient
    public String getFunctionName() {
        return functionName;
    }
    public void setFunctionName(String functionName) {
        this.functionName = functionName;
    }
    @Transient
    public String getLocaTionName() {
        return locaTionName;
    }
    public void setLocaTionName(String locaTionName) {
        this.locaTionName = locaTionName;
    }
    @Transient
    public String getShowName() {
        return showName;
    }
    public void setShowName(String showName) {
        this.showName = showName;
    }
    @Transient
    public String getStatusName() {
        return statusName;
    }
    public void setStatusName(String statusName) {
        this.statusName = statusName;
    }
    @Column(name = "parent_id")
    public String getParentId() {
        return parentId;
    }
    public void setParentId(String parentId) {
        this.parentId = parentId;
    }
    @Column(name = "name")
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    @Column(name = "menu_sort")
    public Integer getMenuSort() {
        return menuSort;
    }
    public void setMenuSort(Integer menuSort) {
        this.menuSort = menuSort;
    }
    @Column(name = "icon")
    public String getIcon() {
        return icon;
    }
    public void setIcon(String icon) {
        this.icon = icon;
    }
    @Column(name = "url")
    public String getUrl() {
        return url;
    }
    public void setUrl(String url) {
        this.url = url;
    }
    @Column(name = "is_show")
    public String getIsShow() {
        return isShow;
    }
    public void setIsShow(String isShow) {
        this.isShow = isShow;
    }
    @Column(name = "status")
    public Integer getStatus() {
        return status;
    }
    public void setStatus(Integer status) {
        this.status = status;
    }
    @Column(name = "remark")
    public String getRemark() {
        return remark;
    }
    public void setRemark(String remark) {
        this.remark = remark;
    }
    @Column(name = "menu_level")
    public Integer getMenuLevel() {
        return menuLevel;
    }
    public void setMenuLevel(Integer menuLevel) {
        this.menuLevel = menuLevel;
    }
    @Column(name = "function_type")
    public String getFunctionType() {
        return functionType;
    }
    public void setFunctionType(String functionType) {
        this.functionType = functionType;
    }
    @Column(name = "menu_location")
    public String getMenuLocation() {
        return menuLocation;
    }
    public void setMenuLocation(String menuLocation) {
        this.menuLocation = menuLocation;
    }
    @Column(name = "menu_img")
    public String getMenuImg() {
        return menuImg;
    }
    public void setMenuImg(String menuImg) {
        this.menuImg = menuImg;
    }
}

+ 77 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/base/menu/BaseMenuShowDO.java

@ -0,0 +1,77 @@
package com.yihu.jw.entity.base.menu;
import com.yihu.jw.entity.UuidIdentityEntity;
import com.yihu.jw.entity.UuidIdentityEntityWithCreateTime;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
@Entity
@Table(name = "base_menu_show")
public class BaseMenuShowDO extends UuidIdentityEntityWithCreateTime {
    private String modelId;
    private String modelName;
    private String menuId;
    private String isDel;
    private Integer menuSort;
    private String styleCode;
    private String styleName;
    @Column(name = "model_id")
    public String getModelId() {
        return modelId;
    }
    public void setModelId(String modelId) {
        this.modelId = modelId;
    }
    @Column(name = "model_name")
    public String getModelName() {
        return modelName;
    }
    public void setModelName(String modelName) {
        this.modelName = modelName;
    }
    @Column(name = "menu_id")
    public String getMenuId() {
        return menuId;
    }
    public void setMenuId(String menuId) {
        this.menuId = menuId;
    }
    @Column(name = "is_del")
    public String getIsDel() {
        return isDel;
    }
    public void setIsDel(String isDel) {
        this.isDel = isDel;
    }
    @Column(name = "menu_sort")
    public Integer getMenuSort() {
        return menuSort;
    }
    public void setMenuSort(Integer menuSort) {
        this.menuSort = menuSort;
    }
    @Column(name = "style_code")
    public String getStyleCode() {
        return styleCode;
    }
    public void setStyleCode(String styleCode) {
        this.styleCode = styleCode;
    }
    @Column(name = "style_name")
    public String getStyleName() {
        return styleName;
    }
    public void setStyleName(String styleName) {
        this.styleName = styleName;
    }
}

+ 1 - 1
common/common-entity/src/main/java/com/yihu/jw/entity/base/module/SaasTypeModuleDO.java

@ -145,7 +145,7 @@ public class SaasTypeModuleDO extends UuidIdentityEntityWithOperator {
		this.isMust = isMust;
	}
	@Column(name = "level")
	@Column(name = "saas_level")
	public Integer getLevel() {
		return level;
	}

+ 22 - 1
common/common-entity/src/main/java/com/yihu/jw/entity/base/org/BaseOrgDO.java

@ -5,6 +5,7 @@ import com.yihu.jw.entity.UuidIdentityEntityWithOperator;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;
/**
@ -83,7 +84,7 @@ public class BaseOrgDO extends UuidIdentityEntityWithOperator {
	private String spell;
    /**
	 * 机构类型: 1. 等级医院2. 社区医院3.  养老机构
	 * 机构类型: 1. 等级医院2. 社区医院3.  养老机构 4.  托育机构
	 */
	private String type;
@ -174,6 +175,26 @@ public class BaseOrgDO extends UuidIdentityEntityWithOperator {
     * 机构logo
     */
    private String logo;
    private BaseOrgUserDO baseOrgUserDO;
    private String adminMobile;
    @Column(name = "admin_mobile")
    public String getAdminMobile() {
        return adminMobile;
    }
    public void setAdminMobile(String adminMobile) {
        this.adminMobile = adminMobile;
    }
    @Transient
    public BaseOrgUserDO getBaseOrgUserDO() {
        return baseOrgUserDO;
    }
    public void setBaseOrgUserDO(BaseOrgUserDO baseOrgUserDO) {
        this.baseOrgUserDO = baseOrgUserDO;
    }
    @Column(name = "credentials")
    public String getCredentials() {
        return credentials;

+ 84 - 1
common/common-entity/src/main/java/com/yihu/jw/entity/base/patient/BasePatientDO.java

@ -269,6 +269,17 @@ public class BasePatientDO extends UuidIdentityEntityWithOperator {
     * 医保卡号
     */
    private String ssc;
    private String medicareNumber;//医疗保险号
    private Integer archiveStatus;//档案状态【1.未管理 2.死亡 3.正常 4.高危】【必填】
    private Integer archiveType;// 档案类型 1老人 2新生儿
    private String archiveStatusName;
    private String archiveTypeName;
    private String bloodName;
    private String marriageName;
    private String latLon;//定位经纬度
    public String getCardType() {
        return cardType;
@ -758,7 +769,7 @@ public class BasePatientDO extends UuidIdentityEntityWithOperator {
        this.nationalName = nationalName;
    }
    @Transient
    @Column(name = "ssc")
    public String getSsc() {
        return ssc;
    }
@ -766,4 +777,76 @@ public class BasePatientDO extends UuidIdentityEntityWithOperator {
    public void setSsc(String ssc) {
        this.ssc = ssc;
    }
    @Column(name = "archive_status")
    public Integer getArchiveStatus() {
        return archiveStatus;
    }
    public void setArchiveStatus(Integer archiveStatus) {
        this.archiveStatus = archiveStatus;
    }
    @Column(name = "archive_type")
    public Integer getArchiveType() {
        return archiveType;
    }
    public void setArchiveType(Integer archiveType) {
        this.archiveType = archiveType;
    }
    @Column(name = "medicare_number")
    public String getMedicareNumber() {
        return medicareNumber;
    }
    public void setMedicareNumber(String medicareNumber) {
        this.medicareNumber = medicareNumber;
    }
    @Transient
    public String getArchiveStatusName() {
        return archiveStatusName;
    }
    public void setArchiveStatusName(String archiveStatusName) {
        this.archiveStatusName = archiveStatusName;
    }
    @Transient
    public String getArchiveTypeName() {
        return archiveTypeName;
    }
    public void setArchiveTypeName(String archiveTypeName) {
        this.archiveTypeName = archiveTypeName;
    }
    @Transient
    public String getBloodName() {
        return bloodName;
    }
    public void setBloodName(String bloodName) {
        this.bloodName = bloodName;
    }
    @Transient
    public String getMarriageName() {
        return marriageName;
    }
    public void setMarriageName(String marriageName) {
        this.marriageName = marriageName;
    }
    @Column(name = "lat_lon")
    public String getLatLon() {
        return latLon;
    }
    public void setLatLon(String latLon) {
        this.latLon = latLon;
    }
}

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

@ -17,6 +17,7 @@ public class BasePatientFamilyMemberDO extends UuidIdentityEntityWithOperator {
    private String familyMember;//家庭成员code',
    private Integer familyRelation;//家庭关系关系 1配偶 2父亲 3母亲 4公公 5婆婆 6岳父 7岳母 8子女',
    private Integer isAuthorize;//是否授权0:未授权,1:已授权,默认为1',
    private Integer isContacts;//是否是一键联系人 1是
    private Integer del;//删除标志(1正常,0删除)
    @Column(name = "patient")
@ -63,4 +64,13 @@ public class BasePatientFamilyMemberDO extends UuidIdentityEntityWithOperator {
    public void setDel(Integer del) {
        this.del = del;
    }
    @Column(name = "is_contacts")
    public Integer getIsContacts() {
        return isContacts;
    }
    public void setIsContacts(Integer isContacts) {
        this.isContacts = isContacts;
    }
}

+ 9 - 2
common/common-entity/src/main/java/com/yihu/jw/entity/base/patient/PatientMedicareCardDO.java

@ -78,7 +78,7 @@ public class PatientMedicareCardDO extends IntegerIdentityEntity {
           this.desc = desc;
       }
   }
    private String medicareNumber;
    /**
	 * 卡标识
	 */
@ -123,9 +123,16 @@ public class PatientMedicareCardDO extends IntegerIdentityEntity {
	 * 状态,0-解除绑定,1-绑定中
	 */
	private String del;
    @Column(name = "medicare_number")
    public String getMedicareNumber() {
        return medicareNumber;
    }
    public void setMedicareNumber(String medicareNumber) {
        this.medicareNumber = medicareNumber;
    }
	@Column(name = "code")
    @Column(name = "code")
    public String getCode() {
        return code;
    }

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

@ -22,16 +22,33 @@ public class ServicePackageDO extends UuidIdentityEntityWithCreateTime implement
    private String name;//'服务包名称'
    private String type;//服务类型(1养老服务、2医疗服务、3安防监护、4慢病管理)
    private String typeName;
    private BigDecimal price;//价格
    private Integer num;//服务项数量
    private String introduce;//'服务介绍'
    private String del;//'是否有效(1生效,0失效)'
    private String delName;
    private List<ServicePackageItemDO> packageItemDOList;//服务项
    private List<BaseOrgDO> orgDOList;//提供机构
    private List<BaseTeamDO> teamDOList;//服务团队
    private String teamNames;//服务团队
    private String orgNames;//服务机构
    @Transient
    public String getTypeName() {
        return typeName;
    }
    public void setTypeName(String typeName) {
        this.typeName = typeName;
    }
    @Transient
    public String getDelName() {
        return delName;
    }
    public void setDelName(String delName) {
        this.delName = delName;
    }
    @Column(name = "name")
    public String getName() {

+ 29 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/base/servicePackage/ServicePackageItemDO.java

@ -5,6 +5,7 @@ import com.yihu.jw.entity.UuidIdentityEntity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;
import java.math.BigDecimal;
/**
@ -23,9 +24,20 @@ public class ServicePackageItemDO extends UuidIdentityEntity implements java.io.
    private String orgName;//'机构名称'
    private String introduce;//'服务简介'
    private String del;//是否生效(1 生效,0 失效)
    private String delName;
    private String teamCode;//'服务团队code'
    private String teamName;//'服务团队名称'
    private String createTime;//
    private String dictId;//
    private String topicItem;//所属专题 security 安防专题
    @Column(name = "dict_id")
    public String getDictId() {
        return dictId;
    }
    public void setDictId(String dictId) {
        this.dictId = dictId;
    }
    @Column(name = "service_package_id")
    public String getServicePackageId() {
@ -134,4 +146,21 @@ public class ServicePackageItemDO extends UuidIdentityEntity implements java.io.
    public void setCreateTime(String createTime) {
        this.createTime = createTime;
    }
    @Transient
    public String getDelName() {
        return delName;
    }
    public void setDelName(String delName) {
        this.delName = delName;
    }
    @Column(name = "topic_item")
    public String getTopicItem() {
        return topicItem;
    }
    public void setTopicItem(String topicItem) {
        this.topicItem = topicItem;
    }
}

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

@ -10,6 +10,7 @@ import javax.persistence.Transient;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
 * 签约记录表
@ -33,11 +34,11 @@ public class ServicePackageSignRecordDO extends UuidIdentityEntityWithCreateTime
    private List<ServicePackageRecordDO> recordDOList;
    //社区医生
    private String doctorInfo;
    private List<Map<String,Object>> doctorList;
    //助老员
    private String helperInfo;
    private List<Map<String,Object>> helperList;
    //服务包
    private String packageInfo;
    private List<Map<String,Object>> packageList;
    public String getPatient() {
        return patient;
@ -111,29 +112,29 @@ public class ServicePackageSignRecordDO extends UuidIdentityEntityWithCreateTime
    }
    @Transient
    public String getDoctorInfo() {
        return doctorInfo;
    public List<Map<String,Object>> getDoctorList() {
        return doctorList;
    }
    public void setDoctorInfo(String doctorInfo) {
        this.doctorInfo = doctorInfo;
    public void setDoctorList(List<Map<String,Object>> doctorList) {
        this.doctorList = doctorList;
    }
    @Transient
    public String getHelperInfo() {
        return helperInfo;
    public List<Map<String,Object>> getHelperList() {
        return helperList;
    }
    public void setHelperInfo(String helperInfo) {
        this.helperInfo = helperInfo;
    public void setHelperList(List<Map<String,Object>> helperList) {
        this.helperList = helperList;
    }
    @Transient
    public String getPackageInfo() {
        return packageInfo;
    public List<Map<String,Object>> getPackageList() {
        return packageList;
    }
    public void setPackageInfo(String packageInfo) {
        this.packageInfo = packageInfo;
    public void setPackageList(List<Map<String,Object>> packageList) {
        this.packageList = packageList;
    }
}

+ 49 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/base/system/BaseInterfaceDictDO.java

@ -0,0 +1,49 @@
package com.yihu.jw.entity.base.system;
import com.yihu.jw.entity.UuidIdentityEntityWithCreateTime;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
@Entity
@Table(name = "base_interface_monitor")
public class BaseInterfaceDictDO extends UuidIdentityEntityWithCreateTime {
    private String interfaceType;
    private String interfaceTypeName;
    private String isDel;
    private String interfaceName;
    @Column(name = "interface_type")
    public String getInterfaceType() {
        return interfaceType;
    }
    public void setInterfaceType(String interfaceType) {
        this.interfaceType = interfaceType;
    }
    @Column(name = "interface_type_name")
    public String getInterfaceTypeName() {
        return interfaceTypeName;
    }
    public void setInterfaceTypeName(String interfaceTypeName) {
        this.interfaceTypeName = interfaceTypeName;
    }
    @Column(name = "is_del")
    public String getIsDel() {
        return isDel;
    }
    public void setIsDel(String isDel) {
        this.isDel = isDel;
    }
    @Column(name = "interface_name")
    public String getInterfaceName() {
        return interfaceName;
    }
    public void setInterfaceName(String interfaceName) {
        this.interfaceName = interfaceName;
    }
}

+ 77 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/base/system/BaseInterfaceMonitorDO.java

@ -0,0 +1,77 @@
package com.yihu.jw.entity.base.system;
import com.yihu.jw.entity.UuidIdentityEntity;
import com.yihu.jw.entity.UuidIdentityEntityWithOperator;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.util.Date;
@Entity
@Table(name = "base_interface_monitor")
public class BaseInterfaceMonitorDO extends UuidIdentityEntityWithOperator {
    private String source;
    private String sourceName;
    private Integer type;
    private String typeName;
    private Integer time;
    private Date startTime;
    private Date endTime;
    @Column(name = "source")
    public String getSource() {
        return source;
    }
    public void setSource(String source) {
        this.source = source;
    }
    @Column(name = "source_name")
    public String getSourceName() {
        return sourceName;
    }
    public void setSourceName(String sourceName) {
        this.sourceName = sourceName;
    }
    @Column(name = "type")
    public Integer getType() {
        return type;
    }
    public void setType(Integer type) {
        this.type = type;
    }
    @Column(name = "type_name")
    public String getTypeName() {
        return typeName;
    }
    public void setTypeName(String typeName) {
        this.typeName = typeName;
    }
    @Column(name = "time")
    public Integer getTime() {
        return time;
    }
    public void setTime(Integer time) {
        this.time = time;
    }
    @Column(name = "start_time")
    public Date getStartTime() {
        return startTime;
    }
    public void setStartTime(Date startTime) {
        this.startTime = startTime;
    }
    @Column(name = "end_time")
    public Date getEndTime() {
        return endTime;
    }
    public void setEndTime(Date endTime) {
        this.endTime = endTime;
    }
}

+ 40 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/base/system/BaseSourceDictDO.java

@ -0,0 +1,40 @@
package com.yihu.jw.entity.base.system;
import com.yihu.jw.entity.UuidIdentityEntityWithCreateTime;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
@Entity
@Table(name = "base_source_dict")
public class BaseSourceDictDO extends UuidIdentityEntityWithCreateTime {
    private String source;
    private String sourceName;
    private String isDel;
    @Column(name = "source")
    public String getSource() {
        return source;
    }
    public void setSource(String source) {
        this.source = source;
    }
    @Column(name = "source_name")
    public String getSourceName() {
        return sourceName;
    }
    public void setSourceName(String sourceName) {
        this.sourceName = sourceName;
    }
    @Column(name = "is_del")
    public String getIsDel() {
        return isDel;
    }
    public void setIsDel(String isDel) {
        this.isDel = isDel;
    }
}

+ 1 - 1
common/common-entity/src/main/java/com/yihu/jw/entity/base/system/SystemDictEntryDO.java

@ -27,7 +27,7 @@ public class SystemDictEntryDO extends UuidIdentityEntity {
	//排序
	private Integer sort;
	//备注
	private String remark;
	private String remark;//dictCode为service_item时 该字段为服务项所对应专题
	@Column(name = "dict_code", nullable = false, length = 50)
	public String getDictCode() {

+ 69 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/care/apply/PatientBedApplyDo.java

@ -0,0 +1,69 @@
package com.yihu.jw.entity.care.apply;
import com.yihu.jw.entity.UuidIdentityEntityWithOperator;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
 * Created by Bing on 2021/4/8.
 */
@Entity
@Table(name="base_patient_bed_apply")
public class PatientBedApplyDo extends UuidIdentityEntityWithOperator {
    private String patient;
    private String patientName;
    private String idcard;
    private String orgCode;
    private String orgName;
    private Integer status; //状态 -1取消 0已完成 1未评估 2未分配服务包
    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 getIdcard() {
        return idcard;
    }
    public void setIdcard(String idcard) {
        this.idcard = idcard;
    }
    public String getOrgCode() {
        return orgCode;
    }
    public void setOrgCode(String orgCode) {
        this.orgCode = orgCode;
    }
    public String getOrgName() {
        return orgName;
    }
    public void setOrgName(String orgName) {
        this.orgName = orgName;
    }
    public Integer getStatus() {
        return status;
    }
    public void setStatus(Integer status) {
        this.status = status;
    }
}

+ 11 - 19
common/common-entity/src/main/java/com/yihu/jw/entity/care/archive/ArchiveDO.java

@ -18,10 +18,10 @@ public class ArchiveDO extends UuidIdentityEntity {
    private String sickName;//姓名
    private String archiveOperatorName;// 建档人姓名
    private String doctorCode;// 医生code
    private int archiveStatus;//档案状态【1.未管理 2.死亡 3.正常 4.高危】【必填】
    private Date archiveTime;//建档时间
    private int signStatus;// 签约状态【0未签约,1已签约】
    private Integer signStatus;// 签约状态【0未签约,1已签约】
    private String idcard;//身份证
    private Date createTime;
    public String getPatient() {
        return patient;
@ -31,14 +31,6 @@ public class ArchiveDO extends UuidIdentityEntity {
        this.patient = patient;
    }
    public int getSignStatus() {
        return signStatus;
    }
    public void setSignStatus(int signStatus) {
        this.signStatus = signStatus;
    }
    public String getSickName() {
        return sickName;
    }
@ -63,21 +55,21 @@ public class ArchiveDO extends UuidIdentityEntity {
        this.doctorCode = doctorCode;
    }
    public int getArchiveStatus() {
        return archiveStatus;
    public Integer getSignStatus() {
        return signStatus;
    }
    public void setArchiveStatus(int archiveStatus) {
        this.archiveStatus = archiveStatus;
    public void setSignStatus(Integer signStatus) {
        this.signStatus = signStatus;
    }
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    public Date getArchiveTime() {
        return archiveTime;
    public Date getCreateTime() {
        return createTime;
    }
    public void setArchiveTime(Date archiveTime) {
        this.archiveTime = archiveTime;
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    public String getIdcard() {

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

@ -0,0 +1,355 @@
package com.yihu.jw.entity.care.assistance;
import com.yihu.jw.entity.UuidIdentityEntityWithOperator;
import com.yihu.jw.entity.care.securitymonitoring.EmergencyWarnConclusionDO;
import netscape.javascript.JSObject;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;
import java.util.Date;
/**
 * Created by Bing on 2021/4/12.
 */
@Entity
@Table(name="base_emergency_assistance_order")
public class EmergencyAssistanceDO extends UuidIdentityEntityWithOperator {
    /**
     * 工单状态:
     */
    public enum Status {
        ErrorWarning(-2, "误报警"),
        cancel(-1, "已取消"),
        complete(0, "已完成"),
        apply(1, "申请中");
        private Integer type;
        private String desc;
        Status(Integer type, String desc) {
            this.type = type;
            this.desc = desc;
        }
        public Integer getType() {
            return type;
        }
        public void setType(Integer type) {
            this.type = type;
        }
    }
    private String patient; //发起救助的居民id
    private String patientName; //发起救助的居民姓名
    private String patientPhone; //救助居民电话
    private String patientIdcard; //救助居民身份证
    private String proxyPatient; //代理发起工单的居民code,替父母,孩子等发起工单
    private String proxyPatientName; //代理发起工单的居民code,替父母,孩子等发起工单
    private String proxyPatientPhone; //代理发起工单的居民联系电话
    private String orgCode; //救助居民所在机构code
    private String orgName; //救助居民所在机构名称
    private String serveAddress;
    private String serveLat; //居民当前定位地址纬度
    private String serveLon; //居民当前定位地址经度
    private String sessionId; //会话id
    private String doctor; //医生code
    private String doctorName; //医生name
    private String doctorAddress;
    private String doctorLat; //医生当定位地址纬度
    private String doctorLon; //医生当前定位地址经度
    private String conclusion; //服务完成笔记
    private String conclusionImg; //服务相关附件
    private Integer status;
    private Date completeTime;//完成时间
    private String teamCode;
    private Integer type; //发起类型(1本人发起 2家人待预约 3医生代预约)
    private Integer orderSource;//工单发起来源状态 1APP 2手环 3居家报警
    private Integer emergencyCancel;// 紧急预警工单误报警原因 字典emergency_cancel
    private String sendMessage;//
    private Integer patientAge;
    private String patientPhoto;
    private Integer patientSex;
    private double distance;//医生与患者距离 单位km
    private String otherDoctorDistance;
    /**
     * 服务小结
     */
    private EmergencyWarnConclusionDO emergencyWarnConclusionDO;
    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 getPatientPhone() {
        return patientPhone;
    }
    public void setPatientPhone(String patientPhone) {
        this.patientPhone = patientPhone;
    }
    public String getPatientIdcard() {
        return patientIdcard;
    }
    public void setPatientIdcard(String patientIdcard) {
        this.patientIdcard = patientIdcard;
    }
    public String getOrgCode() {
        return orgCode;
    }
    public void setOrgCode(String orgCode) {
        this.orgCode = orgCode;
    }
    public String getOrgName() {
        return orgName;
    }
    public void setOrgName(String orgName) {
        this.orgName = orgName;
    }
    public String getServeLat() {
        return serveLat;
    }
    public void setServeLat(String serveLat) {
        this.serveLat = serveLat;
    }
    public String getServeLon() {
        return serveLon;
    }
    public void setServeLon(String serveLon) {
        this.serveLon = serveLon;
    }
    public String getSessionId() {
        return sessionId;
    }
    public void setSessionId(String sessionId) {
        this.sessionId = sessionId;
    }
    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 getDoctorLat() {
        return doctorLat;
    }
    public void setDoctorLat(String doctorLat) {
        this.doctorLat = doctorLat;
    }
    public String getDoctorLon() {
        return doctorLon;
    }
    public void setDoctorLon(String doctorLon) {
        this.doctorLon = doctorLon;
    }
    public String getConclusion() {
        return conclusion;
    }
    public void setConclusion(String conclusion) {
        this.conclusion = conclusion;
    }
    public String getConclusionImg() {
        return conclusionImg;
    }
    public void setConclusionImg(String conclusionImg) {
        this.conclusionImg = conclusionImg;
    }
    public Integer getStatus() {
        return status;
    }
    public void setStatus(Integer status) {
        this.status = status;
    }
    public String getServeAddress() {
        return serveAddress;
    }
    public void setServeAddress(String serveAddress) {
        this.serveAddress = serveAddress;
    }
    public String getDoctorAddress() {
        return doctorAddress;
    }
    public void setDoctorAddress(String doctorAddress) {
        this.doctorAddress = doctorAddress;
    }
    public Date getCompleteTime() {
        return completeTime;
    }
    public void setCompleteTime(Date completeTime) {
        this.completeTime = completeTime;
    }
    public String getTeamCode() {
        return teamCode;
    }
    public void setTeamCode(String teamCode) {
        this.teamCode = teamCode;
    }
    public String getProxyPatient() {
        return proxyPatient;
    }
    public void setProxyPatient(String proxyPatient) {
        this.proxyPatient = proxyPatient;
    }
    public String getProxyPatientName() {
        return proxyPatientName;
    }
    public void setProxyPatientName(String proxyPatientName) {
        this.proxyPatientName = proxyPatientName;
    }
    public String getProxyPatientPhone() {
        return proxyPatientPhone;
    }
    public void setProxyPatientPhone(String proxyPatientPhone) {
        this.proxyPatientPhone = proxyPatientPhone;
    }
    public Integer getType() {
        return type;
    }
    public void setType(Integer type) {
        this.type = type;
    }
    @Transient
    public String getSendMessage() {
        return sendMessage;
    }
    public void setSendMessage(String sendMessage) {
        this.sendMessage = sendMessage;
    }
    @Transient
    public Integer getPatientAge() {
        return patientAge;
    }
    public void setPatientAge(Integer patientAge) {
        this.patientAge = patientAge;
    }
    @Transient
    public String getPatientPhoto() {
        return patientPhoto;
    }
    public void setPatientPhoto(String patientPhoto) {
        this.patientPhoto = patientPhoto;
    }
    @Transient
    public Integer getPatientSex() {
        return patientSex;
    }
    public void setPatientSex(Integer patientSex) {
        this.patientSex = patientSex;
    }
    @Transient
    public double getDistance() {
        return distance;
    }
    public void setDistance(double distance) {
        this.distance = distance;
    }
    @Transient
    public String getOtherDoctorDistance() {
        return otherDoctorDistance;
    }
    public void setOtherDoctorDistance(String otherDoctorDistance) {
        this.otherDoctorDistance = otherDoctorDistance;
    }
    public Integer getOrderSource() {
        return orderSource;
    }
    public void setOrderSource(Integer orderSource) {
        this.orderSource = orderSource;
    }
    @Transient
    public EmergencyWarnConclusionDO getEmergencyWarnConclusionDO() {
        return emergencyWarnConclusionDO;
    }
    public void setEmergencyWarnConclusionDO(EmergencyWarnConclusionDO emergencyWarnConclusionDO) {
        this.emergencyWarnConclusionDO = emergencyWarnConclusionDO;
    }
    public Integer getEmergencyCancel() {
        return emergencyCancel;
    }
    public void setEmergencyCancel(Integer emergencyCancel) {
        this.emergencyCancel = emergencyCancel;
    }
}

+ 155 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/care/common/BusinessSysDictDO.java

@ -0,0 +1,155 @@
package com.yihu.jw.entity.care.common;
import com.yihu.jw.entity.UuidIdentityEntityWithTime;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
 * Created with IntelliJ IDEA.
 *
 * @Author: yeshijie
 * @Date: 2021/5/10
 * @Description:
 */
@Entity
@Table(name = "base_business_sys_dict")
public class BusinessSysDictDO extends UuidIdentityEntityWithTime {
    /**
     * 所属字典
     */
    private String dictName;
    /**
     * 字典项代码
     */
    private String dictCode;
    /**
     * 字典项所属值
     */
    private String dictValue;
    /**
     * 拼音缩写码
     */
    private String pyCode;
    /**
     * 排序
     */
    private Integer sort;
    private String imgUrl;
    private String modelName;
    /**
     * 备用字段1,托育字典服务项的时候表示费用
     */
    private String ext1;
    /**
     * 备用字段2
     */
    private String ext2;
    /**
     * 归属机构
     */
    private String orgCode;
    private String orgName;
    @Column(name = "model_name")
    public String getModelName() {
        return modelName;
    }
    public void setModelName(String modelName) {
        this.modelName = modelName;
    }
    @Column(name = "img_url")
    public String getImgUrl() {
        return imgUrl;
    }
    public void setImgUrl(String imgUrl) {
        this.imgUrl = imgUrl;
    }
    @Column(name = "dict_name")
    public String getDictName() {
        return dictName;
    }
    public void setDictName(String dictName) {
        this.dictName = dictName;
    }
    @Column(name = "dict_code")
    public String getDictCode() {
        return dictCode;
    }
    public void setDictCode(String dictCode) {
        this.dictCode = dictCode;
    }
    @Column(name = "dict_value")
    public String getDictValue() {
        return dictValue;
    }
    public void setDictValue(String dictValue) {
        this.dictValue = dictValue;
    }
    @Column(name = "py_code")
    public String getPyCode() {
        return pyCode;
    }
    public void setPyCode(String pyCode) {
        this.pyCode = pyCode;
    }
    @Column(name = "sort")
    public Integer getSort() {
        return sort;
    }
    public void setSort(Integer sort) {
        this.sort = sort;
    }
    @Column(name = "ext1")
    public String getExt1() {
        return ext1;
    }
    public void setExt1(String ext1) {
        this.ext1 = ext1;
    }
    @Column(name = "ext2")
    public String getExt2() {
        return ext2;
    }
    public void setExt2(String ext2) {
        this.ext2 = ext2;
    }
    @Column(name = "org_code")
    public String getOrgCode() {
        return orgCode;
    }
    public void setOrgCode(String orgCode) {
        this.orgCode = orgCode;
    }
    @Column(name = "org_name")
    public String getOrgName() {
        return orgName;
    }
    public void setOrgName(String orgName) {
        this.orgName = orgName;
    }
}

+ 83 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/care/common/DictDietDO.java

@ -0,0 +1,83 @@
package com.yihu.jw.entity.care.common;
import com.yihu.jw.entity.UuidIdentityEntity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;
/**
 * Created with IntelliJ IDEA.
 *
 * @Author: yeshijie
 * @Date: 2021/5/8
 * @Description: 饮食字典
 */
@Entity
@Table(name="dict_diet")
public class DictDietDO extends UuidIdentityEntity {
    /**
     * '食物名称'
     */
    private String name;
    /**
     * '食物分类'
     */
    private String type;
    private String typeName;
    /**
     *'热量(千卡)'
     */
    private String heat;
    /**
     *'可食部分(克)'
     */
    private String ediblePart;
    @Column(name = "name")
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    @Column(name = "type")
    public String getType() {
        return type;
    }
    public void setType(String type) {
        this.type = type;
    }
    @Transient
    public String getTypeName() {
        return typeName;
    }
    public void setTypeName(String typeName) {
        this.typeName = typeName;
    }
    @Column(name = "heat")
    public String getHeat() {
        return heat;
    }
    public void setHeat(String heat) {
        this.heat = heat;
    }
    @Column(name = "edible_part")
    public String getEdiblePart() {
        return ediblePart;
    }
    public void setEdiblePart(String ediblePart) {
        this.ediblePart = ediblePart;
    }
}

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

@ -0,0 +1,66 @@
package com.yihu.jw.entity.care.common;
import com.yihu.jw.entity.UuidIdentityEntityWithCreateTime;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
 * Created with IntelliJ IDEA.
 *
 * @Author: yeshijie
 * @Date: 2021/6/29
 * @Description:
 */
@Entity
@Table(name="base_wx_pay_http_log")
public class WxPayHttpLogDO extends UuidIdentityEntityWithCreateTime {
    /**
     * 类型1 统一下单 2支付回调
     */
    private String type;
    /**
     * 订单号
     */
    private String orderNo;
    private String orderRes;
    private String orderReq;
    @Column(name = "type")
    public String getType() {
        return type;
    }
    public void setType(String type) {
        this.type = type;
    }
    @Column(name = "order_no")
    public String getOrderNo() {
        return orderNo;
    }
    public void setOrderNo(String orderNo) {
        this.orderNo = orderNo;
    }
    @Column(name = "order_res")
    public String getOrderRes() {
        return orderRes;
    }
    public void setOrderRes(String orderRes) {
        this.orderRes = orderRes;
    }
    @Column(name = "order_req")
    public String getOrderReq() {
        return orderReq;
    }
    public void setOrderReq(String orderReq) {
        this.orderReq = orderReq;
    }
}

+ 40 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/care/contacts/BasePatientContactsOrgDO.java

@ -0,0 +1,40 @@
package com.yihu.jw.entity.care.contacts;
import com.yihu.jw.entity.UuidIdentityEntity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
 * Created with IntelliJ IDEA.
 *
 * @Author: yeshijie
 * @Date: 2021/5/7
 * @Description:
 */
@Entity
@Table(name="base_patient_contacts_org")
public class BasePatientContactsOrgDO extends UuidIdentityEntity {
    private String patient;
    private String orgCode;
    @Column(name = "patient")
    public String getPatient() {
        return patient;
    }
    public void setPatient(String patient) {
        this.patient = patient;
    }
    @Column(name = "org_code")
    public String getOrgCode() {
        return orgCode;
    }
    public void setOrgCode(String orgCode) {
        this.orgCode = orgCode;
    }
}

+ 104 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/care/course/CourseCatalogueDO.java

@ -0,0 +1,104 @@
package com.yihu.jw.entity.care.course;
import com.yihu.jw.entity.UuidIdentityEntityWithTime;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;
/**
 * Created with IntelliJ IDEA.
 *
 * @Author: yeshijie
 * @Date: 2021/5/10
 * @Description: 课程目录表
 */
@Entity
@Table(name="base_course_catalogue")
public class CourseCatalogueDO extends UuidIdentityEntityWithTime {
    /**
     * 课程id
     */
    private String courserId;
    /**
     * 目录名称
     */
    private String name;
    /**
     * 小结类型 2视频 3文本
     */
    private String type;
    private String typeName;
    /**
     * 小结内容
     */
    private String content;
    /**
     * 视频url
     */
    private String videoUrl;
    /**
     * 排序字段
     */
    private Integer sort;
    @Column(name = "course_id")
    public String getCourserId() {
        return courserId;
    }
    public void setCourserId(String courserId) {
        this.courserId = courserId;
    }
    @Column(name = "name")
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    @Column(name = "type")
    public String getType() {
        return type;
    }
    public void setType(String type) {
        this.type = type;
    }
    @Transient
    public String getTypeName() {
        return typeName;
    }
    public void setTypeName(String typeName) {
        this.typeName = typeName;
    }
    @Column(name = "content")
    public String getContent() {
        return content;
    }
    public void setContent(String content) {
        this.content = content;
    }
    @Column(name = "video_url")
    public String getVideoUrl() {
        return videoUrl;
    }
    public void setVideoUrl(String videoUrl) {
        this.videoUrl = videoUrl;
    }
    @Column(name = "sort")
    public Integer getSort() {
        return sort;
    }
    public void setSort(Integer sort) {
        this.sort = sort;
    }
}

+ 63 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/care/course/CourseCatalogueReadTimeDO.java

@ -0,0 +1,63 @@
package com.yihu.jw.entity.care.course;
import javax.persistence.Column;
/***
 * @ClassName: CourseCatalogueReadTimeDO
 * @Description: 记录用户阅读课程时长
 * @Auther: shi kejing
 * @Date: 2021/5/19 9:00
 */
public class CourseCatalogueReadTimeDO {
    private String id;
    private String patient;
    private String courseCatalogueId;
    private String courseId;
    private String readTime;
    @Column(name = "id")
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getPatient() {
        return patient;
    }
    public void setPatient(String patient) {
        this.patient = patient;
    }
    public String getCourseCatalogueId() {
        return courseCatalogueId;
    }
    public void setCourseCatalogueId(String courseCatalogueId) {
        this.courseCatalogueId = courseCatalogueId;
    }
    public String getCourseId() {
        return courseId;
    }
    public void setCourseId(String courseId) {
        this.courseId = courseId;
    }
    public String getReadTime() {
        return readTime;
    }
    public void setReadTime(String readTime) {
        this.readTime = readTime;
    }
}

+ 0 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/care/course/CourseDO.java


部分文件因为文件数量过多而无法显示