Преглед на файлове

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

wangzhinan преди 2 години
родител
ревизия
930dcb8453
променени са 100 файла, в които са добавени 6400 реда и са изтрити 668 реда
  1. 13 0
      business/base-service/src/main/java/com/yihu/jw/dict/dao/BaseCopywritingDao.java
  2. 76 0
      business/base-service/src/main/java/com/yihu/jw/dict/service/BaseCopywritingService.java
  3. 35 0
      business/base-service/src/main/java/com/yihu/jw/healthUpload/service/HealthReportingFrequencyService.java
  4. 43 0
      business/base-service/src/main/java/com/yihu/jw/hospital/booking/dao/PatientReservationDao.java
  5. 240 0
      business/base-service/src/main/java/com/yihu/jw/hospital/booking/service/PatientReservationService.java
  6. 3 1
      business/base-service/src/main/java/com/yihu/jw/hospital/message/dao/SystemMessageDao.java
  7. 12 0
      business/base-service/src/main/java/com/yihu/jw/hospital/prescription/dao/BaseDrugsPlanDao.java
  8. 17 0
      business/base-service/src/main/java/com/yihu/jw/hospital/prescription/dao/BaseDrugsPlanDetailDao.java
  9. 1 2
      business/base-service/src/main/java/com/yihu/jw/hospital/prescription/dao/OauthCaConfigDao.java
  10. 1 2
      business/base-service/src/main/java/com/yihu/jw/hospital/prescription/dao/OauthYlzConfigDao.java
  11. 0 1
      business/base-service/src/main/java/com/yihu/jw/hospital/prescription/dao/PrescriptionInfoDao.java
  12. 1 2
      business/base-service/src/main/java/com/yihu/jw/hospital/prescription/dao/SfConfigDao.java
  13. 182 0
      business/base-service/src/main/java/com/yihu/jw/hospital/prescription/service/DrugsPlanService.java
  14. 0 43
      business/base-service/src/main/java/com/yihu/jw/hospital/prescription/service/PrescriptionExpressageService.java
  15. 1 1
      business/base-service/src/main/java/com/yihu/jw/hospital/prescription/service/PrescriptionService.java
  16. 1 1
      business/base-service/src/main/java/com/yihu/jw/hospital/prescription/service/XzyyPrescriptionService.java
  17. 0 12
      business/base-service/src/main/java/com/yihu/jw/hospital/prescription/service/entrance/HcyyEntranceService.java
  18. 1453 0
      business/base-service/src/main/java/com/yihu/jw/hospital/prescription/service/entrance/JwSmjkEntranceService.java
  19. 118 0
      business/base-service/src/main/java/com/yihu/jw/hospital/prescription/vo/GuahaoDoctor.java
  20. 12 0
      business/base-service/src/main/java/com/yihu/jw/hospital/record/dao/HospitalPatientInpatientRecordDao.java
  21. 14 0
      business/base-service/src/main/java/com/yihu/jw/hospital/record/dao/HospitalPatientOutpatientRecordDao.java
  22. 14 0
      business/base-service/src/main/java/com/yihu/jw/hospital/record/service/HospitalPatientInpatientRecordService.java
  23. 1 1
      business/base-service/src/main/java/com/yihu/jw/hospital/ykyy/service/YkyyService.java
  24. 13 0
      business/base-service/src/main/java/com/yihu/jw/login/dao/BaseLoginAppDao.java
  25. 16 0
      business/base-service/src/main/java/com/yihu/jw/login/dao/BaseLoginComponentDao.java
  26. 71 0
      business/base-service/src/main/java/com/yihu/jw/login/service/BaseLoginAppService.java
  27. 187 0
      business/base-service/src/main/java/com/yihu/jw/message/service/WxMessageUtil.java
  28. 1 1
      business/base-service/src/main/java/com/yihu/jw/order/pay/ylz/YlzPayService.java
  29. 13 0
      business/base-service/src/main/java/com/yihu/jw/patient/dao/BaseIdcardRecordDao.java
  30. 17 0
      business/base-service/src/main/java/com/yihu/jw/processGuidance/dao/BasePatientProcessGuidanceLogDao.java
  31. 11 0
      business/base-service/src/main/java/com/yihu/jw/processGuidance/dao/BaseProcessGuidanceBookingDao.java
  32. 4 0
      business/base-service/src/main/java/com/yihu/jw/processGuidance/dao/BaseProcessGuidanceDeptDao.java
  33. 4 0
      business/base-service/src/main/java/com/yihu/jw/processGuidance/dao/BaseProcessGuidanceNodeAppDao.java
  34. 5 0
      business/base-service/src/main/java/com/yihu/jw/processGuidance/dao/BaseProcessGuidancePresetDao.java
  35. 14 0
      business/base-service/src/main/java/com/yihu/jw/processGuidance/dao/BaseProcessGuidanceThirdPushLogDao.java
  36. 150 0
      business/base-service/src/main/java/com/yihu/jw/processGuidance/service/ProcessGuidanceService.java
  37. 32 0
      business/base-service/src/main/java/com/yihu/jw/wechat/service/WechatUtilService.java
  38. 1 2
      business/base-service/src/main/java/com/yihu/jw/wlyy/dao/OauthWlyyConfigDao.java
  39. 1 1
      business/base-service/src/main/java/com/yihu/jw/wlyy/wlyyhttp/WlyyHttpService.java
  40. 930 0
      common/common-entity/mysql关键字大全.sql
  41. 0 298
      common/common-entity/src/main/java/com/yihu/jw/entity/archives/PatientArchivesDO.java
  42. 0 99
      common/common-entity/src/main/java/com/yihu/jw/entity/archives/PatientArchivesInfoDO.java
  43. 1 1
      common/common-entity/src/main/java/com/yihu/jw/entity/ca/OauthCaConfigDO.java
  44. 56 0
      common/common-entity/src/main/java/com/yihu/jw/entity/base/dict/BaseCopywritingDO.java
  45. 67 0
      common/common-entity/src/main/java/com/yihu/jw/entity/base/login/BaseLoginAppDO.java
  46. 77 0
      common/common-entity/src/main/java/com/yihu/jw/entity/base/login/BaseLoginComponentDO.java
  47. 97 0
      common/common-entity/src/main/java/com/yihu/jw/entity/base/patient/BaseIdcardRecordDO.java
  48. 87 0
      common/common-entity/src/main/java/com/yihu/jw/entity/base/processGuidance/BasePatientProcessGuidanceLogDO.java
  49. 126 0
      common/common-entity/src/main/java/com/yihu/jw/entity/base/processGuidance/BaseProcessGuidanceBookingDO.java
  50. 22 0
      common/common-entity/src/main/java/com/yihu/jw/entity/base/processGuidance/BaseProcessGuidancePresetDO.java
  51. 67 0
      common/common-entity/src/main/java/com/yihu/jw/entity/base/processGuidance/BaseProcessGuidanceThirdPushLogDO.java
  52. 1 1
      common/common-entity/src/main/java/com/yihu/jw/entity/sf/SfConfigDO.java
  53. 1 1
      common/common-entity/src/main/java/com/yihu/jw/entity/child/BaseChildManage.java
  54. 442 0
      common/common-entity/src/main/java/com/yihu/jw/entity/hospital/booking/PatientReservation.java
  55. 49 0
      common/common-entity/src/main/java/com/yihu/jw/entity/hospital/booking/ReservationHospitalDept.java
  56. 3 1
      common/common-entity/src/main/java/com/yihu/jw/entity/hospital/message/SystemMessageDO.java
  57. 101 0
      common/common-entity/src/main/java/com/yihu/jw/entity/hospital/prescription/BaseDrugsPlanDO.java
  58. 385 0
      common/common-entity/src/main/java/com/yihu/jw/entity/hospital/prescription/BaseDrugsPlanDetailDO.java
  59. 198 0
      common/common-entity/src/main/java/com/yihu/jw/entity/hospital/record/HospitalPatientInpatientRecordDO.java
  60. 177 0
      common/common-entity/src/main/java/com/yihu/jw/entity/hospital/record/HospitalPatientOutpatientRecordDO.java
  61. 0 143
      common/common-entity/src/main/java/com/yihu/jw/entity/myFamily/PatientApplyLog.java
  62. 1 1
      common/common-entity/src/main/java/com/yihu/jw/entity/dimension/DimensionDo.java
  63. 1 1
      common/common-entity/src/main/java/com/yihu/jw/entity/dimension/DimensionQuotaDo.java
  64. 1 1
      common/common-entity/src/main/java/com/yihu/jw/entity/job/QuartzJobConfig.java
  65. 1 1
      common/common-entity/src/main/java/com/yihu/jw/entity/job/QuartzJobLog.java
  66. 1 1
      common/common-entity/src/main/java/com/yihu/jw/entity/interfacemg/BaseThirdUserDO.java
  67. 1 1
      common/common-entity/src/main/java/com/yihu/jw/entity/interfacemg/BaseThirdUserInterfaceDO.java
  68. 1 1
      common/common-entity/src/main/java/com/yihu/jw/entity/interfacemg/BaseThirdUserInterfaceLogDO.java
  69. 1 1
      common/common-entity/src/main/java/com/yihu/jw/entity/interfacemg/BaseThirdUserInterfaceStandardDO.java
  70. 1 1
      common/common-entity/src/main/java/com/yihu/jw/entity/wlyyinfo/OauthWlyyConfigDO.java
  71. 1 1
      common/common-entity/src/main/java/com/yihu/jw/entity/wlyyinfo/WechatTag.java
  72. 1 2
      common/common-entity/src/main/java/com/yihu/jw/entity/ylzinfo/OauthYlzConfigDO.java
  73. 355 0
      common/common-rest-model/src/main/java/com/yihu/jw/restmodel/web/endpoint/BaseRestEndPoint.java
  74. 1 0
      common/common-util/src/main/java/com/yihu/jw/util/date/DateUtil.java
  75. 1 2
      server/svr-authentication/src/main/java/com/yihu/jw/security/dao/OauthCaConfigDao.java
  76. 1 2
      server/svr-authentication/src/main/java/com/yihu/jw/security/dao/OauthWlyyConfigDao.java
  77. 1 2
      server/svr-authentication/src/main/java/com/yihu/jw/security/dao/OauthYlzConfigDao.java
  78. 30 0
      server/svr-authentication/src/main/java/com/yihu/jw/security/dao/patient/WxAppletsAccessTokenDao.java
  79. 2 2
      server/svr-authentication/src/main/java/com/yihu/jw/security/oauth2/provider/WlyyTokenGranter.java
  80. 20 1
      server/svr-authentication/src/main/java/com/yihu/jw/security/oauth2/provider/endpoint/WlyyLoginEndpoint.java
  81. 1 1
      server/svr-authentication/src/main/java/com/yihu/jw/security/service/OauthCaConfigSerivce.java
  82. 1 2
      server/svr-authentication/src/main/java/com/yihu/jw/security/service/OauthWlyyConfigService.java
  83. 1 1
      server/svr-authentication/src/main/java/com/yihu/jw/security/service/OauthYlzConfigService.java
  84. 125 0
      server/svr-authentication/src/main/java/com/yihu/jw/security/service/WechatService.java
  85. 1 1
      server/svr-authentication/src/main/java/com/yihu/jw/security/service/XzzxService.java
  86. 1 2
      server/svr-authentication/src/main/java/com/yihu/jw/security/service/YkyyService.java
  87. 1 1
      server/svr-authentication/src/main/resources/application.yml
  88. 5 9
      starter/mysql-starter/src/main/java/com/yihu/jw/mysql/query/BaseJpaService.java
  89. 1 1
      svr/svr-base/src/main/java/com/yihu/jw/base/dao/childManage/BaseChildManageDao.java
  90. 1 1
      svr/svr-base/src/main/java/com/yihu/jw/base/dao/interfacemg/BaseThirdUserDao.java
  91. 1 1
      svr/svr-base/src/main/java/com/yihu/jw/base/dao/interfacemg/BaseThirdUserInterfaceDao.java
  92. 1 1
      svr/svr-base/src/main/java/com/yihu/jw/base/dao/interfacemg/BaseThirdUserInterfaceLogDao.java
  93. 1 1
      svr/svr-base/src/main/java/com/yihu/jw/base/dao/interfacemg/BaseThirdUserInterfaceStandardDao.java
  94. 15 1
      svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/dict/WlyyHospitalSysDictEndpoint.java
  95. 4 4
      svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/interfacemg/BaseUserInterfaceEndpoint.java
  96. 143 0
      svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/login/LoginAppEndpoint.java
  97. 2 1
      svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/processGuidance/BaseProcessGuidanceEndpoint.java
  98. 2 2
      svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/voluntary/VoluntaryRecruitmentEndpoint.java
  99. 6 3
      svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/voluntary/VoluntaryRecruitmentPeopleEndpoint.java
  100. 0 0
      svr/svr-base/src/main/java/com/yihu/jw/base/service/child/ChildManageService.java

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

@ -0,0 +1,13 @@
package com.yihu.jw.dict.dao;
import com.yihu.jw.entity.base.dict.BaseCopywritingDO;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
/**
 * Created by yeshijie on 2022/11/28.
 */
public interface BaseCopywritingDao extends JpaRepository<BaseCopywritingDO, String>, JpaSpecificationExecutor<BaseCopywritingDO> {
    BaseCopywritingDO findByModularAndScene(String modular,String scene);
}

+ 76 - 0
business/base-service/src/main/java/com/yihu/jw/dict/service/BaseCopywritingService.java

@ -0,0 +1,76 @@
package com.yihu.jw.dict.service;
import com.yihu.jw.dict.dao.BaseCopywritingDao;
import com.yihu.jw.entity.base.dict.BaseCopywritingDO;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service;
import java.util.Date;
/**
 * Created by yeshijie on 2022/11/28.
 */
@Service
public class BaseCopywritingService {
    @Autowired
    private BaseCopywritingDao copywritingDao;
    @Autowired
    private StringRedisTemplate redisTemplate;
    public BaseCopywritingDO create(BaseCopywritingDO copywritingDO){
        copywritingDO.setCreateTime(new Date());
        return copywritingDao.save(copywritingDO);
    }
    public BaseCopywritingDO findByModularAndScene(String modular,String scene){
        return copywritingDao.findByModularAndScene(modular, scene);
    }
    /**
     * 获取文案-缓存
     * @return
     */
    public String findCopywriting(String modular,String scene){
        String key = "copywriting:"+modular+":"+scene;
        String content = redisTemplate.opsForValue().get(key);
        if(StringUtils.isBlank(content)){
            content = findCopywritingNoRedis(modular, scene);
            if(StringUtils.isNotBlank(content)){
                redisTemplate.opsForValue().set(key,content);
            }
        }
        return content;
    }
    /**
     * 获取文案-无缓存
     * @return
     */
    public String findCopywritingNoRedis(String modular,String scene){
        BaseCopywritingDO copywritingDO = copywritingDao.findByModularAndScene(modular, scene);
        if(copywritingDO!=null){
            return copywritingDO.getContent();
        }
        return null;
    }
    /**
     * 把文案设置到缓存
     */
    public String setCopywritingToRedis(BaseCopywritingDO copywritingDO,String modular,String scene){
        String content = null;
        if(copywritingDO==null){
            copywritingDO = copywritingDao.findByModularAndScene(modular, scene);
        }
        if(copywritingDO!=null){
            String key = "copywriting:"+copywritingDO.getModular()+":"+copywritingDO.getScene();
            content = copywritingDO.getContent();
            redisTemplate.opsForValue().set(key,content);
        }
        return content;
    }
}

+ 35 - 0
business/base-service/src/main/java/com/yihu/jw/healthUpload/service/HealthReportingFrequencyService.java

@ -1,11 +1,18 @@
package com.yihu.jw.healthUpload.service;
import com.yihu.jw.dict.dao.DictHospitalDeptDao;
import com.yihu.jw.entity.base.dict.DictHospitalDeptDO;
import com.yihu.jw.entity.healthUpload.DeptVO;
import com.yihu.jw.entity.healthUpload.HealthReportingFrequencyDO;
import com.yihu.jw.healthUpload.dao.HealthReportingFrequencyDao;
import com.yihu.jw.mysql.query.BaseJpaService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
/**
 * Created by yeshijie on 2022/11/17.
@ -15,6 +22,34 @@ public class HealthReportingFrequencyService extends BaseJpaService<HealthReport
    @Resource
    private HealthReportingFrequencyDao healthReportingFrequencyDao;
    @Autowired
    private DictHospitalDeptDao hospitalDeptDao;
    public void deleteById(String id){
        healthReportingFrequencyDao.deleteById(id);
    }
    public HealthReportingFrequencyDO findDetail(String id){
        HealthReportingFrequencyDO frequencyDO = healthReportingFrequencyDao.findById(id).orElse(null);
        if(frequencyDO!=null){
            frequencyDO.setTypeName(getTypeName(frequencyDO.getType()));
            if(StringUtils.isNotBlank(frequencyDO.getDeptJson())){
                List<DeptVO> deptVOList = new ArrayList<>();
                String depts[] = frequencyDO.getDeptJson().split(",");
                for (String dep:depts){
                    DictHospitalDeptDO deptDO = hospitalDeptDao.findByCode(dep);
                    if(deptDO!=null){
                        DeptVO deptVO = new DeptVO();
                        deptVO.setCode(dep);
                        deptVO.setName(deptDO.getName());
                        deptVOList.add(deptVO);
                    }
                }
                frequencyDO.setDeptList(deptVOList);
            }
        }
        return frequencyDO;
    }
    public String getTypeName(Integer type){
        String name = "院内科室";

+ 43 - 0
business/base-service/src/main/java/com/yihu/jw/hospital/booking/dao/PatientReservationDao.java

@ -0,0 +1,43 @@
/*******************************************************************************
 * Copyright (c) 2005, 2014 springside.github.io
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 *******************************************************************************/
package com.yihu.jw.hospital.booking.dao;
import com.yihu.jw.entity.hospital.booking.PatientReservation;
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.Date;
import java.util.List;
public interface PatientReservationDao extends PagingAndSortingRepository<PatientReservation, Long>, JpaSpecificationExecutor<PatientReservation> {
	PatientReservation findByCode(String code);
//	List<PatientReservation> findByPatient(String patient, Pageable page);
//	List<PatientReservation> findByPatientAndAdminTeamCode(String patient,Long teamCode,Pageable page);
	Page<Object> findByPatient(String patient, Pageable page);
	Page<Object>  findByPatientAndAdminTeamCode(String patient,Long teamCode,Pageable page);
	List<PatientReservation> findByDoctor(String doctor,Pageable page);
	@Query("select count(1) from PatientReservation a where a.doctor = ?1 and a.patient=?2 ")
	Long  countReservationByDoctorForPatient(String doctor,String patient);
	@Query(value = "select a.* from wlyy_patient_reservation a where a.patient = ?1 and a.canceler=?2 and a.canceler_time>?3 and a.status ='0' order by a.canceler_time DESC limit 1",nativeQuery = true)
	PatientReservation findByPatientAndCancelerAndCancelTime(String patient,String canceler,String cancelerTime);
	//根据患者医获取近三个月的已取消的预约记录
	@Query("select a from PatientReservation a where a.patient = ?1 and a.startTime between ?2 and ?3 order by a.startTime desc")
	List<PatientReservation> findByPatientAndStartTime(String patientCode,Date startTime,Date endTime);
	@Query("select a from PatientReservation a where a.relationCode = ?1 and a.status = 1 order by a.czrq desc")
	List<PatientReservation> findByRelationCode(String relationCode);
}

+ 240 - 0
business/base-service/src/main/java/com/yihu/jw/hospital/booking/service/PatientReservationService.java

@ -0,0 +1,240 @@
package com.yihu.jw.hospital.booking.service;
import com.fasterxml.jackson.databind.ObjectMapper;
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.booking.PatientReservation;
import com.yihu.jw.hospital.booking.dao.PatientReservationDao;
import com.yihu.jw.mysql.query.BaseJpaService;
import com.yihu.jw.patient.dao.BasePatientDao;
import com.yihu.jw.util.date.DateUtil;
import com.yihu.jw.util.entity.ServiceException;
import org.apache.commons.lang3.StringUtils;
import org.json.JSONArray;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.data.domain.Sort.Direction;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import javax.transaction.Transactional;
import java.util.*;
/**
 * 预约挂号业务处理类
 *
 * @author George
 */
@Component
@Transactional(rollbackOn = Exception.class)
public class PatientReservationService extends BaseJpaService<PatientReservation,PatientReservationDao> {
    @Resource
    private PatientReservationDao patientReservationDao;
    @Autowired
    private ObjectMapper objectMapper;
    @Resource
    private BasePatientDao patientDao;
    @Resource
    private BaseDoctorDao doctorDao;
    @Autowired
    private JdbcTemplate jdbcTemplate;
    public PatientReservation findByCode(String code) {
        return patientReservationDao.findByCode(code);
    }
    public PatientReservation findById(Long id) throws Exception {
        PatientReservation re = patientReservationDao.findById(id).orElse(null);
        if (re == null) {
            throw new ServiceException("获取预约详情失败!");
        }
        return re;
    }
    /**
     * 实体转map
     */
    private Map<String, String> entityToMap(PatientReservation obj) throws Exception {
        String mapString = objectMapper.writeValueAsString(obj);
        return objectMapper.readValue(mapString, Map.class);
    }
    /**
     * 更新预约状态
     */
    @Transactional
    public void updateStatus(Long id, Integer status) {
        PatientReservation obj = patientReservationDao.findById(id).orElse(null);
        if (!obj.getStatus().equals(status)) {
            obj.setStatus(status);
            patientReservationDao.save(obj);
        }
    }
    /**
     * 医生取消预约
     */
    @Transactional
    public void doctorCancelOrder(Long id,String doctor) {
        PatientReservation obj = patientReservationDao.findById(id).orElse(null);
        if (obj.getStatus()!=0) {
            obj.setStatus(0);
            String patient = obj.getPatient();
            obj.setCanceler(doctor);
            patientReservationDao.save(obj);
        }
    }
    /**
     * 居民取消预约
     */
    @Transactional
    public void patientCancelOrder(String code,String patient) {
        PatientReservation obj = patientReservationDao.findByCode(code);
        if (obj.getStatus()!=0) {
            obj.setStatus(0);
            obj.setCanceler(patient);
            obj.setCancelerName(obj.getName());
            obj.setCancelerType(5);
            obj.setCancelerTime(DateUtil.dateToStrLong(new Date()));
            patientReservationDao.save(obj);
        }
    }
    /**
     * 保存预约挂号记录
     *
     * @param code         预约号/流水号
     * @param doctor       医生标识
     * @param patient      患者标识
     * @param idcard       患者身份证号
     * @param name         患者姓名
     * @param phone        患者手机号
     * @param ssc          患者社保卡号
     * @param section_type 预约时间段:AM (上午)或者PM (下午)
     * @param start_time   一次预约段的开始时间
     * @param org_code     医生所在医疗机构编码
     * @param org_name     医疗机构名称
     * @param dept_code    科室编码
     * @param dept_name    科室名称
     * @param doctor_code  专家ID/编码
     * @param doctor_name  专家姓名
     * @param doctor_photo 专家头像
     * @return
     */
    public void save(String code, BaseDoctorDO doctor, String patient, String idcard, String name, String phone, String ssc, String section_type, String start_time, String org_code, String org_name, String dept_code, String dept_name, String doctor_code, String doctor_name, String doctor_job, String doctor_photo) {
        try {
            PatientReservation reservation = new PatientReservation();
            reservation.setCode(code);
            reservation.setCzrq(new Date());
            reservation.setType("1");
            reservation.setDeptCode(dept_code);
            reservation.setDeptName(dept_name);
            if (doctor != null) {
                reservation.setDname(doctor.getName());
                reservation.setDoctor(doctor.getId());
            }
            reservation.setDoctorCode(doctor_code);
            reservation.setDoctorName(doctor_name);
            reservation.setDoctorJob(doctor_job);
            reservation.setDoctorPhoto(doctor_photo);
            reservation.setIdcard(idcard);
            reservation.setName(doctor_name);
            reservation.setOrgCode(org_code);
            reservation.setOrgName(org_name);
            reservation.setPatient(patient);
            reservation.setPhone(phone);
            reservation.setSectionType(section_type);
            reservation.setSsc(ssc);
            reservation.setStartTime(DateUtil.strToDate(start_time,DateUtil.YYYY_M_D_HH_MM_SS));
            reservation.setStatus(1);
            // 保存记录
            PatientReservation temp = patientReservationDao.save(reservation);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    /**
     * 分页获取患者预约记录,根据团队
     */
    @Transactional
    public JSONArray getReservationByPatient(String patient, Long teamCode, int page, int pagesize) throws Exception {
        JSONArray array = new JSONArray();
        // 排序
        Sort sort = Sort.by(Direction.DESC, "id");
        // 分页信息
        PageRequest pageRequest = PageRequest.of(page - 1, pagesize, sort);
        Page<Object> result = null;
        if (teamCode != null && teamCode > 0) {//传入医生查询医生帮此患者的预约记录
            result = patientReservationDao.findByPatientAndAdminTeamCode(patient, teamCode, pageRequest);
        } else {
            result = patientReservationDao.findByPatient(patient, pageRequest);
        }
        List<Object> list = result.getContent();
        if (list != null) {
            Map<String, BaseDoctorDO> doctors = new HashMap<>();
            for (Object one : list) {
                PatientReservation item = (PatientReservation)one;
                JSONObject obj = new JSONObject(item);
                if (!StringUtils.isEmpty(item.getDoctor())) {
                    if (doctors.get(item.getDoctor()) != null) {
                        obj.put("photo", doctors.get(item.getDoctor()).getPhoto());
                    } else {
                        BaseDoctorDO doc = doctorDao.findById(item.getDoctor()).orElse(null);
                        if (doc != null) {
                            doctors.put(doc.getId(), doc);
                            obj.put("photo", doc.getPhoto());
                        }
                    }
                }
                obj.put("total",result.getTotalElements());
                array.put(obj);
            }
        }
        return array;
    }
    /**
     * 分页获取患者预约记录(医生端)
     */
    public List<Map<String, String>> getReservationByDoctor(String doctor, int page, int pagesize) throws Exception {
        List<Map<String, String>> re = new ArrayList<>();
        // 排序
        Sort sort = Sort.by(Direction.DESC, "id");
        // 分页信息
        PageRequest pageRequest = PageRequest.of(page - 1, pagesize, sort);
        List<PatientReservation> list = patientReservationDao.findByDoctor(doctor, pageRequest);
        //返回患者头像
        for (PatientReservation item : list) {
            Map<String, String> map = entityToMap(item);
            BasePatientDO patient = patientDao.findById(item.getPatient()).orElse(null);
            if (patient != null) {
                map.put("photo", patient.getPhoto());
            }
            re.add(map);
        }
        return re;
    }
    public Long countReservationByDoctorForPatient(String doctor, String patient) {
        return patientReservationDao.countReservationByDoctorForPatient(doctor, patient);
    }
}

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

@ -7,7 +7,6 @@ import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.Date;
import java.util.List;
@ -34,6 +33,9 @@ public interface SystemMessageDao extends JpaRepository<SystemMessageDO, String>
    @Query("delete from SystemMessageDO a   where a.receiver = ?1 and a.relationCode = ?2 and a.type ='407'")
    int orderMessageDel(String doctor, String orderId);
    @Query(value = "select a.* from base_system_message a where a.receiver = ?1 and a.type = ?2 and a.create_time >=?3",nativeQuery = true)
    List<SystemMessageDO> findByReceiverAndCreateTime(String receiver,String type,String time);
    List<SystemMessageDO> queryByRelationCodeAndTypeIn(String relationCode,String[] type);
    //获取资质申请审核有效的未结束已发送的消息

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

@ -0,0 +1,12 @@
package com.yihu.jw.hospital.prescription.dao;
import com.yihu.jw.entity.hospital.prescription.BaseDrugsPlanDO;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
/**
 * Created by yeshijie on 2022/11/24.
 */
public interface BaseDrugsPlanDao extends JpaRepository<BaseDrugsPlanDO, String>, JpaSpecificationExecutor<BaseDrugsPlanDO> {
}

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

@ -0,0 +1,17 @@
package com.yihu.jw.hospital.prescription.dao;
import com.yihu.jw.entity.hospital.prescription.BaseDrugsPlanDetailDO;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import java.util.List;
/**
 * Created by yeshijie on 2022/11/24.
 */
public interface BaseDrugsPlanDetailDao  extends JpaRepository<BaseDrugsPlanDetailDO, String>, JpaSpecificationExecutor<BaseDrugsPlanDetailDO> {
    @Query("from BaseDrugsPlanDetailDO a where a.planId = ?1 and a.del=1")
    List<BaseDrugsPlanDetailDO> findByPlanId(String planId);
}

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

@ -1,9 +1,8 @@
package com.yihu.jw.hospital.prescription.dao;
import com.yihu.jw.entity.ca.OauthCaConfigDO;
import com.yihu.jw.entity.base.ca.OauthCaConfigDO;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
/**
 * Created by Trick on 2019/12/25.

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

@ -1,9 +1,8 @@
package com.yihu.jw.hospital.prescription.dao;
import com.yihu.jw.entity.ylzinfo.OauthYlzConfigDO;
import com.yihu.jw.entity.third.ylzinfo.OauthYlzConfigDO;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
/**
 * Created by Trick on 2019/7/26.

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

@ -5,7 +5,6 @@ import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
import java.util.Set;

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

@ -1,9 +1,8 @@
package com.yihu.jw.hospital.prescription.dao;
import com.yihu.jw.entity.sf.SfConfigDO;
import com.yihu.jw.entity.base.sf.SfConfigDO;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
/**
 * Created by Trick on 2020/2/27.

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

@ -0,0 +1,182 @@
package com.yihu.jw.hospital.prescription.service;
import com.yihu.jw.entity.hospital.message.SystemMessageDO;
import com.yihu.jw.entity.hospital.prescription.*;
import com.yihu.jw.hospital.message.dao.SystemMessageDao;
import com.yihu.jw.hospital.prescription.dao.*;
import com.yihu.jw.restmodel.web.PageEnvelop;
import com.yihu.jw.util.date.DateUtil;
import com.yihu.jw.utils.hibernate.HibenateUtils;
import org.apache.commons.collections.map.HashedMap;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
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;
/**
 * Created by yeshijie on 2022/11/24.
 */
@Service
public class DrugsPlanService {
    @Autowired
    private BaseDrugsPlanDao drugsPlanDao;
    @Autowired
    private BaseDrugsPlanDetailDao drugsPlanDetailDao;
    @Autowired
    private PrescriptionDao prescriptionDao;
    @Autowired
    private PrescriptionInfoDao prescriptionInfoDao;
    @Autowired
    private PrescriptionDiagnosisDao prescriptionDiagnosisDao;
    @Autowired
    private JdbcTemplate jdbcTemplate;
    @Autowired
    private HibenateUtils hibenateUtils;
    @Autowired
    private SystemMessageDao systemMessageDao;
    /**
     * 获取居民今日的服药计划
     * @param patient
     * @return
     */
    public List<SystemMessageDO> findDrugsPlanMessage(String patient){
        return systemMessageDao.findByReceiverAndCreateTime(patient,"51",DateUtil.getStringDateShort()+" 00:00:00");
    }
    /**
     * 手动生成message
     * @param prescriptionId
     */
    @Transactional(rollbackFor = Exception.class)
    public void createDrugsPlan(String prescriptionId){
        WlyyPrescriptionDO outpatient = prescriptionDao.findById(prescriptionId).orElse(null);
        if(outpatient!=null){
            BaseDrugsPlanDO planDO = new BaseDrugsPlanDO();
            planDO.setDoctor(outpatient.getDoctor());
            planDO.setDoctorName(outpatient.getDoctorName());
            planDO.setPatient(outpatient.getPatientCode());
            planDO.setPatientName(outpatient.getPatientName());
            planDO.setRelationId(outpatient.getId());
            planDO.setTitle("");
            planDO.setCreateTime(new Date());
            planDO.setType("1");
            drugsPlanDao.save(planDO);
            String planId = planDO.getId();
            List<WlyyPrescriptionInfoDO> infoDOList = prescriptionInfoDao.findByPrescriptionId(prescriptionId,1);
            if(infoDOList.size()>0){
                List<BaseDrugsPlanDetailDO> detailDOS = new ArrayList<>();
                for (WlyyPrescriptionInfoDO info:infoDOList){
                    BaseDrugsPlanDetailDO planDetailDO = new BaseDrugsPlanDetailDO();
                    BeanUtils.copyProperties(info,planDetailDO);
                    planDetailDO.setId(null);
                    planDetailDO.setPlanId(planId);
                    planDetailDO.setCreateTime(new Date());
                    detailDOS.add(planDetailDO);
                }
                drugsPlanDetailDao.saveAll(detailDOS);
            }
            SystemMessageDO messageDO = new SystemMessageDO();
            messageDO.setCreateTime(new Date());
            messageDO.setDel("1");
            messageDO.setType("51");
            messageDO.setOver("1");
            messageDO.setTitle("用药计划");
            messageDO.setIsRead("0");
            messageDO.setContent("您今日有1条待服药计划,请按时服药");
            messageDO.setReceiver(outpatient.getPatientCode());
            messageDO.setReceiverName(outpatient.getPatientName());
            messageDO.setSender(outpatient.getDoctor());
            messageDO.setSenderName(outpatient.getDoctorName());
            messageDO.setRelationCode(planId);
            systemMessageDao.save(messageDO);
        }
    }
    /**
     * 按月查询居民每天的用药计划数
     */
    public List<Map<String,Object>> findHaveDrugPlan(String patient,String month){
        String sql = "SELECT DATE_FORMAT(create_time,'%e') day,count(*) num from base_drugs_plan where patient ='"+patient+"' and type=1 ";
        sql += " and create_time>='"+month+"-01' and create_time<='"+month+"-30' GROUP BY day";
        List<Map<String,Object>> list = jdbcTemplate.queryForList(sql);
        return list;
    }
    /**
     * 获取居民的今日用药计划
     * @return
     */
    public List<BaseDrugsPlanDO> findDrugsPlan(String patient,String date){
        String sql = "select * from base_drugs_plan where patient ='"+patient+"' and type=1 ";
        sql += " and create_time>='"+date+" 00:00:00' and create_time<='"+date+" 23:59:59'";
        List<BaseDrugsPlanDO> planDOList = jdbcTemplate.query(sql,new BeanPropertyRowMapper<>(BaseDrugsPlanDO.class));
        for (BaseDrugsPlanDO planDO:planDOList){
            planDO.setDetailList(drugsPlanDetailDao.findByPlanId(planDO.getId()));
        }
        return planDOList;
    }
    /**
     * 查询居民处方列表
     * @return
     */
    public PageEnvelop prescriptionList(String patient, Integer page, Integer pagesize) {
        String sql = "SELECT\n" +
                "\tp.doctor as \"doctor\",\n" +
                "\tp.id as \"id\",\n" +
                "\tp.doctor_name as \"doctorName\",\n" +
                "\tp.dept as \"dept\",\n" +
                "\tp.dept_name as \"deptName\",\n" +
                "\tp.patient_code as \"patientCode\",\n" +
                "\tp.patient_name as \"patientName\",\n";
        sql = sql + "date_format(p.create_time,'%Y-%m-%d %H:%i:%S' )  AS \"createTime\" ";
        sql += "\tFROM\n" +
                "\twlyy_prescription P\n" +
                "WHERE\n" +
                "\t1 = 1 and  p.check_status not in (3,4) ";
        Map<String, Object> params = new HashedMap();
        if (StringUtils.isNoneBlank(patient)) {
            sql += " and p.patient_code =:patient";
            params.put("patient", patient);
        }
        sql += " order by p.create_time desc";
        List<Map<String, Object>> mapList = hibenateUtils.createSQLQuery(sql, params, page, pagesize);
        String sqlTotal = "select COUNT(1) AS \"total\" from wlyy_prescription p where 1=1 and  p.check_status not in (3,4)  ";
        Map<String, Object> params1 = new HashedMap();
        if (StringUtils.isNoneBlank(patient)) {
            sqlTotal += " and p.patient_code =:patient";
            params1.put("patient", patient);
        }
        Long count = 0L;
        List<Map<String, Object>> total = hibenateUtils.createSQLQuery(sqlTotal, params1);
        if (total != null) {
            //mysql 与 Oracle 聚合函数返回类型不一致,需要判断装换
            count = hibenateUtils.objTransformLong(total.get(0).get("total"));
        }
        for (Map<String,Object> map:mapList){
            String prescriptionId = map.get("id")+"";
            List<WlyyPrescriptionDiagnosisDO> diagnosisDOList = prescriptionDiagnosisDao.findByPrescriptionId(prescriptionId,1);
            List<WlyyPrescriptionInfoDO> infoDOList = prescriptionInfoDao.findByPrescriptionId(prescriptionId,1);
            map.put("diagnosisDOList",diagnosisDOList);
            map.put("infoDOList",infoDOList);
        }
        return PageEnvelop.getSuccessListWithPage("获取成功",mapList,page,pagesize,count);
    }
}

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

@ -91,9 +91,6 @@ public class PrescriptionExpressageService extends BaseJpaService<WlyyPrescripti
    @Autowired
    PrescriptionService prescriptionService;
    @Autowired
    private SfConfigDao sfConfigDao;
    private PrescriptionExpressageService(){}
    public PrescriptionExpressageService(String sf_url,String sf_code,String sf_check_word){
@ -936,44 +933,4 @@ public class PrescriptionExpressageService extends BaseJpaService<WlyyPrescripti
        }
    }
//    public JSONObject addSFOrder(WlyyPrescriptionExpressageDO expressageDO){
//
//        SfConfigDO sfConfigDO = sfConfigDao.getOne("sfconfig");
//
//        JSONObject param = new JSONObject();
//        param.put("timestamp",new Date());
//        param.put("version","1.0");
//        JSONArray orderThirds = new JSONArray();
//        JSONObject order = new JSONObject();
//        order.put("bspOrderNo",);
//        order.put("",);
//        order.put("",);
//        order.put("",);
//        order.put("",);
//        order.put("",);
//        order.put("",);
//        order.put("",);
//        order.put("",);
//        order.put("",);
//        order.put("",);
//        order.put("",);
//        order.put("",);
//        order.put("",);
//        order.put("",);
//        order.put("",);
//        order.put("",);
//        order.put("",);
//        order.put("",);
//        order.put("",);
//        order.put("",);
//        order.put("",);
//        order.put("",);
//        order.put("",);
//        order.put("",);
//        order.put("",);
//        order.put("",);
//        order.put("",);
//        order.put("",);
//        order.put("",);
//    }
}

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

@ -50,7 +50,7 @@ import com.yihu.jw.entity.hospital.mapping.PatientMappingDO;
import com.yihu.jw.entity.hospital.message.SystemMessageDO;
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.entity.third.ylzinfo.OauthYlzConfigDO;
import com.yihu.jw.file_upload.FileUploadService;
import com.yihu.jw.healthCare.service.HealthCareService;
import com.yihu.jw.hospital.consult.dao.BaseAdviceTreatmentDao;

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

@ -5,7 +5,7 @@ import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.doctor.dao.BaseDoctorDao;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.entity.ca.OauthCaConfigDO;
import com.yihu.jw.entity.base.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;

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

@ -3,13 +3,11 @@ package com.yihu.jw.hospital.prescription.service.entrance;
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.DictDoctorDutyDao;
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.auth.OauthRsaKeyDO;
import com.yihu.jw.entity.base.dict.DictDoctorDutyDO;
import com.yihu.jw.entity.base.dict.DictHospitalDeptDO;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
@ -17,36 +15,29 @@ 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.base.wx.BasePatientWechatDo;
import com.yihu.jw.entity.ca.OauthCaConfigDO;
import com.yihu.jw.entity.hospital.consult.WlyyHospitalSysDictDO;
import com.yihu.jw.entity.hospital.dict.WlyyChargeDictDO;
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;
import com.yihu.jw.hospital.mapping.dao.DoctorMappingDao;
import com.yihu.jw.hospital.mapping.dao.PatientMappingDao;
import com.yihu.jw.hospital.prescription.dao.*;
import com.yihu.jw.hospital.prescription.service.entrance.util.AES;
import com.yihu.jw.oauth.OauthRsaKeyDao;
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.util.common.IdCardUtil;
import com.yihu.jw.util.date.DateUtil;
import com.yihu.jw.util.http.HttpClientUtil;
import com.yihu.jw.util.wechat.wxhttp.HttpUtil;
import com.yihu.jw.utils.StringUtil;
import com.yihu.jw.utils.WebserviceUtil;
import com.yihu.jw.wechat.dao.BasePatientWechatDao;
import com.yihu.jw.util.encrypt.MD5;
import net.sf.json.xml.XMLSerializer;
import nu.xom.*;
import org.apache.commons.collections.map.HashedMap;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
@ -57,9 +48,6 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.io.IOException;
import java.io.StringReader;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.*;

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

@ -0,0 +1,1453 @@
package com.yihu.jw.hospital.prescription.service.entrance;
import com.yihu.jw.entity.hospital.booking.PatientReservation;
import com.yihu.jw.entity.hospital.booking.ReservationHospitalDept;
import com.yihu.jw.entity.hospital.consult.WlyyHospitalSysDictDO;
import com.yihu.jw.hospital.booking.dao.PatientReservationDao;
import com.yihu.jw.hospital.prescription.vo.GuahaoDoctor;
import com.yihu.jw.sms.dao.HospitalSysDictDao;
import com.yihu.jw.util.date.DateUtil;
import com.yihu.jw.util.entity.ServiceException;
import com.yihu.jw.util.http.HttpClientUtil;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.json.JSONArray;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.*;
/**
 * Created by ysj on 2022/11/22.
 * 与统一接口平台对接
 */
@Service
public class JwSmjkEntranceService {
    //基卫服务地址
//    @Value("${sign.check_upload}")
    private String jwUrl="";
    @Autowired
    private HttpClientUtil HttpClientUtil;
    @Autowired
    private JdbcTemplate jdbcTemplate;
    @Resource
    private HospitalSysDictDao hospitalSysDictDao;
    //未对接 模拟数据
    private boolean isdemo =true;
    /****************************************************************************************************************************/
    /**
     * 获取门/急诊记录 + 住院记录
     */
    public String getResidentEventListJson(String strSSID,String type,String page,String pageSize)  throws Exception
    {
        if(isdemo)     //演示环境
        {
            return "";
        }
        else {
            String re = "";
            String url = jwUrl + "/third/smjk/ResidentEventList";
            List<NameValuePair> params = new ArrayList<>();
            params.add(new BasicNameValuePair("strSSID", strSSID));
            if (!StringUtils.isEmpty(type)) {
                params.add(new BasicNameValuePair("type", type));
            }
            params.add(new BasicNameValuePair("page", page));
            params.add(new BasicNameValuePair("pageSize", pageSize));
            String response = HttpClientUtil.post(url, params, "UTF-8");
            if (!StringUtils.isEmpty(response)) {
                JSONObject responseObject = new JSONObject(response);
                int status = responseObject.getInt("status");
                if (status == 200) {
                    String data = responseObject.getString("data");
                    if (!StringUtils.isEmpty(data) && data.startsWith("error")) {
                        throw new ServiceException(data);
                    } else {
                        JSONObject jsonData = new JSONObject(data);
                        JSONArray jsonArray = jsonData.getJSONArray("EventList");
                        re = jsonArray.toString();
                    }
                } else {
                    throw new ServiceException(responseObject.getString("msg"));
                }
            } else {
                throw new ServiceException("null response.");
            }
            if(re.contains("[{}]"))
            {
                re = re.replace("[{}]","[]");
            }
            return re;
        }
    }
    /**
     * 通过event获取档案类型列表
     */
    public String getEventCatalog(String strSSID,String strEvent)  throws Exception
    {
        if(isdemo)     //演示环境
        {
            return "";
        }
        else {
            String url = jwUrl + "/third/smjk/EventCatalog";
            List<NameValuePair> params = new ArrayList<>();
            params.add(new BasicNameValuePair("strSSID", strSSID));
            params.add(new BasicNameValuePair("strEvent", strEvent));
            String response = HttpClientUtil.post(url, params, "UTF-8");
            String result = "";
            if (!StringUtils.isEmpty(response)) {
                JSONObject jsonObject = new JSONObject(response);
                int status = jsonObject.getInt("status");
                if (status == 200) {
                    result = jsonObject.getString("data");
                    if (result.startsWith("error")) {
                        throw new ServiceException(result);
                    }
                }
                else {
                    throw new ServiceException(jsonObject.getString("msg"));
                }
            }
            else {
                throw new ServiceException("null response.");
            }
            return result;
        }
    }
    /**
     * 获取健康档案信息详情
     */
    public String getHealthData(String strSSID, String strEvent, String strCatalog, String strSerial) throws Exception {
        if(isdemo)     //演示环境
        {
            return "";
//            return ehrService.getHealthData(strSSID,strEvent,strCatalog,strSerial);
        }
        else {
            String url = jwUrl + "/third/smjk/HealthData";
            List<NameValuePair> params = new ArrayList<>();
            params.add(new BasicNameValuePair("strSSID", strSSID));
            params.add(new BasicNameValuePair("strEvent", strEvent));
            params.add(new BasicNameValuePair("strCatalog", strCatalog));
            params.add(new BasicNameValuePair("strSerial", strSerial));
            String response = HttpClientUtil.post(url, params, "UTF-8");
            String result = "";
            if (!StringUtils.isEmpty(response)) {
                JSONObject jsonObject = new JSONObject(response);
                int status = jsonObject.getInt("status");
                if (status == 200) {
                    result = jsonObject.getString("data");
                    result = result.replaceAll("<\\?xml version=\"1.0\" encoding=\"utf-8\"\\?>", "");
                    if (result.startsWith("error")) {
                        throw new ServiceException(result);
                    }
                }
                else {
                    throw new ServiceException(jsonObject.getString("msg"));
                }
            }
            else {
                throw new ServiceException("null response.");
            }
            return result;
        }
    }
    /**
     * 获取检查检验列表
     */
    public String getExamAndLabReport(String strSSID,String page,String pageSize) throws Exception
    {
        if(isdemo)     //演示环境
        {
            return "";
        }
        else {
            String url = jwUrl + "/third/smjk/ExamAndLabReport";
            List<NameValuePair> params = new ArrayList<>();
            params.add(new BasicNameValuePair("strSSID", strSSID));
            params.add(new BasicNameValuePair("page", page));
            params.add(new BasicNameValuePair("pageSize", pageSize));
            String response = HttpClientUtil.post(url, params, "UTF-8");
            String re = "";
            if (!StringUtils.isEmpty(response)) {
                JSONObject jsonObject = new JSONObject(response);
                int status = jsonObject.getInt("status");
                if (status == 200) {
                    String data = jsonObject.getString("data");
                    if (!StringUtils.isEmpty(data) && data.startsWith("error")) {
                        throw new ServiceException(data);
                    } else {
                        JSONObject jsonData = new JSONObject(data);
                        JSONArray jsonArray = jsonData.getJSONArray("EhrList");
                        re = jsonArray.toString();
                    }
                } else {
                    throw new ServiceException(jsonObject.getString("msg"));
                }
            } else {
                throw new ServiceException("null response.");
            }
            if(re.contains("[{}]"))
            {
                re = re.replace("[{}]","[]");
            }
            return re;
        }
    }
    /**
     * 获取心电记录
     */
    public String EcGList(String strSSID,String strStart,String strEnd) throws Exception {
            String url = jwUrl + "/third/smjk/getEcGList";
            List<NameValuePair> params = new ArrayList<>();
            params.add(new BasicNameValuePair("strSSID", strSSID));
            params.add(new BasicNameValuePair("strStart", strStart));
            params.add(new BasicNameValuePair("strEnd", strEnd));
            String response = HttpClientUtil.post(url, params, "UTF-8");
            String re = "";
            if (!StringUtils.isEmpty(response)) {
                JSONObject jsonObject = new JSONObject(response);
                int status = jsonObject.getInt("status");
                if (status == 200) {
                    String data = jsonObject.getString("data");
                    if (!StringUtils.isEmpty(data) && data.startsWith("error")) {
                        return "暂无心电检查记录";
                    } else {
                        re = data;
                    }
                } else {
                    throw new ServiceException(jsonObject.getString("msg"));
                }
            } else {
                throw new ServiceException("null response.");
            }
            if(re.contains("[{}]"))
            {
                re = re.replace("[{}]","[]");
            }
            return re;
    }
    public List<Map<String, Object>> getEcGList(String strSSID,String strStart,String strEnd) throws Exception {
        String response = this.EcGList(strSSID, strStart, strEnd);
        if (response.equals("暂无心电检查记录")){
            List<Map<String, Object>> list = new ArrayList<>();
            Map<String,Object> map = new HashMap<>();
            map.put("fhsb","暂无心电检查记录");
            list.add(map);
            return list;
        }
        return  xmlToList(response);
    }
    private List<Map<String, Object>> xmlToList(String xml) throws Exception {
        List<Map<String, Object>> re = new ArrayList<>();
        if (StringUtils.isEmpty(xml)) {
            // 请求失败
            throw new ServiceException("获取心电失败!");
        } else if (StringUtils.startsWith(xml, "System-Error")) {
            // 调用失败
            throw new ServiceException(xml.substring(xml.indexOf(":") + 1, xml.length()));
        } else if (StringUtils.startsWith(xml, "Error")) {
            // 调用失败
            throw new ServiceException(xml.substring(xml.indexOf(":") + 1, xml.length()));
        }
        Document document = DocumentHelper.parseText(xml);
        org.dom4j.Element root = document.getRootElement();
        if (root.element("\"item\"") != null)     //包含item节点
        {
            root = root.element("\"item\"");
        }
        List<?> child = root.elements();
        for (Object o : child) {
            org.dom4j.Element e = (org.dom4j.Element) o;
            String ssid = e.attributeValue("ssid");
            String url = e.attributeValue("url");
            String orgcode = e.attributeValue("orgcode");
            String orgname = e.attributeValue("orgname");
            String diagnosis = e.attributeValue("diagnosis");
            String reporttime = e.attributeValue("reporttime");
            Map<String, Object> map = new HashMap<>();
            map.put("ssid", ssid);
            map.put("url", url);
            map.put("orgcode", orgcode);
            map.put("orgname", orgname);
            map.put("diagnosis", diagnosis);
            map.put("reporttime", reporttime);
            re.add(map);
        }
        return re;
    }
    /**
     * 获取用药列表
     */
    public String getDrugsListPage(String strSSID,String page,String pageSize) throws Exception
    {
        if(isdemo)     //演示环境
        {
            return "";
        }
        else {
            String url = jwUrl + "/third/smjk/DrugsListPage";
            List<NameValuePair> params = new ArrayList<>();
            params.add(new BasicNameValuePair("strSSID", strSSID));
            params.add(new BasicNameValuePair("page", page));
            params.add(new BasicNameValuePair("pageSize", pageSize));
            String response = HttpClientUtil.post(url, params, "UTF-8");
            String result = "";
            if (!StringUtils.isEmpty(response)) {
                JSONObject jsonObject = new JSONObject(response);
                int status = jsonObject.getInt("status");
                if (status == 200) {
                    result = jsonObject.getString("data");
                }
                else {
                    throw new ServiceException(jsonObject.getString("msg"));
                }
            }
            else {
                throw new ServiceException("null response.");
            }
            if(result.contains("[{}]"))
            {
                result = result.replace("[{}]","[]");
            }
            return result;
        }
    }
    /****************************************************************************************************************************/
    /**
     * (内网)获取转诊预约医生号源信息
     */
    public String getRegDeptSpeDoctorSectionList(String OrgCode,String DeptCode,String strStart,String strEnd,String DocCode)  throws Exception
    {
        String re = "";
        String url = jwUrl + "/third/smjk/RegDeptSpeDoctorSectionList";
        List<NameValuePair> params = new ArrayList<>();
        params.add(new BasicNameValuePair("OrgCode", OrgCode));
        params.add(new BasicNameValuePair("DeptCode", DeptCode));
        params.add(new BasicNameValuePair("strStart", strStart));
        params.add(new BasicNameValuePair("strEnd", strEnd));
        params.add(new BasicNameValuePair("DocCode", DocCode));
        String response =  HttpClientUtil.post(url, params, "UTF-8");
        if (!StringUtils.isEmpty(response)) {
            JSONObject jsonObject = new JSONObject(response);
            int status = jsonObject.getInt("status");
            if (status == 200) {
                String data = jsonObject.getString("data");
                if (!StringUtils.isEmpty(data) && (data.startsWith("error")||data.startsWith("System-Error"))) {
                    throw new ServiceException(data);
                } else {
                    re = data;
                }
            } else {
                throw new ServiceException(jsonObject.getString("msg"));
            }
        } else {
            throw new ServiceException("null response.");
        }
        return re;
    }
    /**
     * (内网)预约挂号接口
     */
    public String webRegisterByFamily(String idcard,String patientName,String ssid,String sectionType,String startTime,String orgCode,String deptCode,String deptName,String doctorCode,String doctorName,String patientPhone)  throws Exception
    {
        String re = "";
        String url = jwUrl + "/third/smjk/WebRegisterByFamily";
        List<NameValuePair> params = new ArrayList<>();
        params.add(new BasicNameValuePair("idcard", idcard));
        params.add(new BasicNameValuePair("patientName", patientName));
        params.add(new BasicNameValuePair("ssid", ssid));
        params.add(new BasicNameValuePair("sectionType", sectionType));
        params.add(new BasicNameValuePair("startTime", startTime));
        params.add(new BasicNameValuePair("orgCode", orgCode));
        params.add(new BasicNameValuePair("deptCode", deptCode));
        params.add(new BasicNameValuePair("deptName", deptName));
        params.add(new BasicNameValuePair("doctorCode", doctorCode));
        params.add(new BasicNameValuePair("doctorName", doctorName));
        params.add(new BasicNameValuePair("patientPhone", patientPhone));
        String response = HttpClientUtil.post(url, params, "UTF-8");
        if (!StringUtils.isEmpty(response)) {
            JSONObject jsonObject = new JSONObject(response);
            int status = jsonObject.getInt("status");
            if (status == 200) {
                String data = jsonObject.getString("data");
                if (!StringUtils.isEmpty(data) && (data.startsWith("error")||data.startsWith("System-Error"))) {
                    throw new ServiceException(doMsg(data));
                } else {
                    re = data;
                }
            } else {
                throw new ServiceException(doMsg(jsonObject.getString("msg")));
            }
        } else {
            throw new ServiceException("预约失败,请稍后再试!");
        }
        //返回挂号单
        return re;
    }
    /**
     * 处理异常
     * @param msg
     * @return
     */
    public String doMsg(String msg){
        if(StringUtils.isNoneBlank(msg)&&msg.lastIndexOf(":")>0){
            String re = "市民健康系统提示" + msg.substring(msg.lastIndexOf(":"));
            return re;
        }
        return msg;
    }
    /**
     * 获取医院列表
     * @param type
     * @return
     * @throws Exception
     */
    public String GetOrgList(String type) throws Exception{
        String url = jwUrl + "/third/guahao/GetOrgList";
        List<NameValuePair> params = new ArrayList<>();
        params.add(new BasicNameValuePair("type", type));
        String response = HttpClientUtil.post(url, params, "UTF-8");
        return response;
    }
    /**
     * 从数据中获取科室
     *
     * @param hospitalId
     * @param name
     * @return
     * @throws Exception
     */
    public List<ReservationHospitalDept> GetOrgDepListToMysql(String hospitalId, String name) throws Exception{
        StringBuffer buffer = new StringBuffer();
        if (StringUtils.isNoneBlank(name)){
            buffer.append(" and rh.name like '%"+name+"%'");
        }else {
            buffer.append("");
        }
        String sql = "select *  from wlyy_reservation_hospital_dept rh where 1=1 "+buffer;
        List<ReservationHospitalDept> reservationHospitals = jdbcTemplate.query(sql,new BeanPropertyRowMapper<>(ReservationHospitalDept.class));
        return reservationHospitals;
    }
    /**
     * 获取科室接口
     * @param hospitalId
     * @return
     * @throws Exception
     */
    public String GetOrgDepList(String hospitalId) throws Exception{
        String url = jwUrl + "/third/guahao/GetOrgDepList";
        List<NameValuePair> params = new ArrayList<>();
        params.add(new BasicNameValuePair("hospitalId", hospitalId));
        String response = HttpClientUtil.post(url, params, "UTF-8");
        return response;
    }
    /**
     * 获取医生列表接口
     * @param hospitalId
     * @return
     * @throws Exception
     */
    public String GetDoctorList(String hospitalId,String hosDeptId) throws Exception{
        if(isdemo){
            return "{\n" +
                    "  \"status\": 200,\n" +
                    "  \"msg\": \"获取医生列表成功!\",\n" +
                    "  \"data\": [\n" +
                    "    {\n" +
                    "      \"id\": \"259724\",\n" +
                    "      \"name\": \"陈水龙\",\n" +
                    "      \"sex\": \"1\",\n" +
                    "      \"title\": \"主任医师\",\n" +
                    "      \"edu\": \"硕士\",\n" +
                    "      \"introduce\": \"主任医师、硕士,毕业于福建医科大学。现任科教部副主任,心内二科医疗组长。\\r\\n从事心血管内科临床及教学工作20余年,积累了丰富的临床工作经验。擅长高血压、冠心病、心力衰竭的临床诊治工作,在高血压的诊治方面有独到的造诣。\",\n" +
                    "      \"photo\": \"\",\n" +
                    "      \"fee\": null,\n" +
                    "      \"hosDeptId\": \"30100\",\n" +
                    "      \"hosDeptName\": \"心内科门诊\",\n" +
                    "      \"hospitalId\": \"350211A1002\",\n" +
                    "      \"hospitalName\": \"马銮湾医院\"\n" +
                    "    },\n" +
                    "    {\n" +
                    "      \"id\": \"259726\",\n" +
                    "      \"name\": \"王斌\",\n" +
                    "      \"sex\": \"1\",\n" +
                    "      \"title\": \"主任医师\",\n" +
                    "      \"edu\": \"博士\",\n" +
                    "      \"introduce\": \"主任医师、博士,毕业于四川大学华西临床医学院。现任急诊科主任。\\r\\n主要从事心血管内科临床、冠脉介入、瓣膜性心脏病微创介入及胸痛中心建设、维护及认证工作。\",\n" +
                    "      \"photo\": \"\",\n" +
                    "      \"fee\": null,\n" +
                    "      \"hosDeptId\": \"30100\",\n" +
                    "      \"hosDeptName\": \"心内科门诊\",\n" +
                    "      \"hospitalId\": \"350211A1002\",\n" +
                    "      \"hospitalName\": \"马銮湾医院\"\n" +
                    "    }\n" +
                    "  ]\n" +
                    "}";
        }
        String url = jwUrl + "/third/guahao/GetDoctorList";
        List<NameValuePair> params = new ArrayList<>();
        params.add(new BasicNameValuePair("hospitalId", hospitalId));
        params.add(new BasicNameValuePair("hosDeptId", hosDeptId));
        String response = HttpClientUtil.post(url, params, "UTF-8");
        return response;
    }
    /**
     * 获取医生排班接口(包含排班详细)
     * @param hospitalId
     * @return
     * @throws Exception
     */
    public String GetDoctorArrange(String hospitalId,String hosDeptId,String doctorId) throws Exception{
        if(isdemo){
            return "{\n" +
                    "  \"status\": 200,\n" +
                    "  \"message\": \"获取医生排班成功!\",\n" +
                    "  \"data\": [\n" +
                    "    {\n" +
                    "      \"date\": \"2022/12/23 0:00:00\",\n" +
                    "      \"max\": \"28\",\n" +
                    "      \"fee\": \"50\",\n" +
                    "      \"time\": \"a\",\n" +
                    "      \"used\": \"14\",\n" +
                    "      \"regType\": \"主任号\",\n" +
                    "      \"sections\": [\n" +
                    "        {\n" +
                    "          \"max\": \"1\",\n" +
                    "          \"startTime\": \"2022/12/23 8:34:40\",\n" +
                    "          \"used\": \"0\",\n" +
                    "          \"endTime\": \"2022/12/23 8:42:00\"\n" +
                    "        },\n" +
                    "        {\n" +
                    "          \"max\": \"1\",\n" +
                    "          \"startTime\": \"2022/12/23 8:42:00\",\n" +
                    "          \"used\": \"0\",\n" +
                    "          \"endTime\": \"2022/12/23 8:49:20\"\n" +
                    "        },\n" +
                    "        {\n" +
                    "          \"max\": \"1\",\n" +
                    "          \"startTime\": \"2022/12/23 8:49:20\",\n" +
                    "          \"used\": \"0\",\n" +
                    "          \"endTime\": \"2022/12/23 8:56:40\"\n" +
                    "        },\n" +
                    "        {\n" +
                    "          \"max\": \"1\",\n" +
                    "          \"startTime\": \"2022/12/23 9:26:00\",\n" +
                    "          \"used\": \"0\",\n" +
                    "          \"endTime\": \"2022/12/23 9:33:20\"\n" +
                    "        },\n" +
                    "        {\n" +
                    "          \"max\": \"1\",\n" +
                    "          \"startTime\": \"2022/12/23 9:48:00\",\n" +
                    "          \"used\": \"0\",\n" +
                    "          \"endTime\": \"2022/12/23 9:55:20\"\n" +
                    "        },\n" +
                    "        {\n" +
                    "          \"max\": \"1\",\n" +
                    "          \"startTime\": \"2022/12/23 9:55:20\",\n" +
                    "          \"used\": \"0\",\n" +
                    "          \"endTime\": \"2022/12/23 10:02:40\"\n" +
                    "        },\n" +
                    "        {\n" +
                    "          \"max\": \"1\",\n" +
                    "          \"startTime\": \"2022/12/23 10:17:20\",\n" +
                    "          \"used\": \"0\",\n" +
                    "          \"endTime\": \"2022/12/23 10:24:40\"\n" +
                    "        },\n" +
                    "        {\n" +
                    "          \"max\": \"1\",\n" +
                    "          \"startTime\": \"2022/12/23 10:54:00\",\n" +
                    "          \"used\": \"0\",\n" +
                    "          \"endTime\": \"2022/12/23 11:01:20\"\n" +
                    "        },\n" +
                    "        {\n" +
                    "          \"max\": \"1\",\n" +
                    "          \"startTime\": \"2022/12/23 11:01:20\",\n" +
                    "          \"used\": \"0\",\n" +
                    "          \"endTime\": \"2022/12/23 11:08:40\"\n" +
                    "        },\n" +
                    "        {\n" +
                    "          \"max\": \"1\",\n" +
                    "          \"startTime\": \"2022/12/23 11:08:40\",\n" +
                    "          \"used\": \"0\",\n" +
                    "          \"endTime\": \"2022/12/23 11:16:00\"\n" +
                    "        },\n" +
                    "        {\n" +
                    "          \"max\": \"1\",\n" +
                    "          \"startTime\": \"2022/12/23 11:16:00\",\n" +
                    "          \"used\": \"0\",\n" +
                    "          \"endTime\": \"2022/12/23 11:23:20\"\n" +
                    "        },\n" +
                    "        {\n" +
                    "          \"max\": \"1\",\n" +
                    "          \"startTime\": \"2022/12/23 11:23:20\",\n" +
                    "          \"used\": \"0\",\n" +
                    "          \"endTime\": \"2022/12/23 11:30:40\"\n" +
                    "        },\n" +
                    "        {\n" +
                    "          \"max\": \"1\",\n" +
                    "          \"startTime\": \"2022/12/23 11:30:40\",\n" +
                    "          \"used\": \"0\",\n" +
                    "          \"endTime\": \"2022/12/23 11:38:00\"\n" +
                    "        },\n" +
                    "        {\n" +
                    "          \"max\": \"1\",\n" +
                    "          \"startTime\": \"2022/12/23 11:38:00\",\n" +
                    "          \"used\": \"0\",\n" +
                    "          \"endTime\": \"2022/12/23 11:45:20\"\n" +
                    "        }\n" +
                    "      ],\n" +
                    "      \"status\": \"1\"\n" +
                    "    }\n" +
                    "  ]\n" +
                    "}";
        }
        String url = jwUrl + "/third/guahao/GetDoctorArrange";
        List<NameValuePair> params = new ArrayList<>();
        params.add(new BasicNameValuePair("hospitalId", hospitalId));
        params.add(new BasicNameValuePair("hosDeptId", hosDeptId));
        params.add(new BasicNameValuePair("doctorId", doctorId));
        String response = HttpClientUtil.post(url, params, "UTF-8");
        return response;
    }
    /**
     * 获取医生排班接口(一级)
     * @param hospitalId
     * @return
     * @throws Exception
     */
    public String GetDoctorArrangeSimple(String hospitalId,String hosDeptId,String doctorId) throws Exception{
        String url = jwUrl + "/third/guahao/GetDoctorArrangeSimple";
        List<NameValuePair> params = new ArrayList<>();
        params.add(new BasicNameValuePair("hospitalId", hospitalId));
        params.add(new BasicNameValuePair("hosDeptId", hosDeptId));
        params.add(new BasicNameValuePair("doctorId", doctorId));
        String response = HttpClientUtil.post(url, params, "UTF-8");
        return response;
    }
    @Resource
    private PatientReservationDao patientReservationDao;
    /**
     * 创建挂号单
     * @param hospitalId
     * @return
     * @throws Exception
     */
    public String CreateOrder(String hospitalId,String hospitalName,String hosDeptId,String hosDeptName,
                               String doctorId,String doctorName,String arrangeDate,String patient,
                               String patientName,String cardNo,String clinicCard,String patientPhone) throws Exception{
        if(isdemo){
            String code = UUID.randomUUID().toString().replace("-","");
            PatientReservation reservation = new PatientReservation();
            reservation.setCode(code);
            reservation.setCzrq(new Date());
            reservation.setType("1");
            reservation.setOrgCode(hospitalId);
            reservation.setOrgName(hospitalName);
            reservation.setDeptCode(hosDeptId);
            reservation.setDeptName(hosDeptName);
            reservation.setDoctorCode(doctorId);
            reservation.setDoctorName(doctorName);
            reservation.setDoctorJob("主任医师");
            reservation.setDoctorPhoto("");
            reservation.setIdcard(cardNo);
            reservation.setName(patientName);
            reservation.setPatient(patient);
            reservation.setPhone(patientPhone);
            reservation.setSectionType("a");
            reservation.setSsc(clinicCard);
            reservation.setStartTime(DateUtil.strToDate("2022-12-23 10:00:00"));
            reservation.setEndTime(DateUtil.strToDate("2022-12-23 10:40:00"));
            reservation.setStatus(1);
            patientReservationDao.save(reservation);
            return code;
        }
        String re = "";
        String url = jwUrl + "/third/guahao/CreateOrder";
        List<NameValuePair> params = new ArrayList<>();
        params.add(new BasicNameValuePair("hospitalName", hospitalName));
        params.add(new BasicNameValuePair("hospitalId", hospitalId));
        params.add(new BasicNameValuePair("hosDeptId", hosDeptId));
        params.add(new BasicNameValuePair("hosDeptName", hosDeptName));
        params.add(new BasicNameValuePair("doctorId", doctorId));
        params.add(new BasicNameValuePair("doctorName", doctorName));
        params.add(new BasicNameValuePair("arrangeDate", arrangeDate));
        params.add(new BasicNameValuePair("patient", patient));
        params.add(new BasicNameValuePair("patientName", patientName));
        params.add(new BasicNameValuePair("cardNo", cardNo));
        params.add(new BasicNameValuePair("clinicCard", clinicCard));
        params.add(new BasicNameValuePair("patientPhone", patientPhone));
        String response = HttpClientUtil.post(url, params, "UTF-8");
        if (!StringUtils.isEmpty(response)) {
            JSONObject jsonObject = new JSONObject(response);
            int status = jsonObject.getInt("status");
            if (status == 200) {
                re = jsonObject.getString("data");
            } else {
                String msg = "处理失败,请联系管理员";
                if(!jsonObject.isNull("msg")){
                    msg = jsonObject.getString("msg");
                }
                throw new ServiceException(doMsg(msg));
            }
        } else {
            throw new ServiceException("null response.");
        }
        return re;
    }
    /**
     * 取消挂号单
     * @param orderId
     * @return
     * @throws Exception
     */
    public Boolean CancelOrder(String orderId,String clinicCard) throws Exception{
        if(isdemo){
            return true;
        }
        boolean re = false;
        String url = jwUrl + "/third/guahao/CancelOrder";
        List<NameValuePair> params = new ArrayList<>();
        params.add(new BasicNameValuePair("orderId", orderId));
        params.add(new BasicNameValuePair("clinicCard", clinicCard));
        String response = HttpClientUtil.post(url, params, "UTF-8");
        if (!StringUtils.isEmpty(response)) {
            JSONObject jsonObject = new JSONObject(response);
            int status = jsonObject.getInt("status");
            if (status == 200) {
                re = jsonObject.getBoolean("data");
            } else {
                String msg = "处理失败,请联系管理员";
                if(!jsonObject.isNull("msg")){
                    msg = jsonObject.getString("msg");
                }
                throw new ServiceException(msg);
            }
        } else {
            throw new ServiceException("取消挂号单失败!");
        }
        return re;
    }
    /**
     * 获取医生信息
     * @param hospitalId
     * @return
     * @throws Exception
     */
    public String GetDoctorInfo(String hospitalId,String hosDeptId,String doctorId) throws Exception{
        String re = "";
        String url = jwUrl + "/third/guahao/GetDoctorInfo";
        List<NameValuePair> params = new ArrayList<>();
        params.add(new BasicNameValuePair("hospitalId", hospitalId));
        params.add(new BasicNameValuePair("hosDeptId", hosDeptId));
        params.add(new BasicNameValuePair("doctorId", doctorId));
        String response = HttpClientUtil.post(url, params, "UTF-8");
        return response;
    }
    /**
     * 获取医生信息
     * @param hospitalId
     * @param hosDeptId
     * @param doctorId
     * @return
     * @throws Exception
     */
    public GuahaoDoctor getGuahaoDoctor(String hospitalId, String hosDeptId, String doctorId) throws Exception{
        String response = GetDoctorInfo(hospitalId,hosDeptId,doctorId);
        if (!StringUtils.isEmpty(response)) {
            JSONObject jsonObject = new JSONObject(response);
            int status = jsonObject.getInt("status");
            if (status == 200) {
                GuahaoDoctor doctor = new GuahaoDoctor();
                JSONObject json = jsonObject.getJSONObject("data");
                doctor.setId(json.isNull("id")?"":json.getString("id"));//医生编码
                doctor.setName(json.isNull("name")?"":json.getString("name"));//医生姓名
                doctor.setSex(json.isNull("sex")?"":json.getString("sex"));//医生性别
                doctor.setTitle(json.isNull("title")?"":json.getString("title"));//医生职称
                doctor.setEdu(json.isNull("edu")?"":json.getString("edu"));//医生学历
                doctor.setIntroduce(json.isNull("introduce")?"":json.getString("introduce"));//医生简介
                doctor.setPhoto(json.isNull("photo")?"":json.getString("photo"));//医生头像
                doctor.setFee(json.isNull("fee")?"":json.getString("fee"));//医生挂号费
                doctor.setHosDeptId(json.isNull("hosDeptId")?"":json.getString("hosDeptId"));//医生科室编码
                doctor.setHosDeptName(json.isNull("hosDeptName")?"":json.getString("hosDeptName"));//医生科室名称
                doctor.setHospitalId(json.isNull("hospitalId")?"":json.getString("hospitalId"));//医生医院编码
                doctor.setHospitalName(json.isNull("hospitalName")?"":json.getString("hospitalName"));//医生医院名称
                return doctor;
            } else {
                String msg = "处理失败,请联系管理员";
                if(!jsonObject.isNull("msg")){
                    msg = jsonObject.getString("msg");
                }
                throw new ServiceException(msg);
            }
        } else {
            throw new ServiceException("获取挂号医生信息失败!");
        }
    }
    /**
     * 获取预约状态(0 撤销 1 确认 2 已诊  3停诊)
     * @param hospitalId
     * @return
     * @throws Exception
     */
    public Integer GetOrderStatus(String hospitalId,String hosDeptId,String doctorId) throws Exception{
        Integer re = null;
        String url = jwUrl + "/third/guahao/GetOrderStatus";
        List<NameValuePair> params = new ArrayList<>();
        params.add(new BasicNameValuePair("hospitalId", hospitalId));
        params.add(new BasicNameValuePair("hosDeptId", hosDeptId));
        params.add(new BasicNameValuePair("doctorId", doctorId));
        String response = HttpClientUtil.post(url, params, "UTF-8");
        if (!StringUtils.isEmpty(response)) {
            JSONObject jsonObject = new JSONObject(response);
            int status = jsonObject.getInt("status");
            if (status == 200) {
                re = jsonObject.getInt("data");
            } else {
                throw new ServiceException(jsonObject.getString("msg"));
            }
        } else {
            throw new ServiceException("null response.");
        }
        return re;
    }
    /**
     * 根据患者医保卡获取近三个月的预约记录
     * @param patient
     * @return
     * @throws Exception
     */
    public String GetRegList(String patient) throws Exception{
        if(isdemo){
            List<PatientReservation> list = patientReservationDao.findByPatientAndStartTime(patient,DateUtil.getNextDay1(new Date(),-90),DateUtil.getNextDay1(new Date(),31));
            JSONObject json = new JSONObject();
            json.put("status",200);
            json.put("message","获取成功");
            json.put("data",new JSONArray(list));
            return json.toString();
        }
        String url = jwUrl + "/third/guahao/GetRegList";
        List<NameValuePair> params = new ArrayList<>();
        params.add(new BasicNameValuePair("patient", patient));
        String response = HttpClientUtil.post(url, params, "UTF-8");
        return response;
    }
    /**
     * 根据患者,预约编号,机构编号获取单条记录预约记录
     * @param patient
     * @return
     * @throws Exception
     */
    public String GetRegDetail(String patient,String orgCode,String regCode) throws Exception{
        String re = "";
        String url = jwUrl + "/third/guahao/GetRegDetail";
        List<NameValuePair> params = new ArrayList<>();
        params.add(new BasicNameValuePair("patient", patient));
        params.add(new BasicNameValuePair("orgCode", orgCode));
        params.add(new BasicNameValuePair("regCode", regCode));
        String response = HttpClientUtil.post(url, params, "UTF-8");
        return response;
    }
    /*************************************** 旧版本函数 *************************************************************************/
    /**
     * 获取住院记录(X)
     */
    public String getHospitalizationRecord(String strSSID, String startNum, String endNum) throws Exception {
        if(isdemo)     //演示环境
        {
            return "";
//            return ehrService.getHospitalizationRecord(strSSID);
        }
        else {
            String startDate = "1900-01-01";
            String endDate = DateUtil.dateToStr(DateUtil.getNowDate(), DateUtil.YYYY_MM_DD);
            String url = jwUrl + "/third/smjk/InpatientRecord";
            List<NameValuePair> params = new ArrayList<>();
            params.add(new BasicNameValuePair("strSSID", strSSID));
            params.add(new BasicNameValuePair("startDate", startDate));
            params.add(new BasicNameValuePair("endDate", endDate));
            params.add(new BasicNameValuePair("startNum", startNum));
            params.add(new BasicNameValuePair("endNum", endNum));
            String response = HttpClientUtil.post(url, params, "UTF-8");
            JSONArray resultArray = new JSONArray();
            List<WlyyHospitalSysDictDO> systemDictList = hospitalSysDictDao.findByDictName("EHR_CATALOG");
            Map<String, String> systemDictMap = new HashMap<>();
            for (WlyyHospitalSysDictDO systemDict : systemDictList) {
                systemDictMap.put(systemDict.getDictCode(), systemDict.getDictValue());
            }
            if (!StringUtils.isEmpty(response)) {
                JSONObject responseObject = new JSONObject(response);
                int status = responseObject.getInt("status");
                if (status == 200) {
                    String data = responseObject.getString("data");
                    if (!StringUtils.isEmpty(data)) {
                        if (data.startsWith("error")) {
                            return data;
                        }
                        JSONObject jsonData = new JSONObject(data);
                        JSONArray jsonArray = jsonData.getJSONArray("EhrList");
                        if (!jsonArray.isNull(0) && jsonArray.getJSONObject(0).length() != 0) {
                            Map<String, JSONObject> jsonObjectMap = new HashMap<>();
                            for (int i = 0; i < jsonArray.length(); i++) {
                                JSONObject jsonObject = jsonArray.getJSONObject(i);
                                String patientId = jsonObject.getString("XMAN_ID");
                                String eventNo = jsonObject.getString("EVENT");
                                Integer orgId = jsonObject.getInt("ORG_ID");
                                String key = patientId + eventNo + orgId;
                                JSONObject catalogObject = new JSONObject();
                                String catalogCode = jsonObject.get("CATALOG_CODE").toString();
                                String endTimeNew = jsonObject.get("END_TIME").toString();
                                String catalogValue = systemDictMap.get(catalogCode);
                                jsonObject.remove("CATALOG_CODE");
                                if (jsonObjectMap.containsKey(key)) {
                                    jsonObject = jsonObjectMap.get(key);
                                    String endTimeOld = jsonObject.get("END_TIME").toString();
                                    if (endTimeNew.compareTo(endTimeOld) < 0) {
                                        endTimeNew = endTimeOld;
                                    }
                                    catalogObject = jsonObject.getJSONObject("CATALOG");
                                }
                                catalogObject.put(catalogCode, catalogValue);
                                jsonObject.put("CATALOG", catalogObject);
                                jsonObject.put("END_TIME", endTimeNew);
                                jsonObjectMap.put(key, jsonObject);
                            }
                            for (String key : jsonObjectMap.keySet()) {
                                resultArray.put(jsonObjectMap.get(key));
                            }
                            JSONObject temp;
                            for (int i = 0; i < resultArray.length(); i++) {
                                for (int j = i + 1; j < resultArray.length(); j++) {
                                    String endTimeNew = resultArray.getJSONObject(j).get("END_TIME").toString();
                                    String endTimeOld = resultArray.getJSONObject(i).get("END_TIME").toString();
                                    if (endTimeNew.compareTo(endTimeOld) > 0) {
                                        temp = resultArray.getJSONObject(i);
                                        resultArray.put(i, resultArray.getJSONObject(j));
                                        resultArray.put(j, temp);  // 两个数交换位置
                                    }
                                }
                            }
                        }
                    }
                }
            }
            return resultArray.toString();
        }
    }
    /**
     * 获取门/急诊记录(X)
     */
    public String getOutpatientRecord(String strSSID, String startNum, String endNum) throws Exception {
        if(isdemo)     //演示环境
        {
            return "";
//            return ehrService.getOutpatientRecord(strSSID);
        }
        else{
            String startDate = "1900-01-01";
            String endDate = DateUtil.dateToStr(DateUtil.getNowDate(), DateUtil.YYYY_MM_DD);
            String url = jwUrl + "/third/smjk/OutpatientRecord";
            List<NameValuePair> params = new ArrayList<>();
            params.add(new BasicNameValuePair("strSSID", strSSID));
            params.add(new BasicNameValuePair("startDate", startDate));
            params.add(new BasicNameValuePair("endDate", endDate));
            params.add(new BasicNameValuePair("startNum", startNum));
            params.add(new BasicNameValuePair("endNum", endNum));
            String response = HttpClientUtil.post(url, params, "UTF-8");
            JSONArray resultArray = new JSONArray();
            List<WlyyHospitalSysDictDO> systemDictList = hospitalSysDictDao.findByDictName("EHR_CATALOG");
            Map<String, String> systemDictMap = new HashMap<>();
            for (WlyyHospitalSysDictDO systemDict : systemDictList) {
                systemDictMap.put(systemDict.getDictCode(), systemDict.getDictValue());
            }
            if (!StringUtils.isEmpty(response)){
                JSONObject responseObject = new JSONObject(response);
                int status = responseObject.getInt("status");
                if (status == 200){
                    String data = responseObject.getString("data");
                    if (!StringUtils.isEmpty(data)){
                        if (data.startsWith("error")) {
                            return data;
                        }
                        JSONObject jsonData = new JSONObject(data);
                        JSONArray jsonArray = jsonData.getJSONArray("EhrList");
                        if (!jsonArray.isNull(0) && jsonArray.getJSONObject(0).length() != 0) {
                            Map<String, JSONObject> jsonObjectMap = new HashMap<>();
                            for (int i=0; i<jsonArray.length(); i++) {
                                JSONObject jsonObject = jsonArray.getJSONObject(i);
                                String patientId = jsonObject.getString("XMAN_ID");
                                String eventNo = jsonObject.getString("EVENT");
                                Integer orgId = jsonObject.getInt("ORG_ID");
                                String key = patientId + eventNo + orgId;
                                JSONObject catalogObject = new JSONObject();
                                String catalogCode = jsonObject.get("CATALOG_CODE").toString();
                                String endTimeNew = jsonObject.get("END_TIME").toString();
                                String catalogValue = systemDictMap.get(catalogCode);
                                jsonObject.remove("CATALOG_CODE");
                                if (jsonObjectMap.containsKey(key)) {
                                    jsonObject = jsonObjectMap.get(key);
                                    String endTimeOld = jsonObject.get("END_TIME").toString();
                                    if (endTimeNew.compareTo(endTimeOld) < 0) {
                                        endTimeNew = endTimeOld;
                                    }
                                    catalogObject = jsonObject.getJSONObject("CATALOG");
                                }
                                catalogObject.put(catalogCode, catalogValue);
                                jsonObject.put("CATALOG", catalogObject);
                                jsonObject.put("END_TIME", endTimeNew);
                                jsonObjectMap.put(key, jsonObject);
                            }
                            for (String key : jsonObjectMap.keySet()) {
                                resultArray.put(jsonObjectMap.get(key));
                            }
                            JSONObject temp;
                            for (int i = 0; i < resultArray.length(); i++) {
                                for (int j = i+1; j < resultArray.length(); j++) {
                                    String endTimeNew = resultArray.getJSONObject(j).get("END_TIME").toString();
                                    String endTimeOld = resultArray.getJSONObject(i).get("END_TIME").toString();
                                    if (endTimeNew.compareTo(endTimeOld) > 0) {
                                        temp = resultArray.getJSONObject(i);
                                        resultArray.put(i, resultArray.getJSONObject(j));
                                        resultArray.put(j, temp);  // 两个数交换位置
                                    }
                                }
                            }
                        }
                    }
                }
            }
            return resultArray.toString();
        }
    }
    /**
     * 获取检查报告信息 (X)
     */
    private JSONArray getChecking(String strSSID, String startNum, String endNum) throws Exception {
        String api = "/third/smjk/ExamReport";
        return getResult(api, strSSID, startNum, endNum);
    }
    /**
     * 获取检验报告信息(X)
     */
    private JSONArray getInspection(String strSSID, String startNum, String endNum) throws Exception {
        String api = "/third/smjk/LabReport";
        return getResult(api, strSSID, startNum, endNum);
    }
    private JSONArray getResult(String api, String strSSID, String startNum, String endNum) {
        String startDate = "1900-01-01";
        String endDate = DateUtil.dateToStr(DateUtil.getNowDate(), DateUtil.YYYY_MM_DD);
        String url = jwUrl + api;
        List<NameValuePair> params = new ArrayList<>();
        params.add(new BasicNameValuePair("strSSID", strSSID));
        params.add(new BasicNameValuePair("startDate", startDate));
        params.add(new BasicNameValuePair("endDate", endDate));
        params.add(new BasicNameValuePair("startNum", startNum));
        params.add(new BasicNameValuePair("endNum", endNum));
        String response = HttpClientUtil.post(url, params, "UTF-8");
        JSONArray resultArray = new JSONArray();
        List<WlyyHospitalSysDictDO> systemDictList = hospitalSysDictDao.findByDictName("EHR_CATALOG");
        Map<String, String> systemDictMap = new HashMap<>();
        for (WlyyHospitalSysDictDO systemDict : systemDictList) {
            systemDictMap.put(systemDict.getDictCode(), systemDict.getDictValue());
        }
        if (!StringUtils.isEmpty(response)){
            JSONObject responseObject = new JSONObject(response);
            int status = responseObject.getInt("status");
            if (status == 200){
                String data = responseObject.getString("data");
                if (!StringUtils.isEmpty(data)){
                    if (data.startsWith("error")) {
                        JSONObject jsonObject = new JSONObject();
                        jsonObject.put("error", data);
                        resultArray.put(jsonObject);
                        return resultArray ;
                    }
                    JSONObject jsonData = new JSONObject(data);
                    JSONArray jsonArray = jsonData.getJSONArray("EhrList");
                    if (!jsonArray.isNull(0) && jsonArray.getJSONObject(0).length() != 0) {
                        Map<String, JSONObject> jsonObjectMap = new HashMap<>();
                        for (int i=0; i<jsonArray.length(); i++) {
                            JSONObject jsonObject = jsonArray.getJSONObject(i);
                            String patientId = jsonObject.getString("XMAN_ID");
                            String eventNo = jsonObject.getString("EVENT");
                            Integer orgId = jsonObject.getInt("ORG_ID");
                            String key = patientId + eventNo + orgId;
                            JSONObject catalogObject = new JSONObject();
                            String catalogCode = jsonObject.get("CATALOG_CODE").toString();
                            String endTimeNew = jsonObject.get("END_TIME").toString();
                            String catalogValue = systemDictMap.get(catalogCode);
                            jsonObject.remove("CATALOG_CODE");
                            if (jsonObjectMap.containsKey(key)) {
                                jsonObject = jsonObjectMap.get(key);
                                String endTimeOld = jsonObject.get("END_TIME").toString();
                                if (endTimeNew.compareTo(endTimeOld) < 0) {
                                    endTimeNew = endTimeOld;
                                }
                                catalogObject = jsonObject.getJSONObject("CATALOG");
                            }
                            catalogObject.put(catalogCode, catalogValue);
                            jsonObject.put("CATALOG", catalogObject);
                            jsonObject.put("END_TIME", endTimeNew);
                            jsonObjectMap.put(key, jsonObject);
                        }
                        for (String key : jsonObjectMap.keySet()) {
                            resultArray.put(jsonObjectMap.get(key));
                        }
                    }
                }
            }
        }
        return resultArray;
    }
    /**
     * 获取检查检验 信息(X)
     * @param strSSID
     * @param startNum
     * @param endNum
     * @return
     * @throws Exception
     */
    public String getInspectionAndChecking(String strSSID, String startNum, String endNum) throws Exception {
        if(isdemo)     //演示环境
        {
            return "";
//            return ehrService.getInspectionAndChecking(strSSID);
        }
        else {
            JSONArray total = new JSONArray();
            JSONArray check = getChecking(strSSID, startNum, endNum);
            if (!check.isNull(0)) {
                JSONObject jsonObject = check.getJSONObject(0);
                if (jsonObject.has("error")) {
                    return jsonObject.get("error").toString();
                }
            }
            JSONArray inspect = getInspection(strSSID, startNum, endNum);
            if (!inspect.isNull(0)) {
                JSONObject jsonObject = inspect.getJSONObject(0);
                if (jsonObject.has("error")) {
                    return jsonObject.get("error").toString();
                }
            }
            //TODO 检查检验数据合并
            for (int i = 0; i < check.length(); i++) {
                total.put(check.getJSONObject(i));
            }
            for (int i = 0; i < inspect.length(); i++) {
                total.put(inspect.getJSONObject(i));
            }
            JSONObject temp;
            for (int i = 0; i < total.length(); i++) {
                for (int j = i + 1; j < total.length(); j++) {
                    String endTimeNew = total.getJSONObject(j).get("END_TIME").toString();
                    String endTimeOld = total.getJSONObject(i).get("END_TIME").toString();
                    if (endTimeNew.compareTo(endTimeOld) > 0) {
                        temp = total.getJSONObject(i);
                        total.put(i, total.getJSONObject(j));
                        total.put(j, temp);  // 两个数交换位置
                    }
                }
            }
            return total.toString();
        }
    }
    /**
     * 获取用药记录(X)
     */
    public String getDrugsList(String strSSID, String startNum,String endNum) throws Exception {
        if(isdemo)     //演示环境
        {
            return "";
//            return ehrService.getDrugsList(strSSID);
        }
        else {
            String startDate = "1900-01-01";
            String endDate = DateUtil.dateToStr(DateUtil.getNowDate(), DateUtil.YYYY_MM_DD);
            String url = jwUrl + "/third/smjk/DrugsList";
            List<NameValuePair> params = new ArrayList<>();
            params.add(new BasicNameValuePair("strSSID", strSSID));
            params.add(new BasicNameValuePair("startDate", startDate));
            params.add(new BasicNameValuePair("endDate", endDate));
            params.add(new BasicNameValuePair("startNum", startNum));
            params.add(new BasicNameValuePair("endNum", endNum));
            String response = HttpClientUtil.post(url, params, "UTF-8");
            JSONArray resultArray = new JSONArray();
            List<WlyyHospitalSysDictDO> systemDictList = hospitalSysDictDao.findByDictName("EHR_CATALOG");
            Map<String, String> systemDictMap = new HashMap<>();
            for (WlyyHospitalSysDictDO systemDict : systemDictList) {
                systemDictMap.put(systemDict.getDictCode(), systemDict.getDictValue());
            }
            if (!StringUtils.isEmpty(response)) {
                JSONObject responseObject = new JSONObject(response);
                int status = responseObject.getInt("status");
                if (status == 200) {
                    String data = responseObject.getString("data");
                    if (!StringUtils.isEmpty(data)) {
                        if (data.startsWith("error")) {
                            return data;
                        }
                        JSONObject jsonData = new JSONObject(data);
                        JSONArray jsonArray = jsonData.getJSONArray("EhrList");
                        if (!jsonArray.isNull(0) && jsonArray.getJSONObject(0).length() != 0) {
                            Map<String, JSONObject> jsonObjectMap = new HashMap<>();
                            for (int i = 0; i < jsonArray.length(); i++) {
                                JSONObject jsonObject = jsonArray.getJSONObject(i);
                                String patientId = jsonObject.getString("XMAN_ID");
                                String eventNo = jsonObject.getString("EVENT");
                                Integer orgId = jsonObject.getInt("ORG_ID");
                                String key = patientId + eventNo + orgId;
                                JSONObject catalogObject = new JSONObject();
                                String catalogCode = jsonObject.get("CATALOG_CODE").toString();
                                String endTimeNew = jsonObject.get("END_TIME").toString();
                                String catalogValue = systemDictMap.get(catalogCode);
                                jsonObject.remove("CATALOG_CODE");
                                if (jsonObjectMap.containsKey(key)) {
                                    jsonObject = jsonObjectMap.get(key);
                                    String endTimeOld = jsonObject.get("END_TIME").toString();
                                    if (endTimeNew.compareTo(endTimeOld) < 0) {
                                        endTimeNew = endTimeOld;
                                    }
                                    catalogObject = jsonObject.getJSONObject("CATALOG");
                                }
                                catalogObject.put(catalogCode, catalogValue);
                                jsonObject.put("CATALOG", catalogObject);
                                jsonObject.put("END_TIME", endTimeNew);
                                jsonObjectMap.put(key, jsonObject);
                            }
                            for (String key : jsonObjectMap.keySet()) {
                                resultArray.put(jsonObjectMap.get(key));
                            }
                            JSONObject temp;
                            for (int i = 0; i < resultArray.length(); i++) {
                                for (int j = i + 1; j < resultArray.length(); j++) {
                                    String endTimeNew = resultArray.getJSONObject(j).get("END_TIME").toString();
                                    String endTimeOld = resultArray.getJSONObject(i).get("END_TIME").toString();
                                    if (endTimeNew.compareTo(endTimeOld) > 0) {
                                        temp = resultArray.getJSONObject(i);
                                        resultArray.put(i, resultArray.getJSONObject(j));
                                        resultArray.put(j, temp);  // 两个数交换位置
                                    }
                                }
                            }
                        }
                    }
                }
            }
            return resultArray.toString();
        }
    }
    public JSONObject GetDoctorInfoTen(String hospitalId, String hosDeptId, String doctorId) {
        if(isdemo){
            String tmp = "{\n" +
                    "  \"message\": \"获取医生详细信息成功!\",\n" +
                    "  \"data\": {\n" +
                    "    \"hosDeptId\": \"30100\",\n" +
                    "    \"hospitalId\": \"350211A1002\",\n" +
                    "    \"introduce\": \"主任医师、硕士,毕业于福建医科大学。现任科教部副主任,心内二科医疗组长。\\r\\n从事心血管内科临床及教学工作20余年,积累了丰富的临床工作经验。擅长高血压、冠心病、心力衰竭的临床诊治工作,在高血压的诊治方面有独到的造诣。\",\n" +
                    "    \"hosDeptName\": \"心内科门诊\",\n" +
                    "    \"sex\": \"1\",\n" +
                    "    \"edu\": \"硕士\",\n" +
                    "    \"fee\": null,\n" +
                    "    \"name\": \"陈水龙\",\n" +
                    "    \"photo\": \"\",\n" +
                    "    \"id\": \"259724\",\n" +
                    "    \"hospitalName\": \"马銮湾医院\",\n" +
                    "    \"title\": \"主任医师\"\n" +
                    "  },\n" +
                    "  \"status\": 200\n" +
                    "}";
            return new JSONObject(tmp);
        }
        String url = jwUrl + "/third/smjk/RegDeptSpeDoctorList";
        List<NameValuePair> params = new ArrayList<>();
        //当前时间;
        String strStart = DateUtil.getStringDateShort();
        //10天预约
        String strEnd = DateUtil.getNextDay(strStart, 11);
        params.add(new BasicNameValuePair("orgCode", hospitalId));
        params.add(new BasicNameValuePair("deptCode", hosDeptId));
        params.add(new BasicNameValuePair("strStart", strStart));
        params.add(new BasicNameValuePair("strEnd", strEnd));
        String response = HttpClientUtil.post(url, params, "UTF-8");
        JSONObject jsonData = new JSONObject(response);
        JSONArray  jsonArray = jsonData.getJSONArray("data");
        for (int i=0; i<jsonArray.length(); i++) {
            JSONObject jsonObject = jsonArray.getJSONObject(i);
            if(doctorId.equals(jsonObject.getString("id"))){
                return jsonObject;
            }
        }
        return null;
    }
    
    /**
     * 获取市民健康系统居民基本信息
     * @param ssc
     * @return
     * @throws Exception
     */
    public String getSmjkBaseInfo(String ssc)throws Exception{
        if(isdemo)     //演示环境
        {
            return "";
        }
        else {
            String re = "";
            String url = jwUrl + "/third/smjk/getXmanInfo";
        
            List<NameValuePair> params = new ArrayList<>();
            params.add(new BasicNameValuePair("strSSID", ssc));
        
            String response = HttpClientUtil.post(url, params, "UTF-8");
        
            if (!StringUtils.isEmpty(response)) {
                JSONObject responseObject = new JSONObject(response);
                int status = responseObject.getInt("status");
                if (status == 200) {
                    String data = responseObject.getString("data");
                    if (!StringUtils.isEmpty(data) && data.startsWith("error")) {
                        throw new ServiceException(data);
                    } else {
//                        JSONObject jsonData = new JSONObject(data);
//                        JSONArray jsonArray = jsonData.getJSONArray("EventList");
                        re = data;
                    }
                } else {
                    throw new ServiceException(responseObject.getString("msg"));
                }
            } else {
                throw new ServiceException("null response.");
            }
        
            if(re.contains("[{}]"))
            {
                re = re.replace("[{}]","[]");
            }
        
            return re;
        }
    }
}

+ 118 - 0
business/base-service/src/main/java/com/yihu/jw/hospital/prescription/vo/GuahaoDoctor.java

@ -0,0 +1,118 @@
package com.yihu.jw.hospital.prescription.vo;
/**
 * Created by hzp on 2016/8/13.
 * 挂号服务医生信息
 */
public class GuahaoDoctor {
    private String id;//医生编码
    private String name;//医生姓名
    private String sex;//医生性别
    private String title;//医生职称
    private String edu;//医生学历
    private String introduce;//医生简介
    private String photo;//医生头像
    private String fee;//医生挂号费
    private String hosDeptId;//医生科室编码
    private String hosDeptName;//医生科室名称
    private String hospitalId;//医生医院编码
    private String hospitalName;//医生医院名称
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    public String getTitle() {
        return title;
    }
    public void setTitle(String title) {
        this.title = title;
    }
    public String getEdu() {
        return edu;
    }
    public void setEdu(String edu) {
        this.edu = edu;
    }
    public String getIntroduce() {
        return introduce;
    }
    public void setIntroduce(String introduce) {
        this.introduce = introduce;
    }
    public String getPhoto() {
        return photo;
    }
    public void setPhoto(String photo) {
        this.photo = photo;
    }
    public String getFee() {
        return fee;
    }
    public void setFee(String fee) {
        this.fee = fee;
    }
    public String getHosDeptId() {
        return hosDeptId;
    }
    public void setHosDeptId(String hosDeptId) {
        this.hosDeptId = hosDeptId;
    }
    public String getHosDeptName() {
        return hosDeptName;
    }
    public void setHosDeptName(String hosDeptName) {
        this.hosDeptName = hosDeptName;
    }
    public String getHospitalId() {
        return hospitalId;
    }
    public void setHospitalId(String hospitalId) {
        this.hospitalId = hospitalId;
    }
    public String getHospitalName() {
        return hospitalName;
    }
    public void setHospitalName(String hospitalName) {
        this.hospitalName = hospitalName;
    }
}

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

@ -0,0 +1,12 @@
package com.yihu.jw.hospital.record.dao;
import com.yihu.jw.entity.hospital.record.HospitalPatientInpatientRecordDO;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
/**
 * Created by yeshijie on 2022/11/28.
 */
public interface HospitalPatientInpatientRecordDao extends JpaRepository<HospitalPatientInpatientRecordDO, String>,
        JpaSpecificationExecutor<HospitalPatientInpatientRecordDO> {
}

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

@ -0,0 +1,14 @@
package com.yihu.jw.hospital.record.dao;
import com.yihu.jw.entity.hospital.record.HospitalPatientOutpatientRecordDO;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
/**
 * Created by yeshijie on 2022/11/28.
 */
public interface HospitalPatientOutpatientRecordDao extends JpaRepository<HospitalPatientOutpatientRecordDO, String>,
        JpaSpecificationExecutor<HospitalPatientOutpatientRecordDO> {
}

+ 14 - 0
business/base-service/src/main/java/com/yihu/jw/hospital/record/service/HospitalPatientInpatientRecordService.java

@ -0,0 +1,14 @@
package com.yihu.jw.hospital.record.service;
import com.yihu.jw.entity.hospital.record.HospitalPatientInpatientRecordDO;
import com.yihu.jw.hospital.record.dao.HospitalPatientInpatientRecordDao;
import com.yihu.jw.mysql.query.BaseJpaService;
import org.springframework.stereotype.Service;
/**
 * Created by yeshijie on 2022/11/28.
 */
@Service
public class HospitalPatientInpatientRecordService extends BaseJpaService<HospitalPatientInpatientRecordDO, HospitalPatientInpatientRecordDao> {
}

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

@ -6,7 +6,7 @@ import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.doctor.dao.BaseDoctorDao;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.entity.ca.OauthCaConfigDO;
import com.yihu.jw.entity.base.ca.OauthCaConfigDO;
import com.yihu.jw.hospital.prescription.dao.OauthCaConfigDao;
import com.yihu.jw.patient.dao.BasePatientDao;
import com.yihu.jw.util.date.DateUtil;

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

@ -0,0 +1,13 @@
package com.yihu.jw.login.dao;
import com.yihu.jw.entity.base.login.BaseLoginAppDO;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
/**
 * Created by yeshijie on 2022/11/28.
 */
public interface BaseLoginAppDao extends JpaRepository<BaseLoginAppDO, String>, JpaSpecificationExecutor<BaseLoginAppDO> {
}

+ 16 - 0
business/base-service/src/main/java/com/yihu/jw/login/dao/BaseLoginComponentDao.java

@ -0,0 +1,16 @@
package com.yihu.jw.login.dao;
import com.yihu.jw.entity.base.login.BaseLoginComponentDO;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import java.util.List;
/**
 * Created by yeshijie on 2022/11/28.
 */
public interface BaseLoginComponentDao extends JpaRepository<BaseLoginComponentDO, String>, JpaSpecificationExecutor<BaseLoginComponentDO> {
    List<BaseLoginComponentDO> findByLoginAppId(String loginAppId);
}

+ 71 - 0
business/base-service/src/main/java/com/yihu/jw/login/service/BaseLoginAppService.java

@ -0,0 +1,71 @@
package com.yihu.jw.login.service;
import com.yihu.jw.entity.base.login.BaseLoginAppDO;
import com.yihu.jw.entity.base.login.BaseLoginComponentDO;
import com.yihu.jw.login.dao.BaseLoginAppDao;
import com.yihu.jw.login.dao.BaseLoginComponentDao;
import com.yihu.jw.mysql.query.BaseJpaService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
/**
 * Created by yeshijie on 2022/11/28.
 */
@Service
public class BaseLoginAppService extends BaseJpaService<BaseLoginAppDO, BaseLoginAppDao> {
    @Autowired
    private BaseLoginComponentDao logingComponentDao;
    @Autowired
    private BaseLoginAppDao loginAppDao;
    public List<BaseLoginComponentDO> findByLoginAppId(String loginAppId){
        return logingComponentDao.findByLoginAppId(loginAppId);
    }
    public BaseLoginAppDO createLoginApp(BaseLoginAppDO loginAppDO){
        if(StringUtils.isNotBlank(loginAppDO.getId())){
            BaseLoginAppDO old = loginAppDao.findById(loginAppDO.getId()).orElse(null);
            if(old!=null){
                loginAppDO.setCreateTime(old.getCreateTime());
            }
        }else {
            loginAppDO.setCreateTime(new Date());
        }
        return loginAppDao.save(loginAppDO);
    }
    public BaseLoginAppDO loginAppStatus(String id,Integer del){
        BaseLoginAppDO baseLoginAppDO = loginAppDao.findById(id).orElse(null);
        if(baseLoginAppDO!=null){
            baseLoginAppDO.setDel(del);
            loginAppDao.save(baseLoginAppDO);
        }
        return baseLoginAppDO;
    }
    public void loginAppDelete(String id){
        loginAppDao.deleteById(id);
    }
    public void loginComponentDelete(String id){
        logingComponentDao.deleteById(id);
    }
    public BaseLoginComponentDO createLoginCompoent(BaseLoginComponentDO loginAppDO){
        if(StringUtils.isNotBlank(loginAppDO.getId())){
            BaseLoginComponentDO old = logingComponentDao.findById(loginAppDO.getId()).orElse(null);
            if(old!=null){
                loginAppDO.setCreateTime(old.getCreateTime());
            }
        }else {
            loginAppDO.setCreateTime(new Date());
        }
        return logingComponentDao.save(loginAppDO);
    }
}

+ 187 - 0
business/base-service/src/main/java/com/yihu/jw/message/service/WxMessageUtil.java

@ -1,13 +1,19 @@
package com.yihu.jw.message.service;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
import com.yihu.jw.entity.base.doctor.BaseDoctorHospitalDO;
import com.yihu.jw.entity.base.org.BaseOrgDO;
import com.yihu.jw.entity.base.wx.BasePatientWechatDo;
import com.yihu.jw.entity.base.wx.WxAccessTokenDO;
import com.yihu.jw.entity.base.wx.WxPushLogDO;
import com.yihu.jw.entity.base.wx.WxTemplateConfigDO;
import com.yihu.jw.entity.care.course.RecruitStudentsRecordDO;
import com.yihu.jw.entity.healthUpload.BaseDoctorHealthUploadDO;
import com.yihu.jw.org.dao.BaseOrgDao;
import com.yihu.jw.util.date.DateUtil;
import com.yihu.jw.util.wechat.WeixinMessagePushUtils;
import com.yihu.jw.wechat.dao.BasePatientWechatDao;
import com.yihu.jw.wechat.dao.WxPushLogDao;
import com.yihu.jw.wechat.dao.WxTemplateConfigDao;
import com.yihu.jw.wechat.service.WxAccessTokenService;
@ -16,6 +22,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@ -40,6 +47,186 @@ public class WxMessageUtil {
    private WeixinMessagePushUtils weixinMessagePushUtils;
    @Value("${wechat.id}")
    private String wechatId;
    @Resource
    private BasePatientWechatDao basePatientWechatDao;
    @Resource
    private BaseOrgDao orgDao;
    /**
     * 批量异步发送微信模板消息
     */
    @Async
    public void sengdWxTemplates(List<RecruitStudentsRecordDO> list){
        String orgMobile = "";
        String orgId = "";
        for (RecruitStudentsRecordDO recordDO:list){
            if("".equals(orgId)){
                BaseOrgDO orgDO = orgDao.findByCode(recordDO.getOrgCode());
                orgMobile = orgDO.getMobile();
                orgId = orgDO.getId();
            }
            /**
             * 学生被录取的时候推送一个录取成功通知微信模板消息
             dc--ecFzT5vrnUFTNdVB6Sg4wXBnv14IX5sFP3jCFfk
             您好,恭喜您已被【机构名】成功录取
             姓名:【报名人姓名】
             手机号:【报名人手机号】
             请及时前往托育机构完成报名,如有疑问请联系招生热线【机构联系方式】
             (点击进入对应报名的机构详情页)
             */
            String first = "您好,恭喜您已被"+recordDO.getOrgName()+"成功录取";
            String remark = "请及时前往托育机构完成报名,如有疑问请联系招生热线"+orgMobile;
            JSONObject json = new JSONObject();
            json.put("orgId",orgId);
            List<BasePatientWechatDo> basePatientWechatDos = basePatientWechatDao.findByWechatIdAndPatientId(wechatId,recordDO.getPatient());
            if(basePatientWechatDos.size()>0){
                String openId = basePatientWechatDos.get(0).getOpenid();
                putTemplateWxMessage(wechatId,"template_success_notice","cgrxtz",openId,first,null,remark,2,json,
                        recordDO.getPatientName(),recordDO.getMobile());
            }
        }
    }
    /**
     *
     * @param wechatId
     * @param templateName
     * @param scene
     * @param openId
     * @param first
     * @param url 跳转链接
     * @param remark
     * @param type  模板通知类型
     * @param json 用于对跳转连接的修改,
     * @param keywords
     */
    public void putTemplateWxMessage(String wechatId, String templateName, String scene, String openId, String first
            ,String url, String remark, Integer type,JSONObject json,String ...keywords) {
        try {
            System.out.println(wechatId);
            WxAccessTokenDO wxAccessTokenDO = wxAccessTokenService.getWxAccessTokenById(wechatId);
            if (wxAccessTokenDO == null) {
                logger.info("wx_access_token表获取为空,wechatId" + wechatId);
                return;
            }
            WxTemplateConfigDO templateConfig = wxTemplateConfigDao.findByWechatIdAndTemplateNameAndSceneAndStatus(wechatId, templateName, scene, 1);
            WxTemplateConfigDO newConfig = new WxTemplateConfigDO();
            BeanUtils.copyProperties(templateConfig,newConfig);
            if (newConfig == null) {
                logger.info("微信模板不存在!请确认wechatId:" + wechatId + ",templateName:" + templateName + ",scene:" + scene);
                return;
            }
            logger.info("微信模板推送前");
            if (StringUtils.isNoneBlank(first)){
                newConfig.setFirst(first);
            }
            if (StringUtils.isNoneBlank(url)){
                newConfig.setUrl(url);
            }
            if (StringUtils.isNoneBlank(remark)){
                newConfig.setRemark(remark);
            }
            newConfig = setTemPlateUrl(newConfig,type,openId,json);
            int keyLength = keywords.length;
            if (keyLength >= 1) {
                if(StringUtils.isNoneBlank(keywords[0])){
                    newConfig.setKeyword1(keywords[0]);
                }
            }
            if (keyLength >= 2) {
                if(StringUtils.isNoneBlank(keywords[1])){
                    newConfig.setKeyword2(keywords[1]);
                }
            }
            if (keyLength >= 3) {
                if(StringUtils.isNoneBlank(keywords[2])){
                    newConfig.setKeyword3(keywords[2]);
                }
            }
            if (keyLength >= 4) {
                if(StringUtils.isNoneBlank(keywords[3])){
                    newConfig.setKeyword4(keywords[3]);
                }
            }
            if (keyLength >= 5) {
                if(StringUtils.isNoneBlank(keywords[4])){
                    newConfig.setKeyword5(keywords[4]);
                }
            }
            if (keyLength >= 6) {
                if(StringUtils.isNoneBlank(keywords[5])){
                    newConfig.setKeyword6(keywords[5]);
                }
            }
            if (keyLength >= 7) {
                if(StringUtils.isNoneBlank(keywords[6])){
                    newConfig.setKeyword7(keywords[6]);
                }
            }
            //发起微信消息模板推送
            weixinMessagePushUtils.putWxMsg(wxAccessTokenDO.getAccessToken(), openId, newConfig);
            logger.info("微信模板消息推送后");
        } catch (Exception e) {
            logger.info("微信模板推送异常");
            e.printStackTrace();
        }
    }
    public WxTemplateConfigDO setTemPlateUrl(WxTemplateConfigDO wxTemplateConfigDO,Integer type,String openid,JSONObject json){
        String url =  "/";
        if (json==null){
            return wxTemplateConfigDO;
        }
        switch (type){
            case 1:
                //咨询回复
                wxTemplateConfigDO.setUrl(wxTemplateConfigDO.getUrl() + "?sessionId=" + json.getString("sessionId")
                        +"&type="+json.getString("consultType"));
                break;
            case 2:
                //入学成功通知
                wxTemplateConfigDO.setUrl(wxTemplateConfigDO.getUrl() + "?id=" + json.getString("orgId")
                        +"&openid="+openid);
                break;
            case 19:
                String urlStr= wxTemplateConfigDO.getUrl();
                boolean status = urlStr.contains("openid=");
                if(!status){
                    urlStr=json.getString("url")+"?openid=" + openid;
                }
                wxTemplateConfigDO.setUrl(url + urlStr );
                break;
            case 30:
                //反馈通知 测试 TPbq9m0SAiVfRhXtXq17SDmYIfrJ8Whp2NpSrq9wlfI
                if(json.containsKey("consult")) {
                    wxTemplateConfigDO.setUrl(url + wxTemplateConfigDO.getUrl() + "?openid=" + openid + "&consult=" + json.getString("consult"));
                }else if (json.containsKey("id")){
                    wxTemplateConfigDO.setUrl(url + wxTemplateConfigDO.getUrl() + "?openid=" + openid + "&id=" + json.getString("id"));
                }else if(json.containsKey("relationCode")){
                    wxTemplateConfigDO.setUrl(url + wxTemplateConfigDO.getUrl() + "?openid=" + openid );
                }else if(json.containsKey("resultCode")){
                    wxTemplateConfigDO.setUrl(url + wxTemplateConfigDO.getUrl() + "?resultCode=" + json.getString("resultCode"));
                }
                break;
            case 31:
                //上门服务医生评分
                wxTemplateConfigDO.setUrl(url + wxTemplateConfigDO.getUrl()+"?openid=" + openid + "&id=" + json.getString("id")+ "&finish=" + json.getString("finish"));
                break;
            case 32:
                String url1 = "wx/common/";
                wxTemplateConfigDO.setUrl(url1 + wxTemplateConfigDO.getUrl()+"?openid=" + openid + "&consult=" + json.getString("consult") + "&status=" + json.getInteger("status"));
                break;
            case 34:
                wxTemplateConfigDO.setUrl(url + wxTemplateConfigDO.getUrl() + "?openid=" + openid + "&orderId=" + json.getString("orderId")+ "&authorizeImage=" + json.getString("authorizeImage"));
                break;
            case 35:
                wxTemplateConfigDO.setUrl(url + wxTemplateConfigDO.getUrl()+json.getString("orderId")+"&isMask=1");
                break;
        }
        return wxTemplateConfigDO;
    }
    /**
     * 发送健康上报微信模板

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

@ -2,7 +2,7 @@ package com.yihu.jw.order.pay.ylz;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.entity.ylzinfo.OauthYlzConfigDO;
import com.yihu.jw.entity.third.ylzinfo.OauthYlzConfigDO;
import com.yihu.jw.hospital.dict.WlyyHospitalSysDictDao;
import com.yihu.jw.hospital.prescription.dao.OauthYlzConfigDao;
import com.yihu.jw.order.pay.utils.PayLogService;

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

@ -0,0 +1,13 @@
package com.yihu.jw.patient.dao;
import com.yihu.jw.entity.base.patient.BaseIdcardRecordDO;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
/**
 * Created by yeshijie on 2022/11/28.
 */
public interface BaseIdcardRecordDao extends JpaRepository<BaseIdcardRecordDO, String>, JpaSpecificationExecutor<BaseIdcardRecordDO> {
    BaseIdcardRecordDO findByPatient(String patient);
}

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

@ -0,0 +1,17 @@
package com.yihu.jw.processGuidance.dao;
import com.yihu.jw.entity.base.processGuidance.BasePatientProcessGuidanceLogDO;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import java.util.List;
/**
 * Created by yeshijie on 2022/11/23.
 */
public interface BasePatientProcessGuidanceLogDao extends JpaRepository<BasePatientProcessGuidanceLogDO, String>, JpaSpecificationExecutor<BasePatientProcessGuidanceLogDO> {
    List<BasePatientProcessGuidanceLogDO> findByPatientAndTypeAndStatus(String patient,Integer type,Integer status);
    List<BasePatientProcessGuidanceLogDO> findByPatientAndCodeAndType(String patient,String code,Integer type);
}

+ 11 - 0
business/base-service/src/main/java/com/yihu/jw/processGuidance/dao/BaseProcessGuidanceBookingDao.java

@ -0,0 +1,11 @@
package com.yihu.jw.processGuidance.dao;
import com.yihu.jw.entity.base.processGuidance.BaseProcessGuidanceBookingDO;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
/**
 * Created by yeshijie on 2022/11/23.
 */
public interface BaseProcessGuidanceBookingDao extends JpaRepository<BaseProcessGuidanceBookingDO, String>, JpaSpecificationExecutor<BaseProcessGuidanceBookingDO> {
}

+ 4 - 0
business/base-service/src/main/java/com/yihu/jw/processGuidance/dao/BaseProcessGuidanceDeptDao.java

@ -3,6 +3,7 @@ package com.yihu.jw.processGuidance.dao;
import com.yihu.jw.entity.base.processGuidance.BaseProcessGuidanceDeptDO;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import java.util.List;
@ -14,4 +15,7 @@ public interface BaseProcessGuidanceDeptDao extends JpaRepository<BaseProcessGui
    List<BaseProcessGuidanceDeptDO> findByProcessGuidanceId(String processGuidanceId);
    void deleteByProcessGuidanceId(String processGuidanceId);
    @Query(value = "select a.* from base_process_guidance_dept a,base_process_guidance d where a.process_guidance_id=d.id and (a.dept_code =?1 or d.is_all_dept=1) ORDER BY d.create_time desc LIMIT 1" ,nativeQuery = true)
    BaseProcessGuidanceDeptDO findByDeptCode(String deptCode);
}

+ 4 - 0
business/base-service/src/main/java/com/yihu/jw/processGuidance/dao/BaseProcessGuidanceNodeAppDao.java

@ -3,6 +3,7 @@ package com.yihu.jw.processGuidance.dao;
import com.yihu.jw.entity.base.processGuidance.BaseProcessGuidanceNodeAppDO;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import java.util.List;
@ -14,5 +15,8 @@ public interface BaseProcessGuidanceNodeAppDao extends JpaRepository<BaseProcess
    List<BaseProcessGuidanceNodeAppDO> findByNodeId(String nodeId);
    @Query("select a from BaseProcessGuidanceNodeAppDO a,BaseProcessGuidanceNodeDO b where b.nodeCode=?1 and a.nodeId=b.id")
    List<BaseProcessGuidanceNodeAppDO> findByNodeCode(String nodeCode);
    void deleteByNodeId(String nodeId);
}

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

@ -3,6 +3,7 @@ package com.yihu.jw.processGuidance.dao;
import com.yihu.jw.entity.base.processGuidance.BaseProcessGuidancePresetDO;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import java.util.List;
@ -12,7 +13,11 @@ import java.util.List;
public interface BaseProcessGuidancePresetDao extends JpaRepository<BaseProcessGuidancePresetDO, String>,
        JpaSpecificationExecutor<BaseProcessGuidancePresetDO> {
    @Query("from BaseProcessGuidancePresetDO where processGuidanceId=?1 order by sortNo asc ")
    List<BaseProcessGuidancePresetDO> findByProcessGuidanceId(String processGuidanceId);
    void deleteByProcessGuidanceId(String processGuidanceId);
    List<BaseProcessGuidancePresetDO> findByProcessCode(String processCode);
}

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

@ -0,0 +1,14 @@
package com.yihu.jw.processGuidance.dao;
import com.yihu.jw.entity.base.processGuidance.BaseProcessGuidanceThirdPushLogDO;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
/**
 * Created by yeshijie on 2022/11/29.
 */
public interface BaseProcessGuidanceThirdPushLogDao extends JpaRepository<BaseProcessGuidanceThirdPushLogDO, String>,
        JpaSpecificationExecutor<BaseProcessGuidanceThirdPushLogDO> {
}

+ 150 - 0
business/base-service/src/main/java/com/yihu/jw/processGuidance/service/ProcessGuidanceService.java

@ -1,13 +1,163 @@
package com.yihu.jw.processGuidance.service;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.entity.base.processGuidance.*;
import com.yihu.jw.patient.dao.BasePatientDao;
import com.yihu.jw.processGuidance.dao.*;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
 * Created by yeshijie on 2022/11/18.
 */
@Service
public class ProcessGuidanceService {
    private static final Logger logger = LoggerFactory.getLogger(ProcessGuidanceService.class);
    @Autowired
    private BasePatientDao patientDao;
    @Autowired
    private BaseProcessGuidanceBookingDao processGuidanceBookingDao;
    @Autowired
    private BasePatientProcessGuidanceLogDao patientProcessGuidanceLogDao;
    @Autowired
    private BaseProcessGuidanceDao processGuidanceDao;
    @Autowired
    private BaseProcessGuidancePresetDao presetDao;
    @Autowired
    private BaseProcessGuidanceDeptDao deptDao;
    @Autowired
    private BaseProcessGuidanceThirdPushLogDao thirdPushLogDao;
    @Autowired
    private BaseProcessGuidanceNodeAppDao nodeAppDao;
    public JSONArray findProcessGuidanceList(String patient,Integer isApp){
        JSONArray jsonArray = new JSONArray();
        List<BasePatientProcessGuidanceLogDO> logDOList = patientProcessGuidanceLogDao.findByPatientAndTypeAndStatus(patient,1,1);
        for (BasePatientProcessGuidanceLogDO logDO:logDOList){
            JSONObject json = new JSONObject();
            json.put("patient",logDO.getPatient());
            json.put("nodeCode",logDO.getNodeCode());
            json.put("code",logDO.getCode());
            json.put("relationId",logDO.getRelationId());
            JSONArray presetArray = new JSONArray();
            List<BaseProcessGuidancePresetDO> presetDOList = presetDao.findByProcessGuidanceId(logDO.getGuidanceId());
            List<BasePatientProcessGuidanceLogDO> logDOS = patientProcessGuidanceLogDao.findByPatientAndCodeAndType(patient,logDO.getCode(),2);
            Map<String,BasePatientProcessGuidanceLogDO> logDOMap = logDOS.stream().collect(Collectors.toMap
                    (BasePatientProcessGuidanceLogDO::getNodeCode,log->log,(oldLog,newLog)->oldLog));
            for (BaseProcessGuidancePresetDO presetDO:presetDOList){
                JSONObject presetJson = new JSONObject();
                String processCode = presetDO.getProcessCode();
                presetJson.put("processCode", processCode);
                presetJson.put("processName", presetDO.getProcessName());
                presetJson.put("sortNo", presetDO.getSortNo());
                presetJson.put("isOptional", presetDO.getIsOptional());
                if(logDOMap.containsKey(processCode)){
                    presetJson.put("status",1);
                    BaseProcessGuidanceBookingDO bookingDO = processGuidanceBookingDao.findById(logDOMap.get(processCode).getRelationId()).orElse(null);
                    presetJson.put("obj", bookingDO);
                }else {
                    presetJson.put("status",0);
                }
                if(isApp==1){
                    List<BaseProcessGuidanceNodeAppDO> appDOS = nodeAppDao.findByNodeCode(processCode);
                    presetJson.put("appDOS", appDOS);
                }
                presetArray.add(presetJson);
            }
            json.put("presetDOList",presetArray);
            jsonArray.add(json);
        }
        return jsonArray;
    }
    /**
     * 医院推送的全流程指引
     * type 全流程流程类型
     */
    @Async
    public void sendGuidanceInfo(String jsonData){
        BaseProcessGuidanceThirdPushLogDO thirdPushLogDO = JSONObject.parseObject(jsonData, BaseProcessGuidanceThirdPushLogDO.class);
        String api = thirdPushLogDO.getApi();
        String param = thirdPushLogDO.getParam();
        String nodeCode = thirdPushLogDO.getNodeCode();
        if(StringUtils.isNotBlank(param)&&param.length()>22000){
            thirdPushLogDO.setParam(param.substring(0,22000));
        }
        try {
            /**
             * 根据不同的api调用不同的方法
             */
            switch (api){
                case "gotoOrg":
                    gotoOrg(thirdPushLogDO);
                    break;
                default:
                    logger.info("未找到适配接口");
                    break;
            }
        }catch (Exception e){
            e.printStackTrace();
        }
        thirdPushLogDO.setCreateTime(new Date());
        thirdPushLogDao.save(thirdPushLogDO);
    }
    @Transactional(rollbackFor = Exception.class)
    public void gotoOrg(BaseProcessGuidanceThirdPushLogDO thirdPushLogDO){
        BaseProcessGuidanceBookingDO bookingDO = JSONObject.parseObject(thirdPushLogDO.getParam(), BaseProcessGuidanceBookingDO.class);
        BasePatientDO patientDO = patientDao.findByIdcard(bookingDO.getIdcard());
        if(patientDO==null){
            bookingDO.setPatient(patientDO.getId());
        }
        bookingDO.setCreateTime(new Date());
        List<BaseProcessGuidancePresetDO> presetDOList = presetDao.findByProcessCode(thirdPushLogDO.getNodeCode());
        if(presetDOList.size()>0){
            BaseProcessGuidancePresetDO presetDO = presetDOList.get(0);
            bookingDO.setGuidanceId(presetDO.getProcessGuidanceId());
            thirdPushLogDO.setGuidanceId(presetDO.getProcessGuidanceId());
        }
        processGuidanceBookingDao.save(bookingDO);
        //新增流程开始日志
        //判断是否唯一的流程标志 暂无
//            String code = UUID.randomUUID().toString().replace("-", "");
        String code = bookingDO.getAdmNo();
        addLog(bookingDO.getPatient(),code, bookingDO.getId(), 1,1,thirdPushLogDO.getNodeCode(),bookingDO.getGuidanceId());
        //新增流程过程日志
        addLog(bookingDO.getPatient(),code, bookingDO.getId(), 2,1,thirdPushLogDO.getNodeCode(),bookingDO.getGuidanceId());
    }
    public void addLog(String patient,String code,String relationId,Integer type,Integer status,String nodeCode,String guidanceId){
        BasePatientProcessGuidanceLogDO logDO = new BasePatientProcessGuidanceLogDO();
        logDO.setCode(code);
        logDO.setPatient(patient);
        logDO.setRelationId(relationId);
        logDO.setType(type);
        logDO.setStatus(status);
        logDO.setGuidanceId(guidanceId);
        logDO.setNodeCode(nodeCode);
        logDO.setCreateTime(new Date());
        patientProcessGuidanceLogDao.save(logDO);
    }
    public void sendGuidance(String patient,String type,String orderId) {

+ 32 - 0
business/base-service/src/main/java/com/yihu/jw/wechat/service/WechatUtilService.java

@ -0,0 +1,32 @@
package com.yihu.jw.wechat.service;
import com.yihu.jw.entity.base.wx.WxAccessTokenDO;
import com.yihu.jw.entity.base.wx.WxTemplateConfigDO;
import com.yihu.jw.util.wechat.WeixinMessagePushUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
/**
 * Created by yeshijie on 2022/11/22.
 */
@Component
public class WechatUtilService {
    @Value("${wechat.id}")
    private String wechatId;
    @Resource
    private WxAccessTokenService wxAccessTokenService;
    @Resource
    private WeixinMessagePushUtils weixinMessagePushUtils;
    public void putWxMsg(String openid, WxTemplateConfigDO newConfig){
        try {
            WxAccessTokenDO wxAccessTokenDO = wxAccessTokenService.getWxAccessTokenById(wechatId);
            weixinMessagePushUtils.putWxMsg(wxAccessTokenDO.getAccessToken(), openid, newConfig);
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

+ 1 - 2
business/base-service/src/main/java/com/yihu/jw/wlyy/dao/OauthWlyyConfigDao.java

@ -1,9 +1,8 @@
package com.yihu.jw.wlyy.dao;
import com.yihu.jw.entity.wlyyinfo.OauthWlyyConfigDO;
import com.yihu.jw.entity.third.wlyyinfo.OauthWlyyConfigDO;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
/**
 * Created by Trick on 2019/8/7.

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

@ -2,7 +2,7 @@ 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.entity.third.wlyyinfo.OauthWlyyConfigDO;
import com.yihu.jw.hospital.dict.WlyyHospitalSysDictDao;
import com.yihu.jw.util.http.HttpClientUtil;
import com.yihu.jw.wlyy.dao.OauthWlyyConfigDao;

+ 930 - 0
common/common-entity/mysql关键字大全.sql

@ -0,0 +1,930 @@
关键字
A
ACCESSIBLE
ACCOUNT
ACTION
ACTIVE
ADD
ADMIN
AFTER
AGAINST
AGGREGATE
ALGORITHM
ALL
ALTER
ALWAYS
ANALYSE
ANALYZE
AND
ANY
ARRAY
AS
ASC
ASCII
ASENSITIVE
AT
ATTRIBUTE
AUTHENTICATION
AUTOEXTEND_SIZE
AUTO_INCREMENT
AVG
AVG_ROW_LENGTH
B
BACKUP
BEFORE
BEGIN
BETWEEN
BIGINT
BINARY
BINLOG
BIT
BLOB
BLOCK
BOOL
BOOLEAN
BOTH
BTREE
BUCKETS
BY
BYTE
C
CACHE
CALL
CASCADE
CASCADED
CASE
CATALOG_NAME
CHAIN
CHALLENGE_RESPONSE
CHANGE
CHANGED
CHANNEL
CHAR
CHARACTER
CHARSET
CHECK
CHECKSUM
CIPHER
CLASS_ORIGIN
CLIENT
CLONE
CLOSE
COALESCE
CODE
COLLATE
COLLATION
COLUMN
COLUMNS
COLUMN_FORMAT
COLUMN_NAME
COMMENT
COMMIT
COMMITTED
COMPACT
COMPLETION
COMPONENT
COMPRESSED
COMPRESSION
CONCURRENT
CONDITION
CONNECTION
CONSISTENT
CONSTRAINT
CONSTRAINT_CATALOG
CONSTRAINT_NAME
CONSTRAINT_SCHEMA
CONTAINS
CONTEXT
CONTINUE
CONVERT
CPU
CREATE
CROSS
CUBE
CUME_DIST
CURRENT
CURRENT_DATE
CURRENT_TIME
CURRENT_TIMESTAMP
CURRENT_USER
CURSOR
CURSOR_NAME
D
DATA
DATABASE
DATABASES
DATAFILE
DATE
DATETIME
DAY
DAY_HOUR
DAY_MICROSECOND
DAY_MINUTE
DAY_SECOND
DEALLOCATE
DEC
DECIMAL
DECLARE
DEFAULT
DEFAULT_AUTH
DEFINER
DEFINITION
DELAYED
DELAY_KEY_WRITE
DELETE
DENSE_RANK
DESC
DESCRIBE
DESCRIPTION
DES_KEY_FILE
DETERMINISTIC
DIAGNOSTICS
DIRECTORY
DISABLE
DISCARD
DISK
DISTINCT
DISTINCTROW
DIV
DO
DOUBLE
DROP
DUAL
DUMPFILE
DUPLICATE
DYNAMIC
E
EACH
ELSE
ELSEIF
EMPTY
ENABLE
ENCLOSED
ENCRYPTION
END
ENDS
ENFORCED
ENGINE
ENGINES
ENGINE_ATTRIBUTE
ENUM
ERROR
ERRORS
ESCAPE
ESCAPED
EVENT
EVENTS
EVERY
EXCEPT
EXCHANGE
EXCLUDE
EXECUTE
EXISTS
EXIT
EXPANSION
EXPIRE
EXPLAIN
EXPORT
EXTENDED
EXTENT_SIZE
F
FACTOR
FAILED_LOGIN_ATTEMPTS
FALSE
FAST
FAULTS
FETCH
FIELDS
FILE
FILE_BLOCK_SIZE
FILTER
FINISH
FIRST
FIRST_VALUE
FIXED
FLOAT
FLOAT4
FLOAT8
FLUSH
FOLLOWING
FOLLOWS
FOR
FORCE
FOREIGN
FORMAT
FOUND
FROM
FULL
FULLTEXT
FUNCTION
G
GENERAL
GENERATED
GEOMCOLLECTION
GEOMETRY
GEOMETRYCOLLECTION
GET
GET_FORMAT
GET_MASTER_PUBLIC_KEY
GET_SOURCE_PUBLIC_KEY
GLOBAL
GRANT
GRANTS
GROUP
GROUPING
GROUPS
GROUP_REPLICATION
H
HANDLER
HASH
HAVING
HELP
HIGH_PRIORITY
HISTOGRAM
HISTORY
HOST
HOSTS
HOUR
HOUR_MICROSECOND
HOUR_MINUTE
HOUR_SECOND
I
IDENTIFIED
IF
IGNORE
IGNORE_SERVER_IDS
IMPORT
IN
INACTIVE
INDEX
INDEXES
INFILE
INITIAL
INITIAL_SIZE
INITIATE
INNER
INOUT
INSENSITIVE
INSERT
INSERT_METHOD
INSTALL
INSTANCE
INT
INT1
INT2
INT3
INT4
INT8
INTEGER
INTERVAL
INTO
INVISIBLE
INVOKER
IO
IO_AFTER_GTIDS
IO_BEFORE_GTIDS
IO_THREAD
IPC
IS
ISOLATION
ISSUER
ITERATE
J
JOIN
JSON
JSON_TABLE
JSON_VALUE
K
KEY
KEYRING
KEYS
KEY_BLOCK_SIZE
KILL
L
LAG
LANGUAGE
LAST
LAST_VALUE
LATERAL
LEAD
LEADING
LEAVE
LEAVES
LEFT
LESS
LEVEL
LIKE
LIMIT
LINEAR
LINES
LINESTRING
LIST
LOAD
LOCAL
LOCALTIME
LOCALTIMESTAMP
LOCK
LOCKED
LOCKS
LOGFILE
LOGS
LONG
LONGBLOB
LONGTEXT
LOOP
LOW_PRIORITY
M
MASTER
MASTER_AUTO_POSITION
MASTER_BIND
MASTER_COMPRESSION_ALGORITHMS
MASTER_CONNECT_RETRY
MASTER_DELAY
MASTER_HEARTBEAT_PERIOD
MASTER_HOST
MASTER_LOG_FILE
MASTER_LOG_POS
MASTER_PASSWORD
MASTER_PORT
MASTER_PUBLIC_KEY_PATH
MASTER_RETRY_COUNT
MASTER_SERVER_ID
MASTER_SSL
MASTER_SSL_CA
MASTER_SSL_CAPATH
MASTER_SSL_CERT
MASTER_SSL_CIPHER
MASTER_SSL_CRL
MASTER_SSL_CRLPATH
MASTER_SSL_KEY
MASTER_SSL_VERIFY_SERVER_CERT
MASTER_TLS_CIPHERSUITES
MASTER_TLS_VERSION
MASTER_USER
MASTER_ZSTD_COMPRESSION_LEVEL
MATCH
MAXVALUE
MAX_CONNECTIONS_PER_HOUR
MAX_QUERIES_PER_HOUR
MAX_ROWS
MAX_SIZE
MAX_UPDATES_PER_HOUR
MAX_USER_CONNECTIONS
MEDIUM
MEDIUMBLOB
MEDIUMINT
MEDIUMTEXT
MEMBER
MEMORY
MERGE
MESSAGE_TEXT
MICROSECOND
MIDDLEINT
MIGRATE
MINUTE
MINUTE_MICROSECOND
MINUTE_SECOND
MIN_ROWS
MOD
MODE
MODIFIES
MODIFY
MONTH
MULTILINESTRING
MULTIPOINT
MULTIPOLYGON
MUTEX
MYSQL_ERRNO
N
NAME
NAMES
NATIONAL
NATURAL
NCHAR
NDB
NDBCLUSTER
NESTED
NETWORK_NAMESPACE
NEVER
NEW
NEXT
NO
NODEGROUP
NONE
NOT
NOWAIT
NO_WAIT
NO_WRITE_TO_BINLOG
NTH_VALUE
NTILE
NULL
NULLS
NUMBER
NUMERIC
NVARCHAR
O
OF
OFF
OFFSET
OJ
OLD
ON
ONE
ONLY
OPEN
OPTIMIZE
OPTIMIZER_COSTS
OPTION
OPTIONAL
OPTIONALLY
OPTIONS
OR
ORDER
ORDINALITY
ORGANIZATION
OTHERS
OUT
OUTER
OUTFILE
OVER
OWNER
P
PACK_KEYS
PAGE
PARSER
PARTIAL
PARTITION
PARTITIONING
PARTITIONS
PASSWORD
PASSWORD_LOCK_TIME
PATH
PERCENT_RANK
PERSIST
PERSIST_ONLY
PHASE
PLUGIN
PLUGINS
PLUGIN_DIR
POINT
POLYGON
PORT
PRECEDES
PRECEDING
PRECISION
PREPARE
PRESERVE
PREV
PRIMARY
PRIVILEGES
PRIVILEGE_CHECKS_USER
PROCEDURE
PROCESS
PROCESSLIST
PROFILE
PROFILES
PROXY
PURGE
Q
QUARTER
QUERY
QUICK
R
RANDOM
RANGE
RANK
READ
READS
READ_ONLY
READ_WRITE
REAL
REBUILD
RECOVER
RECURSIVE
REDOFILE
REDO_BUFFER_SIZE
REDUNDANT
REFERENCE
REFERENCES
REGEXP
REGISTRATION
RELAY
RELAYLOG
RELAY_LOG_FILE
RELAY_LOG_POS
RELAY_THREAD
RELEASE
RELOAD
REMOTE
REMOVE
RENAME
REORGANIZE
REPAIR
REPEAT
REPEATABLE
REPLACE
REPLICA
REPLICAS
REPLICATE_DO_DB
REPLICATE_DO_TABLE
REPLICATE_IGNORE_DB
REPLICATE_IGNORE_TABLE
REPLICATE_REWRITE_DB
REPLICATE_WILD_DO_TABLE
REPLICATE_WILD_IGNORE_TABLE
REPLICATION
REQUIRE
REQUIRE_ROW_FORMAT
RESET
RESIGNAL
RESOURCE
RESPECT
RESTART
RESTORE
RESTRICT
RESUME
RETAIN
RETURN
RETURNED_SQLSTATE
RETURNING
RETURNS
REUSE
REVERSE
REVOKE
RIGHT
RLIKE
ROLE
ROLLBACK
ROLLUP
ROTATE
ROUTINE
ROW
ROWS
ROW_COUNT
ROW_FORMAT
ROW_NUMBER
RTREE
S
SAVEPOINT
SCHEDULE
SCHEMA
SCHEMAS
SCHEMA_NAME
SECOND
SECONDARY
SECONDARY_ENGINE
SECONDARY_ENGINE_ATTRIBUTE
SECONDARY_LOAD
SECONDARY_UNLOAD
SECOND_MICROSECOND
SECURITY
SELECT
    SENSITIVE
        SEPARATOR
    SERIAL
    SERIALIZABLE
    SERVER
    SESSION
SET
    SHARE
    SHOW
    SHUTDOWN
    SIGNAL
    SIGNED
    SIMPLE
    SKIP
    SLAVE
    SLOW
    SMALLINT
    SNAPSHOT
    SOCKET
    SOME
    SONAME
    SOUNDS
    SOURCE
    SOURCE_AUTO_POSITION
    SOURCE_BIND
    SOURCE_COMPRESSION_ALGORITHMS
    SOURCE_CONNECT_RETRY
    SOURCE_DELAY
    SOURCE_HEARTBEAT_PERIOD
    SOURCE_HOST
    SOURCE_LOG_FILE
    SOURCE_LOG_POS
    SOURCE_PASSWORD
    SOURCE_PORT
    SOURCE_PUBLIC_KEY_PATH
    SOURCE_RETRY_COUNT
    SOURCE_SSL
    SOURCE_SSL_CA
    SOURCE_SSL_CAPATH
    SOURCE_SSL_CERT
    SOURCE_SSL_CIPHER
    SOURCE_SSL_CRL
    SOURCE_SSL_CRLPATH
    SOURCE_SSL_KEY
    SOURCE_SSL_VERIFY_SERVER_CERT
    SOURCE_TLS_CIPHERSUITES
    SOURCE_TLS_VERSION
    SOURCE_USER
    SOURCE_ZSTD_COMPRESSION_LEVEL
    SPATIAL
    SPECIFIC
    SQL
    SQLEXCEPTION
    SQLSTATE
    SQLWARNING
    SQL_AFTER_GTIDS
    SQL_AFTER_MTS_GAPS
    SQL_BEFORE_GTIDS
    SQL_BIG_RESULT
    SQL_BUFFER_RESULT
    SQL_CACHE
    SQL_CALC_FOUND_ROWS
    SQL_NO_CACHE
    SQL_SMALL_RESULT
    SQL_THREAD
    SQL_TSI_DAY
    SQL_TSI_HOUR
    SQL_TSI_MINUTE
    SQL_TSI_MONTH
    SQL_TSI_QUARTER
    SQL_TSI_SECOND
    SQL_TSI_WEEK
    SQL_TSI_YEAR
    SRID
    SSL
    STACKED
START
    STARTING
    STARTS
    STATS_AUTO_RECALC
    STATS_PERSISTENT
    STATS_SAMPLE_PAGES
    STATUS
    STOP
    STORAGE
    STORED
    STRAIGHT_JOIN
    STREAM
    STRING
    SUBCLASS_ORIGIN
    SUBJECT
    SUBPARTITION
    SUBPARTITIONS
    SUPER
    SUSPEND
    SWAPS
    SWITCHES
    SYSTEM
    T
    TABLE
    TABLES
    TABLESPACE
    TABLE_CHECKSUM
    TABLE_NAME
    TEMPORARY
    TEMPTABLE
    TERMINATED
    TEXT
    THAN
    THEN
    THREAD_PRIORITY
    TIES
    TIME
    TIMESTAMP
    TIMESTAMPADD
    TIMESTAMPDIFF
    TINYBLOB
    TINYINT
    TINYTEXT
    TLS
    TO
    TRAILING
    TRANSACTION
    TRIGGER
    TRIGGERS
    TRUE
    TRUNCATE
    TYPE
    TYPES
    U
    UNBOUNDED
    UNCOMMITTED
    UNDEFINED
    UNDO
    UNDOFILE
    UNDO_BUFFER_SIZE
    UNICODE
    UNINSTALL
UNION
UNIQUE
UNKNOWN
UNLOCK
UNREGISTER
UNSIGNED
UNTIL
UPDATE
    UPGRADE
    USAGE
    USE
    USER
    USER_RESOURCES
    USE_FRM
    USING
    UTC_DATE
    UTC_TIME
    UTC_TIMESTAMP
    V
    VALIDATION
    VALUE
VALUES
    VARBINARY
    VARCHAR
    VARCHARACTER
    VARIABLES
    VARYING
    VCPU
    VIEW
    VIRTUAL
    VISIBLE
    W
    WAIT
    WARNINGS
    WEEK
    WEIGHT_STRING
    WHEN
WHERE
    WHILE
    WINDOW
WITH
    WITHOUT
    WORK
    WRAPPER
    WRITE
    X
    X509
    XA
    XID
    XML
    XOR
    Y
    YEAR
    YEAR_MONTH
    Z
    ZEROFILL
    ZONE
    A
    ACTIVE
    ADMIN
    ARRAY
    ATTRIBUTE
    AUTHENTICATION
    B
    BUCKETS
    C
    CHALLENGE_RESPONSE
    CLONE
    COMPONENT
    CUME_DIST
    D
    DEFINITION
    DENSE_RANK
    DESCRIPTION
    E
    EMPTY
    ENFORCED
    ENGINE_ATTRIBUTE
    EXCEPT
    EXCLUDE
    F
    FACTOR
    FAILED_LOGIN_ATTEMPTS
    FINISH
    FIRST_VALUE
    FOLLOWING
    G
    GEOMCOLLECTION
    GET_MASTER_PUBLIC_KEY
    GET_SOURCE_PUBLIC_KEY
    GROUPING
    GROUPS
    H
    HISTOGRAM
    HISTORY
    I
    INACTIVE
    INITIAL
    INITIATE
    INVISIBLE
    J
    JSON_TABLE
    JSON_VALUE
    K
    KEYRING
    L
    LAG
    LAST_VALUE
    LATERAL
    LEAD
    LOCKED
    M
    MASTER_COMPRESSION_ALGORITHMS
    MASTER_PUBLIC_KEY_PATH
    MASTER_TLS_CIPHERSUITES
    MASTER_ZSTD_COMPRESSION_LEVEL
    MEMBER
    N
    NESTED
    NETWORK_NAMESPACE
    NOWAIT
    NTH_VALUE
    NTILE
    NULLS
    O
    OF
    OFF
    OJ
    OLD
    OPTIONAL
    ORDINALITY
    ORGANIZATION
    OTHERS
    OVER
    P
    PASSWORD_LOCK_TIME
    PATH
    PERCENT_RANK
    PERSIST
    PERSIST_ONLY
    PRECEDING
    PRIVILEGE_CHECKS_USER
    PROCESS
    R
    RANDOM
    RANK
    RECURSIVE
    REFERENCE
    REGISTRATION
    REPLICA
    REPLICAS
    REQUIRE_ROW_FORMAT
    RESOURCE
    RESPECT
    RESTART
    RETAIN
    RETURNING
    REUSE
    ROLE
    ROW_NUMBER
    S
    SECONDARY
    SECONDARY_ENGINE
    SECONDARY_ENGINE_ATTRIBUTE
    SECONDARY_LOAD
    SECONDARY_UNLOAD
    SKIP
    SOURCE_AUTO_POSITION
    SOURCE_BIND
    SOURCE_COMPRESSION_ALGORITHMS
    SOURCE_CONNECT_RETRY
    SOURCE_DELAY
    SOURCE_HEARTBEAT_PERIOD
    SOURCE_HOST
    SOURCE_LOG_FILE
    SOURCE_LOG_POS
    SOURCE_PASSWORD
    SOURCE_PORT
    SOURCE_PUBLIC_KEY_PATH
    SOURCE_RETRY_COUNT
    SOURCE_SSL
    SOURCE_SSL_CA
    SOURCE_SSL_CAPATH
    SOURCE_SSL_CERT
    SOURCE_SSL_CIPHER
    SOURCE_SSL_CRL
    SOURCE_SSL_CRLPATH
    SOURCE_SSL_KEY
    SOURCE_SSL_VERIFY_SERVER_CERT
    SOURCE_TLS_CIPHERSUITES
    SOURCE_TLS_VERSION
    SOURCE_USER
    SOURCE_ZSTD_COMPRESSION_LEVEL
    SRID
    STREAM
    SYSTEM
    T
    THREAD_PRIORITY
    TIES
    TLS
    U
    UNBOUNDED
    UNREGISTER
    V
    VCPU
    VISIBLE
    W
    WINDOW
    Z
    ZONE

+ 0 - 298
common/common-entity/src/main/java/com/yihu/jw/entity/archives/PatientArchivesDO.java

@ -1,298 +0,0 @@
package com.yihu.jw.entity.archives;
import com.yihu.jw.entity.UuidIdentityEntityWithOperator;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.io.Serializable;
import java.util.Date;
/**
 * Created by Trick on 2018/2/7.
 */
@Entity
@Table(name = "wlyy_patient_archives")
public class PatientArchivesDO extends UuidIdentityEntityWithOperator implements Serializable {
    @Column(name = "saas_id")
    private String saasId; //saasid
    @Column(name = "patient_code")
    private String patientCode;//关联居民登录code
    @Column(name = "patient_name")
    private String patientName;//姓名
    @Column(name = "idcard")
    private String idcard;//身份证号
    @Column(name = "birthday")
    private Date birthday;//生日
    @Column(name = "sex")
    private String sex;//int(11) DEFAULT NULL COMMENT '性别,1男,2女
    @Column(name = "mobile")
    private String mobile;//手机号
    @Column(name = "ssc")
    private String ssc;//社保卡号
    @Column(name = "status")
    private String status;//int(11) DEFAULT NULL COMMENT '档案状态:1正常,0注销
    @Column(name = "cancel_resean_type")
    private String cancelReseanType;//注销原因:1死亡,2.重复
    @Column(name = "sick_village")
    private String sickVillage;//居委会代码(字典)
    @Column(name = "sick_village_name")
    private String sickVillageName;//居委会
    @Column(name = "resident_type")
    private String residentType;//常住类型 :1户籍,2非户籍
    @Column(name = "blood")
    private String blood;//血型:A,AB,O,B,N(不详)
    @Column(name = "RH")
    private String RH;//1,阴性;2阳性;0 不详
    @Column(name = "nation_code")
    private String nationCode;//民族code(字典)
    @Column(name = "nation")
    private String nation;//民族名称
    @Column(name = "work_place")
    private String workPlace;//工作地点
    @Column(name = "contact_people")
    private String contactPeople;//联系人
    @Column(name = "contact_mobile")
    private String contactMobile;//联系人电话
    @Column(name = "education_code")
    private String educationCode;//文化程度(字典)
    @Column(name = "education")
    private String education;//文化程度
    @Column(name = "profession_code")
    private String professionCode;//职业(字典)
    @Column(name = "profession")
    private String profession;//职业
    @Column(name = "marriage_code")// ·
    private String marriageCode;//婚姻状况(字典)
    @Column(name = "marriage")
    private String marriage;//婚姻状况
    @Column(name = "payment_code")
    private String paymentCode;//支付方式(字典)
    @Column(name = "payment")
    private String payment;// 支付方式
    public String getPatientCode() {
        return patientCode;
    }
    public void setPatientCode(String patientCode) {
        this.patientCode = patientCode;
    }
    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 Date getBirthday() {
        return birthday;
    }
    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    public String getMobile() {
        return mobile;
    }
    public void setMobile(String mobile) {
        this.mobile = mobile;
    }
    public String getSsc() {
        return ssc;
    }
    public void setSsc(String ssc) {
        this.ssc = ssc;
    }
    public String getStatus() {
        return status;
    }
    public void setStatus(String status) {
        this.status = status;
    }
    public String getCancelReseanType() {
        return cancelReseanType;
    }
    public void setCancelReseanType(String cancelReseanType) {
        this.cancelReseanType = cancelReseanType;
    }
    public String getSickVillage() {
        return sickVillage;
    }
    public void setSickVillage(String sickVillage) {
        this.sickVillage = sickVillage;
    }
    public String getSickVillageName() {
        return sickVillageName;
    }
    public void setSickVillageName(String sickVillageName) {
        this.sickVillageName = sickVillageName;
    }
    public String getResidentType() {
        return residentType;
    }
    public void setResidentType(String residentType) {
        this.residentType = residentType;
    }
    public String getBlood() {
        return blood;
    }
    public void setBlood(String blood) {
        this.blood = blood;
    }
    public String getRH() {
        return RH;
    }
    public void setRH(String RH) {
        this.RH = RH;
    }
    public String getNationCode() {
        return nationCode;
    }
    public void setNationCode(String nationCode) {
        this.nationCode = nationCode;
    }
    public String getNation() {
        return nation;
    }
    public void setNation(String nation) {
        this.nation = nation;
    }
    public String getWorkPlace() {
        return workPlace;
    }
    public void setWorkPlace(String workPlace) {
        this.workPlace = workPlace;
    }
    public String getContactPeople() {
        return contactPeople;
    }
    public void setContactPeople(String contactPeople) {
        this.contactPeople = contactPeople;
    }
    public String getContactMobile() {
        return contactMobile;
    }
    public void setContactMobile(String contactMobile) {
        this.contactMobile = contactMobile;
    }
    public String getEducationCode() {
        return educationCode;
    }
    public void setEducationCode(String educationCode) {
        this.educationCode = educationCode;
    }
    public String getEducation() {
        return education;
    }
    public void setEducation(String education) {
        this.education = education;
    }
    public String getProfessionCode() {
        return professionCode;
    }
    public void setProfessionCode(String professionCode) {
        this.professionCode = professionCode;
    }
    public String getProfession() {
        return profession;
    }
    public void setProfession(String profession) {
        this.profession = profession;
    }
    public String getMarriageCode() {
        return marriageCode;
    }
    public void setMarriageCode(String marriageCode) {
        this.marriageCode = marriageCode;
    }
    public String getMarriage() {
        return marriage;
    }
    public void setMarriage(String marriage) {
        this.marriage = marriage;
    }
    public String getPaymentCode() {
        return paymentCode;
    }
    public void setPaymentCode(String paymentCode) {
        this.paymentCode = paymentCode;
    }
    public String getPayment() {
        return payment;
    }
    public void setPayment(String payment) {
        this.payment = payment;
    }
    public String getSaasId() {
        return saasId;
    }
    public void setSaasId(String saasId) {
        this.saasId = saasId;
    }
}

+ 0 - 99
common/common-entity/src/main/java/com/yihu/jw/entity/archives/PatientArchivesInfoDO.java

@ -1,99 +0,0 @@
package com.yihu.jw.entity.archives;
import com.yihu.jw.entity.UuidIdentityEntityWithOperator;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.io.Serializable;
import java.util.Date;
/**
 * Created by Trick on 2018/2/7.
 */
@Entity
@Table(name = "wlyy_patient_archives_info")
public class PatientArchivesInfoDO extends UuidIdentityEntityWithOperator implements Serializable {
    @Column(name = "saas_id")
    private String saasId; //saasid
    @Column(name = "archives_code")
    private String archivesCode; //档案code
    @Column(name = "level1")
    private String level1;//1.历史情况,2.既往史,3.家族史,4.生活环境
    @Column(name = "level2")
    private String level2; //子类别
    @Column(name = "key")
    private String key; //字典值,或判断值(有,无)
    @Column(name = "value")
    private String value; //字典名称
    @Column(name = "date")
    private Date date;//关联时间
    @Column(name = "remark")
    private String remark; //备注/其他/描述/详情
    public String getSaasId() {
        return saasId;
    }
    public void setSaasId(String saasId) {
        this.saasId = saasId;
    }
    public String getArchivesCode() {
        return archivesCode;
    }
    public void setArchivesCode(String archivesCode) {
        this.archivesCode = archivesCode;
    }
    public String getLevel1() {
        return level1;
    }
    public void setLevel1(String level1) {
        this.level1 = level1;
    }
    public String getLevel2() {
        return level2;
    }
    public void setLevel2(String level2) {
        this.level2 = level2;
    }
    public String getKey() {
        return key;
    }
    public void setKey(String key) {
        this.key = key;
    }
    public String getValue() {
        return value;
    }
    public void setValue(String value) {
        this.value = value;
    }
    public Date getDate() {
        return date;
    }
    public void setDate(Date date) {
        this.date = date;
    }
    public String getRemark() {
        return remark;
    }
    public void setRemark(String remark) {
        this.remark = remark;
    }
}

+ 1 - 1
common/common-entity/src/main/java/com/yihu/jw/entity/ca/OauthCaConfigDO.java

@ -1,4 +1,4 @@
package com.yihu.jw.entity.ca;
package com.yihu.jw.entity.base.ca;
import com.yihu.jw.entity.UuidIdentityEntity;

+ 56 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/base/dict/BaseCopywritingDO.java

@ -0,0 +1,56 @@
package com.yihu.jw.entity.base.dict;
import com.yihu.jw.entity.UuidIdentityEntityWithCreateTime;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
 * Created by yeshijie on 2022/11/28.
 */
@Entity
@Table(name = "base_copywriting")
public class BaseCopywritingDO extends UuidIdentityEntityWithCreateTime {
    private String content;//文案
    private String modular;//模块
    private String scene;//场景
    private String remark;//备注说明
    @Column(name = "content")
    public String getContent() {
        return content;
    }
    public void setContent(String content) {
        this.content = content;
    }
    @Column(name = "modular")
    public String getModular() {
        return modular;
    }
    public void setModular(String modular) {
        this.modular = modular;
    }
    @Column(name = "scene")
    public String getScene() {
        return scene;
    }
    public void setScene(String scene) {
        this.scene = scene;
    }
    @Column(name = "remark")
    public String getRemark() {
        return remark;
    }
    public void setRemark(String remark) {
        this.remark = remark;
    }
}

+ 67 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/base/login/BaseLoginAppDO.java

@ -0,0 +1,67 @@
package com.yihu.jw.entity.base.login;
import com.yihu.jw.entity.UuidIdentityEntityWithCreateTime;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
 * 登录应用表
 * Created by yeshijie on 2022/11/28.
 */
@Entity
@Table(name = "base_login_app")
public class BaseLoginAppDO extends UuidIdentityEntityWithCreateTime {
    private String code;//应用id
    private String ip;//ip端口
    private String name;//应用名称
    private String customerName;//客户名称
    private Integer del;//是否生效 1生效 0失效
    @Column(name = "code")
    public String getCode() {
        return code;
    }
    public void setCode(String code) {
        this.code = code;
    }
    @Column(name = "ip")
    public String getIp() {
        return ip;
    }
    public void setIp(String ip) {
        this.ip = ip;
    }
    @Column(name = "name")
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    @Column(name = "customer_name")
    public String getCustomerName() {
        return customerName;
    }
    public void setCustomerName(String customerName) {
        this.customerName = customerName;
    }
    @Column(name = "del")
    public Integer getDel() {
        return del;
    }
    public void setDel(Integer del) {
        this.del = del;
    }
}

+ 77 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/base/login/BaseLoginComponentDO.java

@ -0,0 +1,77 @@
package com.yihu.jw.entity.base.login;
import com.yihu.jw.entity.UuidIdentityEntityWithCreateTime;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
 *  登录终端表
 * Created by yeshijie on 2022/11/28.
 */
@Entity
@Table(name = "base_login_component")
public class BaseLoginComponentDO extends UuidIdentityEntityWithCreateTime {
    private String loginAppId;//登录应用id
    private String name;//终端角色名称
    private String type;//登录终端类型(字典 login_compont_type)
    private String loginType;//登录类型(字典 login_type)
    private String registField;//注册字段(字典 regist_field)
    private String backgroudImg;//背景图
    @Column(name = "login_app_id")
    public String getLoginAppId() {
        return loginAppId;
    }
    public void setLoginAppId(String loginAppId) {
        this.loginAppId = loginAppId;
    }
    @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;
    }
    @Column(name = "login_type")
    public String getLoginType() {
        return loginType;
    }
    public void setLoginType(String loginType) {
        this.loginType = loginType;
    }
    @Column(name = "regist_field")
    public String getRegistField() {
        return registField;
    }
    public void setRegistField(String registField) {
        this.registField = registField;
    }
    @Column(name = "backgroud_img")
    public String getBackgroudImg() {
        return backgroudImg;
    }
    public void setBackgroudImg(String backgroudImg) {
        this.backgroudImg = backgroudImg;
    }
}

+ 97 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/base/patient/BaseIdcardRecordDO.java

@ -0,0 +1,97 @@
package com.yihu.jw.entity.base.patient;
import com.yihu.jw.entity.UuidIdentityEntityWithCreateTime;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
 * 居民证件记录
 * Created by yeshijie on 2022/11/28.
 */
@Entity
@Table(name = "base_idcard_record")
public class BaseIdcardRecordDO extends UuidIdentityEntityWithCreateTime {
    private String patient;
    private String name;//姓名
    private String idcard;//卡号
    private String idcardFront;//证件正面
    private String idcardBack;//证件反面
    private String headImage;//手持证件照
    private String type;//身份证类型 1身份证 见字典表idcard_type
    private String status;//状态 1已验证 0未验证
    @Column(name = "patient")
    public String getPatient() {
        return patient;
    }
    public void setPatient(String patient) {
        this.patient = patient;
    }
    @Column(name = "name")
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    @Column(name = "idcard")
    public String getIdcard() {
        return idcard;
    }
    public void setIdcard(String idcard) {
        this.idcard = idcard;
    }
    @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 = "head_image")
    public String getHeadImage() {
        return headImage;
    }
    public void setHeadImage(String headImage) {
        this.headImage = headImage;
    }
    @Column(name = "type")
    public String getType() {
        return type;
    }
    public void setType(String type) {
        this.type = type;
    }
    @Column(name = "status")
    public String getStatus() {
        return status;
    }
    public void setStatus(String status) {
        this.status = status;
    }
}

+ 87 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/base/processGuidance/BasePatientProcessGuidanceLogDO.java

@ -0,0 +1,87 @@
package com.yihu.jw.entity.base.processGuidance;
import com.yihu.jw.entity.UuidIdentityEntityWithCreateTime;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
 * 居民全流程指引日志
 * Created by yeshijie on 2022/11/23.
 */
@Entity
@Table(name = "base_patient_process_guidance_log")
public class BasePatientProcessGuidanceLogDO extends UuidIdentityEntityWithCreateTime {
    private String patient;
    private String code;//居民流程编码  一个居民同一个流程编码相同
    private Integer type;//类型 1开始流程记录 2具体流程记录日志
    private Integer status;//状态 0取消 1进行中 2已完成
    private String relationId;//关联id
    private String nodeCode;//节点
    private String guidanceId;//流程id
    @Column(name = "patient")
    public String getPatient() {
        return patient;
    }
    public void setPatient(String patient) {
        this.patient = patient;
    }
    @Column(name = "code")
    public String getCode() {
        return code;
    }
    public void setCode(String code) {
        this.code = code;
    }
    @Column(name = "type")
    public Integer getType() {
        return type;
    }
    public void setType(Integer type) {
        this.type = type;
    }
    @Column(name = "status")
    public Integer getStatus() {
        return status;
    }
    public void setStatus(Integer status) {
        this.status = status;
    }
    @Column(name = "relation_id")
    public String getRelationId() {
        return relationId;
    }
    public void setRelationId(String relationId) {
        this.relationId = relationId;
    }
    @Column(name = "node_code")
    public String getNodeCode() {
        return nodeCode;
    }
    public void setNodeCode(String nodeCode) {
        this.nodeCode = nodeCode;
    }
    @Column(name = "guidance_id")
    public String getGuidanceId() {
        return guidanceId;
    }
    public void setGuidanceId(String guidanceId) {
        this.guidanceId = guidanceId;
    }
}

+ 126 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/base/processGuidance/BaseProcessGuidanceBookingDO.java

@ -0,0 +1,126 @@
package com.yihu.jw.entity.base.processGuidance;
import com.yihu.jw.entity.UuidIdentityEntityWithCreateTime;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
 * Created by yeshijie on 2022/11/23.
 */
@Entity
@Table(name = "base_process_guidance_booking")
public class BaseProcessGuidanceBookingDO extends UuidIdentityEntityWithCreateTime {
    private String admNo;//就诊编号
    private String guidanceId;//预设流程id
    private String patient;//
    private String name;//就诊人姓名
    private String idcard;//身份证
    private Double fee;//挂号费
    private String orgAddress;//医院地址
    private String registerTime;//挂号时间
    private String deptCode;//科室编码
    private String deptName;//科室名称
    private String deptAddress;//科室地址
    @Column(name = "adm_no")
    public String getAdmNo() {
        return admNo;
    }
    public void setAdmNo(String admNo) {
        this.admNo = admNo;
    }
    @Column(name = "guidance_id")
    public String getGuidanceId() {
        return guidanceId;
    }
    public void setGuidanceId(String guidanceId) {
        this.guidanceId = guidanceId;
    }
    @Column(name = "patient")
    public String getPatient() {
        return patient;
    }
    public void setPatient(String patient) {
        this.patient = patient;
    }
    @Column(name = "name")
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    @Column(name = "idcard")
    public String getIdcard() {
        return idcard;
    }
    public void setIdcard(String idcard) {
        this.idcard = idcard;
    }
    @Column(name = "fee")
    public Double getFee() {
        return fee;
    }
    public void setFee(Double fee) {
        this.fee = fee;
    }
    @Column(name = "org_address")
    public String getOrgAddress() {
        return orgAddress;
    }
    public void setOrgAddress(String orgAddress) {
        this.orgAddress = orgAddress;
    }
    @Column(name = "register_time")
    public String getRegisterTime() {
        return registerTime;
    }
    public void setRegisterTime(String registerTime) {
        this.registerTime = registerTime;
    }
    @Column(name = "dept_code")
    public String getDeptCode() {
        return deptCode;
    }
    public void setDeptCode(String deptCode) {
        this.deptCode = deptCode;
    }
    @Column(name = "dept_name")
    public String getDeptName() {
        return deptName;
    }
    public void setDeptName(String deptName) {
        this.deptName = deptName;
    }
    @Column(name = "dept_address")
    public String getDeptAddress() {
        return deptAddress;
    }
    public void setDeptAddress(String deptAddress) {
        this.deptAddress = deptAddress;
    }
}

+ 22 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/base/processGuidance/BaseProcessGuidancePresetDO.java

@ -5,6 +5,7 @@ import com.yihu.jw.entity.UuidIdentityEntityWithCreateTime;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;
/**
 * 全流程指引预设流程
@ -20,6 +21,9 @@ public class BaseProcessGuidancePresetDO extends UuidIdentityEntityWithCreateTim
    private Integer sortNo;//步骤排序
    private Integer isOptional;//是否可选项(1必要项,2可选项 )
    private Integer status;//状态 0未做 1已做
    private Object obj;//已做的明细
    @Column(name = "process_guidance_id")
    public String getProcessGuidanceId() {
        return processGuidanceId;
@ -64,4 +68,22 @@ public class BaseProcessGuidancePresetDO extends UuidIdentityEntityWithCreateTim
    public void setIsOptional(Integer isOptional) {
        this.isOptional = isOptional;
    }
    @Transient
    public Integer getStatus() {
        return status;
    }
    public void setStatus(Integer status) {
        this.status = status;
    }
    @Transient
    public Object getObj() {
        return obj;
    }
    public void setObj(Object obj) {
        this.obj = obj;
    }
}

+ 67 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/base/processGuidance/BaseProcessGuidanceThirdPushLogDO.java

@ -0,0 +1,67 @@
package com.yihu.jw.entity.base.processGuidance;
import com.yihu.jw.entity.UuidIdentityEntityWithCreateTime;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
 * 全流程指引第三方推送日志
 * Created by yeshijie on 2022/11/29.
 */
@Entity
@Table(name = "base_process_guidance_third_push_log")
public class BaseProcessGuidanceThirdPushLogDO extends UuidIdentityEntityWithCreateTime {
    private String param;//推送的接口参数
    private String idcard;//身份证
    private String nodeCode;//节点code (不同流程的相同节点可能处理不一样)
    private String guidanceId;//流程Id
    private String api;//接口地址
    @Column(name = "param")
    public String getParam() {
        return param;
    }
    public void setParam(String param) {
        this.param = param;
    }
    @Column(name = "idcard")
    public String getIdcard() {
        return idcard;
    }
    public void setIdcard(String idcard) {
        this.idcard = idcard;
    }
    @Column(name = "node_code")
    public String getNodeCode() {
        return nodeCode;
    }
    public void setNodeCode(String nodeCode) {
        this.nodeCode = nodeCode;
    }
    @Column(name = "guidance_id")
    public String getGuidanceId() {
        return guidanceId;
    }
    public void setGuidanceId(String guidanceId) {
        this.guidanceId = guidanceId;
    }
    @Column(name = "api")
    public String getApi() {
        return api;
    }
    public void setApi(String api) {
        this.api = api;
    }
}

+ 1 - 1
common/common-entity/src/main/java/com/yihu/jw/entity/sf/SfConfigDO.java

@ -1,4 +1,4 @@
package com.yihu.jw.entity.sf;
package com.yihu.jw.entity.base.sf;
import com.yihu.jw.entity.UuidIdentityEntity;

+ 1 - 1
common/common-entity/src/main/java/com/yihu/jw/entity/child/BaseChildManage.java

@ -1,4 +1,4 @@
package com.yihu.jw.entity.child;
package com.yihu.jw.entity.care.child;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yihu.jw.entity.UuidIdentityEntity;

+ 442 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/hospital/booking/PatientReservation.java

@ -0,0 +1,442 @@
package com.yihu.jw.entity.hospital.booking;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yihu.jw.entity.IdEntity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import java.util.Date;
/**
 * 预约挂号记录表
 * @author George
 *
 */
@Entity
@Table(name = "wlyy_patient_reservation")
@SequenceGenerator(name="id_generated", sequenceName="wlyy_patient_reservation")
public class PatientReservation extends IdEntity {
	/**
	 *
	 */
	private static final long serialVersionUID = 8452660447546825044L;
	// 预约号/预约流水号
	private String code;
	// 医生标识(医生帮患者预约时才会有值)
	private String doctor;
	// 医生姓名(医生帮患者预约时才会有值)
	private String dname;
	// 患者标识
	private String patient;
	// 患者身份证
	private String idcard;
	// 患者姓名
	private String name;
	// 患者手机号
	private String phone;
	// 患者社保卡号
	private String ssc;
	// 预约时间段:AM (上午)或者PM (下午)
	private String sectionType;
	// 一次预约段的开始时间
	private Date startTime;
	// 一次预约段的结束时间
	private Date endTime;
	// 医生所在医疗机构编码
	private String orgCode;
	// 医疗机构名称
	private String orgName;
	// 科室编码
	private String deptCode;
	// 科室名称
	private String deptName;
	// 专家ID/编码
	private String doctorCode;
	// 专家姓名
	private String doctorName;
	// 专家头像
	private String doctorPhoto;
	// 专家职称
	private String doctorJob;
	// 状态:1预约成功,0预约取消
	private Integer status;
	//取消预约者(状态为预约取消时才有值)
	private String canceler;
	//取消预约者姓名(状态为预约取消时才有值)
	private String cancelerName;
	//取消预约者角色(状态为预约取消时才有值)1专科医生,2全科医生,3健康管理师,4临时专科 5.患者 (与医生服务团队角色一直)6.客服
	private Integer cancelerType;
	//取消时间(状态为预约取消时才有值)
	private String cancelerTime;
	// 预约时间
	private Date czrq;
	// 0 健康之路 1智业
	private String type;
	// 签约类型 1三师 2家庭
	private Integer signType;
	// 行政团队
	private Long adminTeamCode;
	//关联电话记录Code(通过客服系统预约才有值)
	private String callCode;
	//客服系统客服code(通过客服系统预约才有值)
	private String userCode;
	//客服系统客服name(通过客服系统预约才有值)
	private String userName;
	//转诊类型 1普诊 2复诊
	private Integer reservationType;
	//附带消息类型(0:健康咨询  1:康复计划 2:门诊记录 3:住院记录 4:检查检验 5:用药记录 6:体检记录 7:血压情况  8
	//:血糖情况 9:产检记录 10:免疫记录  11:筛查报告)
	private String incidentalMsgType;
	//附带消息内容大概
	private String incidentalMsg;
	//转诊原因
	private String reservationReason;
	//参数json字符串
	private String paramJson;
	//业务关联code
	private String relationCode;
	private Integer source;//代预约来源(1体征预警 2疾病筛查 3康复复诊 4健康咨询)
	private Integer patientReadStatus;
	private Integer doctorReadStatus;
	public String getCode() {
		return code;
	}
	public void setCode(String code) {
		this.code = code;
	}
	public String getDoctor() {
		return doctor;
	}
	public void setDoctor(String doctor) {
		this.doctor = doctor;
	}
	public String getDname() {
		return dname;
	}
	public void setDname(String dname) {
		this.dname = dname;
	}
	public String getPatient() {
		return patient;
	}
	public void setPatient(String patient) {
		this.patient = patient;
	}
	public String getIdcard() {
		return idcard;
	}
	public void setIdcard(String idcard) {
		this.idcard = idcard;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPhone() {
		return phone;
	}
	public void setPhone(String phone) {
		this.phone = phone;
	}
	public String getSsc() {
		return ssc;
	}
	public void setSsc(String ssc) {
		this.ssc = ssc;
	}
	@Column(name = "section_type")
	public String getSectionType() {
		return sectionType;
	}
	public void setSectionType(String sectionType) {
		this.sectionType = sectionType;
	}
	@Column(name = "start_time")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
	public Date getStartTime() {
		return startTime;
	}
	public void setStartTime(Date startTime) {
		this.startTime = startTime;
	}
	@Column(name = "end_time")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
	public Date getEndTime() {
		return endTime;
	}
	public void setEndTime(Date endTime) {
		this.endTime = endTime;
	}
	@Column(name = "org_code")
	public String getOrgCode() {
		return orgCode;
	}
	public void setOrgCode(String orgCode) {
		this.orgCode = orgCode;
	}
	@Column(name = "org_name")
	public String getOrgName() {
		return orgName;
	}
	public void setOrgName(String orgName) {
		this.orgName = orgName;
	}
	@Column(name = "dept_code")
	public String getDeptCode() {
		return deptCode;
	}
	public void setDeptCode(String deptCode) {
		this.deptCode = deptCode;
	}
	@Column(name = "dept_name")
	public String getDeptName() {
		return deptName;
	}
	public void setDeptName(String deptName) {
		this.deptName = deptName;
	}
	@Column(name = "doctor_code")
	public String getDoctorCode() {
		return doctorCode;
	}
	public void setDoctorCode(String doctorCode) {
		this.doctorCode = doctorCode;
	}
	@Column(name = "doctor_name")
	public String getDoctorName() {
		return doctorName;
	}
	public void setDoctorName(String doctorName) {
		this.doctorName = doctorName;
	}
	@Column(name = "doctor_photo")
	public String getDoctorPhoto() {
		return doctorPhoto;
	}
	public void setDoctorPhoto(String doctorPhoto) {
		this.doctorPhoto = doctorPhoto;
	}
	@Column(name = "doctor_job")
	public String getDoctorJob() {
		return doctorJob;
	}
	public void setDoctorJob(String doctorJob) {
		this.doctorJob = doctorJob;
	}
	public Integer getStatus() {
		return status;
	}
	public void setStatus(Integer status) {
		this.status = status;
	}
	public String getCanceler() {
		return canceler;
	}
	public void setCanceler(String canceler) {
		this.canceler = canceler;
	}
	@Column(name = "canceler_name")
	public String getCancelerName() {
		return cancelerName;
	}
	public void setCancelerName(String cancelerName) {
		this.cancelerName = cancelerName;
	}
	@Column(name = "canceler_type")
	public Integer getCancelerType() {
		return cancelerType;
	}
	public void setCancelerType(Integer cancelerType) {
		this.cancelerType = cancelerType;
	}
	@Column(name = "canceler_time")
	public String getCancelerTime() {
		return cancelerTime;
	}
	public void setCancelerTime(String cancelerTime) {
		this.cancelerTime = cancelerTime;
	}
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
	public Date getCzrq() {
		return czrq;
	}
	public void setCzrq(Date czrq) {
		this.czrq = czrq;
	}
	public String getType() {
		return type;
	}
	public void setType(String type) {
		this.type = type;
	}
	public Integer getSignType() {
		return signType;
	}
	public void setSignType(Integer signType) {
		this.signType = signType;
	}
	public Long getAdminTeamCode() {
		return adminTeamCode;
	}
	public void setAdminTeamCode(Long adminTeamCode) {
		this.adminTeamCode = adminTeamCode;
	}
	public String getCallCode() {
		return callCode;
	}
	public void setCallCode(String callCode) {
		this.callCode = callCode;
	}
	public String getUserCode() {
		return userCode;
	}
	public void setUserCode(String userCode) {
		this.userCode = userCode;
	}
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public Integer getReservationType() {
		return reservationType;
	}
	public void setReservationType(Integer reservationType) {
		this.reservationType = reservationType;
	}
	public String getIncidentalMsgType() {
		return incidentalMsgType;
	}
	public void setIncidentalMsgType(String incidentalMsgType) {
		this.incidentalMsgType = incidentalMsgType;
	}
	public String getIncidentalMsg() {
		return incidentalMsg;
	}
	public void setIncidentalMsg(String incidentalMsg) {
		this.incidentalMsg = incidentalMsg;
	}
	public String getReservationReason() {
		return reservationReason;
	}
	public void setReservationReason(String reservationReason) {
		this.reservationReason = reservationReason;
	}
	public String getParamJson() {
		return paramJson;
	}
	public void setParamJson(String paramJson) {
		this.paramJson = paramJson;
	}
	public String getRelationCode() {
		return relationCode;
	}
	public void setRelationCode(String relationCode) {
		this.relationCode = relationCode;
	}
	public Integer getSource() {
		return source;
	}
	public void setSource(Integer source) {
		this.source = source;
	}
	public Integer getPatientReadStatus() {
		return patientReadStatus;
	}
	public void setPatientReadStatus(Integer patientReadStatus) {
		this.patientReadStatus = patientReadStatus;
	}
	public Integer getDoctorReadStatus() {
		return doctorReadStatus;
	}
	public void setDoctorReadStatus(Integer doctorReadStatus) {
		this.doctorReadStatus = doctorReadStatus;
	}
}

+ 49 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/hospital/booking/ReservationHospitalDept.java

@ -0,0 +1,49 @@
package com.yihu.jw.entity.hospital.booking;
import com.yihu.jw.entity.IdEntity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
/**
 * Created by wangzhinan on 2019/9/11.
 * 预约科室
 */
@Entity
@Table(name = "wlyy_reservation_hospital_dept")
@SequenceGenerator(name="id_generated", sequenceName="wlyy_reservation_hospital_dept")
public class ReservationHospitalDept extends IdEntity {
    private String code;//科室编码
    private String hospitalCode;//医院或者社区编码
    private String name;//科室名称
    @Column(name = "code")
    public String getCode() {
        return code;
    }
    public void setCode(String code) {
        this.code = code;
    }
    @Column(name ="hospital_code")
    public String getHospitalCode() {
        return hospitalCode;
    }
    public void setHospitalCode(String hospitalCode) {
        this.hospitalCode = hospitalCode;
    }
    @Column(name = "name")
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}

+ 3 - 1
common/common-entity/src/main/java/com/yihu/jw/entity/hospital/message/SystemMessageDO.java

@ -35,6 +35,8 @@ public class SystemMessageDO extends UuidIdentityEntity {
     * 天气预报 995
     * 整点定时发送 996
     * 人工手动系统推送 999
     *
     * 类型详情见 base_system_message_type
     */
    private String type;
    /**
@ -240,7 +242,7 @@ public class SystemMessageDO extends UuidIdentityEntity {
        this.createTime = createTime;
    }
    @Column(name = "over")
    @Column(name = "is_over")
    public String getOver() {
        return over;
    }

+ 101 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/hospital/prescription/BaseDrugsPlanDO.java

@ -0,0 +1,101 @@
package com.yihu.jw.entity.hospital.prescription;
import com.yihu.jw.entity.UuidIdentityEntityWithCreateTime;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;
import java.util.List;
/**
 * 居民用药计划
 * Created by yeshijie on 2022/11/24.
 */
@Entity
@Table(name = "base_drugs_plan")
public class BaseDrugsPlanDO extends UuidIdentityEntityWithCreateTime {
    private String title;//标题默认 用药计划',
    private String patient;
    private String patientName;
    private String doctor;
    private String doctorName;
    private String type;//关联类型 1处方
    private String relationId;//关联id
    //用药明细
    private List<BaseDrugsPlanDetailDO> detailList;
    @Column(name = "title")
    public String getTitle() {
        return title;
    }
    public void setTitle(String title) {
        this.title = title;
    }
    @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 = "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 = "type")
    public String getType() {
        return type;
    }
    public void setType(String type) {
        this.type = type;
    }
    @Column(name = "relation_id")
    public String getRelationId() {
        return relationId;
    }
    public void setRelationId(String relationId) {
        this.relationId = relationId;
    }
    @Transient
    public List<BaseDrugsPlanDetailDO> getDetailList() {
        return detailList;
    }
    public void setDetailList(List<BaseDrugsPlanDetailDO> detailList) {
        this.detailList = detailList;
    }
}

+ 385 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/hospital/prescription/BaseDrugsPlanDetailDO.java

@ -0,0 +1,385 @@
package com.yihu.jw.entity.hospital.prescription;
import com.yihu.jw.entity.UuidIdentityEntityWithCreateTime;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
 * 用药计划明细
 * Created by yeshijie on 2022/11/24.
 */
@Entity
@Table(name = "base_drugs_plan_detail")
public class BaseDrugsPlanDetailDO extends UuidIdentityEntityWithCreateTime {
    /**
     * 关联表base_drugs_plan id
     */
    private String planId;
    /**
     * 药品编号
     */
    private String drugNo;
    /**
     * 药品名称
     */
    private String drugName;
    /**
     * 库房号
     */
    private String dispDeposite;
    /**
     * 药量
     */
    private String dosage;
    /**
     *数量
     */
    private String quantity;
    /**
     *单位
     */
    private String unit;
    /**
     * 單位名稱
     */
    private String unitName;
    /**
     * 包装单位
     */
    private String packUnit;
    /**
     * 包装单位名称
     */
    private String packUnitName;
    /**
     * 用法
     */
    private String supplyCode;
    /**
     * 用法名稱
     */
    private String supplyName;
    /**
     * 天数
     */
    private String days;
    /**
     * 组号
     */
    private String frequency;
    /**
     * 药品收费码
     */
    private String serial;
    /**
     * 库房号
     */
    private String groupNo;
    /**
     * 规格
     */
    private String specification;
    /**
     * 1可用 0删除
     */
    private Integer del;
    /**
     * 频率
     */
    private String usageCode;
    /**
     * 頻率名稱
     */
    private String usageName;
    /**
     *包装价格
     */
    private Double packRetprice;
    /**
     * 中草药数量
     */
    private String herbalCount;
    /**
     * 中草药贴数
     */
    private String postCount;
    /**
     * 中药用法
     */
    private String comm;
    /**
     * 药品产地
     */
    private String drugPlace;
    /**
     * 药房包装
     */
    private Integer packQuantity;
    /**
     * 用法id
     */
    private Integer ypyf;
    @Column(name = "plan_id")
    public String getPlanId() {
        return planId;
    }
    public void setPlanId(String planId) {
        this.planId = planId;
    }
    @Column(name = "drug_no")
    public String getDrugNo() {
        return drugNo;
    }
    public void setDrugNo(String drugNo) {
        this.drugNo = drugNo;
    }
    @Column(name = "drug_name")
    public String getDrugName() {
        return drugName;
    }
    public void setDrugName(String drugName) {
        this.drugName = drugName;
    }
    @Column(name = "disp_deposite")
    public String getDispDeposite() {
        return dispDeposite;
    }
    public void setDispDeposite(String dispDeposite) {
        this.dispDeposite = dispDeposite;
    }
    @Column(name = "dosage")
    public String getDosage() {
        return dosage;
    }
    public void setDosage(String dosage) {
        this.dosage = dosage;
    }
    @Column(name = "quantity")
    public String getQuantity() {
        return quantity;
    }
    public void setQuantity(String quantity) {
        this.quantity = quantity;
    }
    @Column(name = "unit")
    public String getUnit() {
        return unit;
    }
    public void setUnit(String unit) {
        this.unit = unit;
    }
    @Column(name = "supply_code")
    public String getSupplyCode() {
        return supplyCode;
    }
    public void setSupplyCode(String supplyCode) {
        this.supplyCode = supplyCode;
    }
    @Column(name = "days")
    public String getDays() {
        return days;
    }
    public void setDays(String days) {
        this.days = days;
    }
    @Column(name = "frequency")
    public String getFrequency() {
        return frequency;
    }
    public void setFrequency(String frequency) {
        this.frequency = frequency;
    }
    @Column(name = "serial")
    public String getSerial() {
        return serial;
    }
    public void setSerial(String serial) {
        this.serial = serial;
    }
    @Column(name = "group_no")
    public String getGroupNo() {
        return groupNo;
    }
    public void setGroupNo(String groupNo) {
        this.groupNo = groupNo;
    }
    @Column(name = "specification")
    public String getSpecification() {
        return specification;
    }
    public void setSpecification(String specification) {
        this.specification = specification;
    }
    @Column(name = "del")
    public Integer getDel() {
        return del;
    }
    public void setDel(Integer del) {
        this.del = del;
    }
    @Column(name = "unit_name")
    public String getUnitName() {
        return unitName;
    }
    public void setUnitName(String unitName) {
        this.unitName = unitName;
    }
    @Column(name = "supply_name")
    public String getSupplyName() {
        return supplyName;
    }
    public void setSupplyName(String supplyName) {
        this.supplyName = supplyName;
    }
    @Column(name = "usage_code")
    public String getUsageCode() {
        return usageCode;
    }
    public void setUsageCode(String usageCode) {
        this.usageCode = usageCode;
    }
    @Column(name = "usage_name")
    public String getUsageName() {
        return usageName;
    }
    public void setUsageName(String usageName) {
        this.usageName = usageName;
    }
    @Column(name = "pack_unit")
    public String getPackUnit() {
        return packUnit;
    }
    public void setPackUnit(String packUnit) {
        this.packUnit = packUnit;
    }
    @Column(name = "pack_unit_name")
    public String getPackUnitName() {
        return packUnitName;
    }
    public void setPackUnitName(String packUnitName) {
        this.packUnitName = packUnitName;
    }
    @Column(name = "pack_retprice")
    public Double getPackRetprice() {
        return packRetprice;
    }
    public void setPackRetprice(Double packRetprice) {
        this.packRetprice = packRetprice;
    }
    @Column(name = "herbal_count")
    public String getHerbalCount() {
        return herbalCount;
    }
    public void setHerbalCount(String herbalCount) {
        this.herbalCount = herbalCount;
    }
    @Column(name = "post_count")
    public String getPostCount() {
        return postCount;
    }
    public void setPostCount(String postCount) {
        this.postCount = postCount;
    }
    @Column(name = "comm")
    public String getComm() {
        return comm;
    }
    public void setComm(String comm) {
        this.comm = comm;
    }
    @Column(name = "drug_place")
    public String getDrugPlace() {
        return drugPlace;
    }
    public void setDrugPlace(String drugPlace) {
        this.drugPlace = drugPlace;
    }
    @Column(name = "pack_quantity")
    public Integer getPackQuantity() {
        return packQuantity;
    }
    public void setPackQuantity(Integer packQuantity) {
        this.packQuantity = packQuantity;
    }
    @Column(name = "ypyf")
    public Integer getYpyf() {
        return ypyf;
    }
    public void setYpyf(Integer ypyf) {
        this.ypyf = ypyf;
    }
}

+ 198 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/hospital/record/HospitalPatientInpatientRecordDO.java

@ -0,0 +1,198 @@
package com.yihu.jw.entity.hospital.record;
import com.yihu.jw.entity.UuidIdentityEntityWithCreateTime;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
 * 居民医院住院记录
 * Created by yeshijie on 2022/11/28.
 */
@Entity
@Table(name = "hospital_patient_inpatient_record")
public class HospitalPatientInpatientRecordDO extends UuidIdentityEntityWithCreateTime {
    private String idcard;//身份证
    private String name;//居民姓名
    private Integer age;//年龄
    private String birthday;
    private String sex;//性别
    private String marriage;//婚姻状况
    private String patient;
    private String doctor;//主治医生
    private String doctorName;
    private String dept;//科室
    private String deptName;
    private String org;//医院
    private String orgName;
    private String visitTime;//就诊时间
    private String diagnosis;//主诊断编码
    private String diagnosisName;//主诊断
    private String admissionDiagnosis;//入院诊断
    private String dischargeDiagnosis;//出院诊断
    @Column(name = "idcard")
    public String getIdcard() {
        return idcard;
    }
    public void setIdcard(String idcard) {
        this.idcard = idcard;
    }
    @Column(name = "name")
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    @Column(name = "age")
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
    @Column(name = "birthday")
    public String getBirthday() {
        return birthday;
    }
    public void setBirthday(String birthday) {
        this.birthday = birthday;
    }
    @Column(name = "sex")
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    @Column(name = "marriage")
    public String getMarriage() {
        return marriage;
    }
    public void setMarriage(String marriage) {
        this.marriage = marriage;
    }
    @Column(name = "patient")
    public String getPatient() {
        return patient;
    }
    public void setPatient(String patient) {
        this.patient = patient;
    }
    @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 = "org")
    public String getOrg() {
        return org;
    }
    public void setOrg(String org) {
        this.org = org;
    }
    @Column(name = "org_name")
    public String getOrgName() {
        return orgName;
    }
    public void setOrgName(String orgName) {
        this.orgName = orgName;
    }
    @Column(name = "visit_time")
    public String getVisitTime() {
        return visitTime;
    }
    public void setVisitTime(String visitTime) {
        this.visitTime = visitTime;
    }
    @Column(name = "diagnosis")
    public String getDiagnosis() {
        return diagnosis;
    }
    public void setDiagnosis(String diagnosis) {
        this.diagnosis = diagnosis;
    }
    @Column(name = "diagnosis_name")
    public String getDiagnosisName() {
        return diagnosisName;
    }
    public void setDiagnosisName(String diagnosisName) {
        this.diagnosisName = diagnosisName;
    }
    @Column(name = "admission_diagnosis")
    public String getAdmissionDiagnosis() {
        return admissionDiagnosis;
    }
    public void setAdmissionDiagnosis(String admissionDiagnosis) {
        this.admissionDiagnosis = admissionDiagnosis;
    }
    @Column(name = "discharge_diagnosis")
    public String getDischargeDiagnosis() {
        return dischargeDiagnosis;
    }
    public void setDischargeDiagnosis(String dischargeDiagnosis) {
        this.dischargeDiagnosis = dischargeDiagnosis;
    }
}

+ 177 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/hospital/record/HospitalPatientOutpatientRecordDO.java

@ -0,0 +1,177 @@
package com.yihu.jw.entity.hospital.record;
import com.yihu.jw.entity.UuidIdentityEntityWithCreateTime;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
 * 居民医院门诊记录
 * Created by yeshijie on 2022/11/28.
 */
@Entity
@Table(name = "hospital_patient_outpatient_record")
public class HospitalPatientOutpatientRecordDO extends UuidIdentityEntityWithCreateTime {
    private String idcard;//身份证
    private String name;//居民姓名
    private Integer age;//年龄
    private String birthday;
    private String sex;//性别
    private String marriage;//婚姻状况
    private String patient;
    private String doctor;//主治医生
    private String doctorName;
    private String dept;//科室
    private String deptName;
    private String org;//医院
    private String orgName;
    private String visitTime;//就诊时间
    private String diagnosis;//主诊断编码
    private String diagnosisName;//主诊断
    @Column(name = "idcard")
    public String getIdcard() {
        return idcard;
    }
    public void setIdcard(String idcard) {
        this.idcard = idcard;
    }
    @Column(name = "name")
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    @Column(name = "age")
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
    @Column(name = "birthday")
    public String getBirthday() {
        return birthday;
    }
    public void setBirthday(String birthday) {
        this.birthday = birthday;
    }
    @Column(name = "sex")
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    @Column(name = "marriage")
    public String getMarriage() {
        return marriage;
    }
    public void setMarriage(String marriage) {
        this.marriage = marriage;
    }
    @Column(name = "patient")
    public String getPatient() {
        return patient;
    }
    public void setPatient(String patient) {
        this.patient = patient;
    }
    @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 = "org")
    public String getOrg() {
        return org;
    }
    public void setOrg(String org) {
        this.org = org;
    }
    @Column(name = "org_name")
    public String getOrgName() {
        return orgName;
    }
    public void setOrgName(String orgName) {
        this.orgName = orgName;
    }
    @Column(name = "visit_time")
    public String getVisitTime() {
        return visitTime;
    }
    public void setVisitTime(String visitTime) {
        this.visitTime = visitTime;
    }
    @Column(name = "diagnosis")
    public String getDiagnosis() {
        return diagnosis;
    }
    public void setDiagnosis(String diagnosis) {
        this.diagnosis = diagnosis;
    }
    @Column(name = "diagnosis_name")
    public String getDiagnosisName() {
        return diagnosisName;
    }
    public void setDiagnosisName(String diagnosisName) {
        this.diagnosisName = diagnosisName;
    }
}

+ 0 - 143
common/common-entity/src/main/java/com/yihu/jw/entity/myFamily/PatientApplyLog.java

@ -1,143 +0,0 @@
package com.yihu.jw.entity.myFamily;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yihu.jw.entity.IntegerIdentityEntity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import java.util.Date;
/**
 * @author liuwenbin on 2018/11/30.
 */
@Entity
@Table(name = "patient_apply_for_log")
@SequenceGenerator(name="id_generated", sequenceName="PATIENT_APPLY_FOR_LOG_SEQ")
public class PatientApplyLog extends IntegerIdentityEntity {
    private String familyMemberName;//家庭成员名称
    private String familyMemberCode;//家庭成员code
    private String qrCode;//二维码地址
    private Date failureTime;//失效时间
    private Integer status;//1、添加家人(默认),2、邀请登录,3、通过,4、拒绝,5、申请人主动终止申请
    private Integer del;//删除标志(1正常,0删除)申请人主动终止申请
    private Date createTime;//创建时间
    private String createUser;//申请人
    private String createUserName;//申请人姓名
    private Integer remindType;//提醒方式(1、打电话,2、发短信,3、微信)
    private Date confirmTime;//确认时间
    private Integer familyBindRole;//1配偶,2父亲,3母亲,4公公,5婆婆,6岳父,7岳母,8女婿,9儿媳,10子女
    @Column(name = "family_member_name")
    public String getFamilyMemberName() {
        return familyMemberName;
    }
    public void setFamilyMemberName(String familyMemberName) {
        this.familyMemberName = familyMemberName;
    }
    @Column(name = "family_member_code")
    public String getFamilyMemberCode() {
        return familyMemberCode;
    }
    public void setFamilyMemberCode(String familyMemberCode) {
        this.familyMemberCode = familyMemberCode;
    }
    @Column(name = "qr_code")
    public String getQrCode() {
        return qrCode;
    }
    public void setQrCode(String qrCode) {
        this.qrCode = qrCode;
    }
    @Column(name = "failure_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    public Date getFailureTime() {
        return failureTime;
    }
    public void setFailureTime(Date failureTime) {
        this.failureTime = failureTime;
    }
    @Column(name = "status")
    public Integer getStatus() {
        return status;
    }
    public void setStatus(Integer status) {
        this.status = status;
    }
    @Column(name = "del")
    public Integer getDel() {
        return del;
    }
    public void setDel(Integer del) {
        this.del = del;
    }
    @Column(name = "create_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    @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 = "remind_type")
    public Integer getRemindType() {
        return remindType;
    }
    public void setRemindType(Integer remindType) {
        this.remindType = remindType;
    }
    @Column(name = "confirm_time")
    public Date getConfirmTime() {
        return confirmTime;
    }
    public void setConfirmTime(Date confirmTime) {
        this.confirmTime = confirmTime;
    }
    @Column(name = "family_bind_role")
    public Integer getFamilyBindRole() {
        return familyBindRole;
    }
    public void setFamilyBindRole(Integer familyBindRole) {
        this.familyBindRole = familyBindRole;
    }
}

+ 1 - 1
common/common-entity/src/main/java/com/yihu/jw/entity/dimension/DimensionDo.java

@ -1,4 +1,4 @@
package com.yihu.jw.entity.dimension;
package com.yihu.jw.entity.quota.dimension;
import com.yihu.jw.entity.IntegerIdentityEntity;

+ 1 - 1
common/common-entity/src/main/java/com/yihu/jw/entity/dimension/DimensionQuotaDo.java

@ -1,4 +1,4 @@
package com.yihu.jw.entity.dimension;
package com.yihu.jw.entity.quota.dimension;
import com.yihu.jw.entity.IntegerIdentityEntity;

+ 1 - 1
common/common-entity/src/main/java/com/yihu/jw/entity/job/QuartzJobConfig.java

@ -1,4 +1,4 @@
package com.yihu.jw.entity.job;
package com.yihu.jw.entity.quota.job;
import org.hibernate.annotations.GenericGenerator;

+ 1 - 1
common/common-entity/src/main/java/com/yihu/jw/entity/job/QuartzJobLog.java

@ -1,4 +1,4 @@
package com.yihu.jw.entity.job;
package com.yihu.jw.entity.quota.job;
import org.hibernate.annotations.GenericGenerator;

+ 1 - 1
common/common-entity/src/main/java/com/yihu/jw/entity/interfacemg/BaseThirdUserDO.java

@ -1,4 +1,4 @@
package com.yihu.jw.entity.interfacemg;
package com.yihu.jw.entity.third.interfacemg;
import com.yihu.jw.entity.UuidIdentityEntityWithOperator;

+ 1 - 1
common/common-entity/src/main/java/com/yihu/jw/entity/interfacemg/BaseThirdUserInterfaceDO.java

@ -1,4 +1,4 @@
package com.yihu.jw.entity.interfacemg;
package com.yihu.jw.entity.third.interfacemg;
import com.yihu.jw.entity.UuidIdentityEntityWithOperator;

+ 1 - 1
common/common-entity/src/main/java/com/yihu/jw/entity/interfacemg/BaseThirdUserInterfaceLogDO.java

@ -1,4 +1,4 @@
package com.yihu.jw.entity.interfacemg;
package com.yihu.jw.entity.third.interfacemg;
import com.yihu.jw.entity.UuidIdentityEntityWithOperator;

+ 1 - 1
common/common-entity/src/main/java/com/yihu/jw/entity/interfacemg/BaseThirdUserInterfaceStandardDO.java

@ -1,4 +1,4 @@
package com.yihu.jw.entity.interfacemg;
package com.yihu.jw.entity.third.interfacemg;
import com.yihu.jw.entity.UuidIdentityEntityWithOperator;

+ 1 - 1
common/common-entity/src/main/java/com/yihu/jw/entity/wlyyinfo/OauthWlyyConfigDO.java

@ -1,4 +1,4 @@
package com.yihu.jw.entity.wlyyinfo;
package com.yihu.jw.entity.third.wlyyinfo;
import com.yihu.jw.entity.UuidIdentityEntity;

+ 1 - 1
common/common-entity/src/main/java/com/yihu/jw/entity/wlyyinfo/WechatTag.java

@ -1,4 +1,4 @@
package com.yihu.jw.entity.wlyyinfo;
package com.yihu.jw.entity.third.wlyyinfo;

+ 1 - 2
common/common-entity/src/main/java/com/yihu/jw/entity/ylzinfo/OauthYlzConfigDO.java

@ -1,8 +1,7 @@
package com.yihu.jw.entity.ylzinfo;
package com.yihu.jw.entity.third.ylzinfo;
import com.yihu.jw.entity.UuidIdentityEntity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;

+ 355 - 0
common/common-rest-model/src/main/java/com/yihu/jw/restmodel/web/endpoint/BaseRestEndPoint.java

@ -5,8 +5,11 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.ehr.constants.PageArg;
import com.yihu.jw.util.date.DateTimeUtil;
import org.apache.commons.lang3.StringUtils;
import org.json.JSONArray;
import org.json.JSONObject;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.http.ResponseEntity;
import javax.servlet.http.HttpServletRequest;
@ -180,4 +183,356 @@ public class BaseRestEndPoint extends Exception {
        return links.toString();
    }
    /**
     * 返回接口处理结果
     *
     * @param code  结果码,成功为200
     * @param msg   结果提示信息
     * @return
     */
    public String error(int code, String msg) {
        try {
            Map<Object, Object> map = new HashMap<Object, Object>();
            ObjectMapper mapper = new ObjectMapper();
            map.put("status", code);
            map.put("message", msg);
            return mapper.writeValueAsString(map);
        } catch (Exception e) {
            error(e);
            return null;
        }
    }
    public void error(Exception e) {
        e.printStackTrace();
    }
    public void errorResult(Exception e) {
        e.printStackTrace();
    }
    public String write(int code, String msg) {
        try {
            Map<Object, Object> map = new HashMap<Object, Object>();
            ObjectMapper mapper = new ObjectMapper();
            map.put("status", code);
            map.put("message", msg);
            return mapper.writeValueAsString(map);
        } catch (Exception e) {
            error(e);
            return null;
        }
    }
    /**
     * 返回接口处理结果
     *
     * @param code  结果码,成功为200
     * @param msg   结果提示信息
     * @return
     */
    public String write(int code, String msg, String key, List<?> list) {
        try {
            Map<Object, Object> map = new HashMap<Object, Object>();
            ObjectMapper mapper = new ObjectMapper();
            mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
            map.put("status", code);
            map.put("message", msg);
            map.put(key, list);
            String s = mapper.writeValueAsString(map);
            return s;
        } catch (Exception e) {
            error(e);
            return error(-1, "服务器异常,请稍候再试!");
        }
    }
    /**
     * 返回接口处理结果
     *
     * @param code  结果码,成功为200
     * @param msg   结果提示信息
     * @return
     */
    public String write(int code, String msg, String key, List<?> list,String key2,Object value) {
        try {
            Map<Object, Object> map = new HashMap<Object, Object>();
            ObjectMapper mapper = new ObjectMapper();
            mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
            map.put("status", code);
            map.put("message", msg);
            map.put(key, list);
            map.put(key2, value);
            String s = mapper.writeValueAsString(map);
            return s;
        } catch (Exception e) {
            error(e);
            return error(-1, "服务器异常,请稍候再试!");
        }
    }
    /**
     * 返回接口处理结果
     *
     * @param code  结果码,成功为200
     * @param msg   结果提示信息
     * @param value 结果数据
     * @return
     */
    public String write(int code, String msg, String key, JSONObject value) {
        try {
            JSONObject json = new JSONObject();
            json.put("status", code);
            json.put("message", msg);
            json.put(key, value);
            return json.toString();
        } catch (Exception e) {
            error(e);
            return error(-1, "服务器异常,请稍候再试!");
        }
    }
    /**
     * 返回接口处理结果
     *
     * @param code  结果码,成功为200
     * @param msg   结果提示信息
     * @param value 结果数据
     * @return
     */
    public String write(int code, String msg, String key, JSONArray value, String key2, JSONObject value2) {
        try {
            JSONObject json = new JSONObject();
            json.put("status", code);
            json.put("message", msg);
            json.put(key, value);
            json.put(key2, value2);
            return json.toString();
        } catch (Exception e) {
            error(e);
            return error(-1, "服务器异常,请稍候再试!");
        }
    }
    /**
     * 返回接口处理结果
     *
     * @param code  结果码,成功为200
     * @param msg   结果提示信息
     * @param value 结果数据
     * @return
     */
    public String write(int code, String msg, String key, JSONArray value) {
        try {
            JSONObject json = new JSONObject();
            json.put("status", code);
            json.put("message", msg);
            json.put(key, value);
            return json.toString();
        } catch (Exception e) {
            error(e);
            return error(-1, "服务器异常,请稍候再试!");
        }
    }
    /**
     * 返回接口处理结果
     *
     * @param code  结果码,成功为200
     * @param msg   结果提示信息
     * @param total 总数
     * @param value 结果数据
     * @return
     */
    public String write(int code, String msg, int total, String key, JSONArray value) {
        try {
            JSONObject json = new JSONObject();
            json.put("status", code);
            json.put("message", msg);
            json.put("total", total);
            json.put(key, value);
            return json.toString();
        } catch (Exception e) {
            error(e);
            return error(-1, "服务器异常,请稍候再试!");
        }
    }
    /**
     * 返回接口处理结果
     *
     * @param code  结果码,成功为200
     * @param msg   结果提示信息
     * @return
     */
    public String write(int code, String msg, int total, String key, List<?> list) {
        try {
            Map<Object, Object> map = new HashMap<Object, Object>();
            ObjectMapper mapper = new ObjectMapper();
            mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
            map.put("status", code);
            map.put("message", msg);
            map.put("total", total);
            map.put(key, list);
            String s = mapper.writeValueAsString(map);
            return s;
        } catch (Exception e) {
            error(e);
            return error(-1, "服务器异常,请稍候再试!");
        }
    }
    /**
     * 返回接口处理结果
     *
     * @param code  结果码,成功为200
     * @param msg   结果提示信息
     * @param value 结果数据
     * @return
     */
    public String write(int code, String msg, String key, Object value) {
        try {
            Map<Object, Object> map = new HashMap<Object, Object>();
            ObjectMapper mapper = new ObjectMapper();
            map.put("status", code);
            map.put("message", msg);
            map.put(key, value);
            return mapper.writeValueAsString(map);
        } catch (Exception e) {
            error(e);
            return error(-1, "服务器异常,请稍候再试!");
        }
    }
    /**
     * 返回接口处理结果
     *
     * @param code  结果码,成功为200
     * @param msg   结果提示信息
     * @return
     */
    public String write(int code, String msg, String key, Page<?> list) {
        try {
            Map<Object, Object> map = new HashMap<Object, Object>();
            ObjectMapper mapper = new ObjectMapper();
            map.put("status", code);
            map.put("message", msg);
            // 是否为第一页
            map.put("isFirst", list.isFirst());
            // 是否为最后一页
            map.put("isLast", list.isLast());
            // 总条数
            map.put("total", list.getTotalElements());
            // 总页数
            map.put("totalPages", list.getTotalPages());
            map.put(key, list.getContent());
            return mapper.writeValueAsString(map);
        } catch (Exception e) {
            error(e);
            return error(-1, "服务器异常,请稍候再试!");
        }
    }
    /**
     * 返回接口处理结果
     *
     * @param code  结果码,成功为200
     * @param msg   结果提示信息
     * @return
     */
    public String write(int code, String msg, String key, Page<?> page, JSONArray array) {
        try {
            JSONObject json = new JSONObject();
            json.put("status", code);
            json.put("message", msg);
            // 是否为第一页
            json.put("isFirst", page == null ? false : page.isFirst());
            // 是否为最后一页
            json.put("isLast", page == null ? true : page.isLast());
            // 总条数
            json.put("total", page == null ? 0 : page.getTotalElements());
            // 总页数
            json.put("totalPages", page == null ? 0 : page.getTotalPages());
            json.put(key, array);
            return json.toString();
        } catch (Exception e) {
            error(e);
            return error(-1, "服务器异常,请稍候再试!");
        }
    }
    /**
     * 返回接口处理结果
     *
     * @param code  结果码,成功为200
     * @param msg   结果提示信息
     * @param value 结果数据
     * @return
     */
    public String write(int code, String msg, String key, Map<?, ?> value) {
        try {
            Map<Object, Object> map = new HashMap<Object, Object>();
            ObjectMapper mapper = new ObjectMapper();
            map.put("status", code);
            map.put("message", msg);
            map.put(key, value);
            return mapper.writeValueAsString(map);
        } catch (Exception e) {
            error(e);
            return error(-1, "服务器异常,请稍候再试!");
        }
    }
    /**
     * 返回接口处理结果
     *
     * @param code  结果码,成功为200
     * @param msg   结果提示信息
     * @param value 结果数据
     * @return
     */
    public String write(int code, String msg, String key, String value) {
        try {
            Map<Object, Object> map = new HashMap<Object, Object>();
            ObjectMapper mapper = new ObjectMapper();
            map.put("status", code);
            map.put("message", msg);
            map.put(key, value);
            return mapper.writeValueAsString(map);
        } catch (Exception e) {
            error(e);
            return error(-1, "服务器异常,请稍候再试!");
        }
    }
    /**
     * 返回接口处理结果
     *
     * @param code  结果码,成功为200
     * @param msg   结果提示信息
     * @return
     */
    public String write(int code, String msg, boolean isFirst, boolean isLast, long total, int totalPages, String key, Object values) {
        try {
            JSONObject json = new JSONObject();
            json.put("status", code);
            json.put("message", msg);
            // 是否为第一页
            json.put("isFirst", isFirst);
            // 是否为最后一页
            json.put("isLast", isLast);
            // 总条数
            json.put("total", total);
            // 总页数
            json.put("totalPages", totalPages);
            json.put(key, values);
            return json.toString();
        } catch (Exception e) {
            e.printStackTrace();
            return error(-1, "服务器异常,请稍候再试!");
        }
    }
}

+ 1 - 0
common/common-util/src/main/java/com/yihu/jw/util/date/DateUtil.java

@ -203,6 +203,7 @@ public class DateUtil {
        if (StringUtils.isEmpty(strDate)) {
            return null;
        }
        strDate = strDate.replace(".0","");
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(format);
        LocalDateTime localDateTime = LocalDateTime.parse(strDate,dateTimeFormatter);
        return Date.from(localDateTime.atZone(zone).toInstant());

+ 1 - 2
server/svr-authentication/src/main/java/com/yihu/jw/security/dao/OauthCaConfigDao.java

@ -1,9 +1,8 @@
package com.yihu.jw.security.dao;
import com.yihu.jw.entity.ca.OauthCaConfigDO;
import com.yihu.jw.entity.base.ca.OauthCaConfigDO;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
/**
 * Created by Trick on 2019/12/25.

+ 1 - 2
server/svr-authentication/src/main/java/com/yihu/jw/security/dao/OauthWlyyConfigDao.java

@ -1,9 +1,8 @@
package com.yihu.jw.security.dao;
import com.yihu.jw.entity.wlyyinfo.OauthWlyyConfigDO;
import com.yihu.jw.entity.third.wlyyinfo.OauthWlyyConfigDO;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
/**
 * Created by Trick on 2019/8/7.

+ 1 - 2
server/svr-authentication/src/main/java/com/yihu/jw/security/dao/OauthYlzConfigDao.java

@ -1,9 +1,8 @@
package com.yihu.jw.security.dao;
import com.yihu.jw.entity.ylzinfo.OauthYlzConfigDO;
import com.yihu.jw.entity.third.ylzinfo.OauthYlzConfigDO;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
/**
 * Created by Trick on 2019/7/26.

+ 30 - 0
server/svr-authentication/src/main/java/com/yihu/jw/security/dao/patient/WxAppletsAccessTokenDao.java

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

+ 2 - 2
server/svr-authentication/src/main/java/com/yihu/jw/security/oauth2/provider/WlyyTokenGranter.java

@ -529,7 +529,7 @@ public class WlyyTokenGranter implements TokenGranter {
            String data[] = encdata.split(":");
            String username = data[1];
            SaltUser userDetails = (SaltUser)userDetailsService.loadUserByUsername(encdata);
            SaltUser userDetails = (SaltUser)userDetailsService.loadUserByUsername(username);
            if (!userDetails.isEnabled()) {
                throw new InvalidGrantException("User is disabled");
            }
@ -585,7 +585,7 @@ public class WlyyTokenGranter implements TokenGranter {
            String data[] = encdata.split(":");
            String username = data[1];
            SaltUser userDetails = (SaltUser)userDetailsService.loadUserByUsername(encdata);
            SaltUser userDetails = (SaltUser)userDetailsService.loadUserByUsername(username);
            if (!userDetails.isEnabled()) {
                throw new InvalidGrantException("User is disabled");
            }

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

@ -39,10 +39,10 @@ import com.yihu.jw.sms.service.ZhongShanSMSService;
import com.yihu.jw.sms.util.ykyy.vo.ResultMsg;
import com.yihu.jw.util.common.NetworkUtil;
import com.yihu.jw.util.common.RSAUtils;
import com.yihu.jw.util.encrypt.MD5;
import com.yihu.jw.util.http.HttpClientUtil;
import com.yihu.jw.util.network.HttpResponse;
import com.yihu.jw.util.network.HttpUtils;
import com.yihu.jw.util.encrypt.MD5;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
@ -182,6 +182,8 @@ public class WlyyLoginEndpoint extends AbstractEndpoint {
    private BaseSmsDao baseSmsDao;
    @Autowired
    private JdbcTemplate jdbcTemplate;
    @Autowired
    private WechatService wechatService;
    @PostConstruct
    private void init() {
@ -376,6 +378,23 @@ public class WlyyLoginEndpoint extends AbstractEndpoint {
                    Oauth2Envelop<WlyyUserSimple> oauth2Envelop = new Oauth2Envelop<>(jsonObject.getString("message"), -1, null);
                    return new ResponseEntity<>(oauth2Envelop, headers, HttpStatus.OK);
                }
            }else if("wxApplets".equals(flag)){
                //微信小程序登录
                parameters.put("grant_type", "dingTalk");
                String authCode = parameters.get("authCode");
                if(org.apache.commons.lang3.StringUtils.isBlank(authCode)){
                    throw new InvalidRequestException("请求参数错误");
                }
                String userPhone = wechatService.getUserPhoneByApplets(authCode);
                if (!StringUtils.isEmpty(userPhone)){
                    parameters.put("username", userPhone);
                }else{
                    HttpHeaders headers = new HttpHeaders();
                    headers.set("Cache-Control", "no-store");
                    headers.set("Pragma", "no-cache");
                    Oauth2Envelop<WlyyUserSimple> oauth2Envelop = new Oauth2Envelop<>("获取用户手机号失败", -1, null);
                    return new ResponseEntity<>(oauth2Envelop, headers, HttpStatus.OK);
                }
            }else if (StringUtils.isEmpty(parameters.get("captcha"))) {
                parameters.put("grant_type", "password");
                //解密密码

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

@ -1,7 +1,7 @@
package com.yihu.jw.security.service;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.entity.ca.OauthCaConfigDO;
import com.yihu.jw.entity.base.ca.OauthCaConfigDO;
import com.yihu.jw.security.dao.OauthCaConfigDao;
import com.yihu.jw.security.utils.qrcode.QRCodeService;
import com.yihu.jw.security.utils.qrcode.QRCodeServiceImplServiceLocator;

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

@ -1,6 +1,5 @@
package com.yihu.jw.security.service;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
import com.yihu.jw.entity.base.doctor.BaseDoctorHospitalDO;
@ -10,7 +9,7 @@ import com.yihu.jw.entity.base.user.UserDO;
import com.yihu.jw.entity.equipment.WlyyUserAreaDO;
import com.yihu.jw.entity.equipment.WlyyUserEquipmentDO;
import com.yihu.jw.entity.hospital.mapping.DoctorMappingDO;
import com.yihu.jw.entity.wlyyinfo.OauthWlyyConfigDO;
import com.yihu.jw.entity.third.wlyyinfo.OauthWlyyConfigDO;
import com.yihu.jw.security.dao.OauthWlyyConfigDao;
import com.yihu.jw.security.dao.doctor.BaseDoctorDao;
import com.yihu.jw.security.dao.doctor.BaseDoctorHospitalDao;

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

@ -5,7 +5,7 @@ import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.entity.hospital.family.WlyyPatientFamilyMemberDO;
import com.yihu.jw.entity.ylzinfo.OauthYlzConfigDO;
import com.yihu.jw.entity.third.ylzinfo.OauthYlzConfigDO;
import com.yihu.jw.security.dao.OauthYlzConfigDao;
import com.yihu.jw.security.dao.patient.BasePatientDao;
import com.yihu.jw.security.dao.patient.WlyyPatientFamilyMemberDao;

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

@ -0,0 +1,125 @@
package com.yihu.jw.security.service;
import com.yihu.jw.entity.base.wx.WxAppletsAccessTokenDO;
import com.yihu.jw.entity.base.wx.WxWechatDO;
import com.yihu.jw.exception.ApiException;
import com.yihu.jw.exception.code.ExceptionCode;
import com.yihu.jw.security.dao.patient.WechatDao;
import com.yihu.jw.security.dao.patient.WxAppletsAccessTokenDao;
import com.yihu.jw.util.network.HttpUtils;
import com.yihu.jw.util.wechat.wxhttp.HttpUtil;
import org.json.JSONObject;
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.util.StringUtils;
import java.util.*;
/**
 * Created by yeshijie on 2022/11/2.
 */
@Service
public class WechatService {
    private static Logger logger = LoggerFactory.getLogger(WechatService.class);
    @Value("${wechat.id}")
    private String wxId;
    @Autowired
    private WechatDao wechatDao;
    @Autowired
    private WxAppletsAccessTokenDao wxAppletsAccessTokenDao;
    /**
     * 根据小程序获取用户手机号
     *
     * @param code
     * @return
     * @throws Exception
     */
    public String getUserPhoneByApplets(String code) throws Exception {
        String token = getWxAppletsAccessTokenById(wxId).getAccessToken();
        if (org.apache.commons.lang3.StringUtils.isNoneBlank(code)){
            String token_url = "https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token=" + token;
            String params = "{\"code\": \""+code+"\"}";
            logger.info("参数:"+params);
            String result = HttpUtil.sendPost(token_url, params);
            logger.info("步骤1:"+result);
            if (org.apache.commons.lang3.StringUtils.isNoneBlank(result)){
                com.alibaba.fastjson.JSONObject object = com.alibaba.fastjson.JSONObject.parseObject(result);
                if (object.getString("errcode").equalsIgnoreCase("0")){
                    com.alibaba.fastjson.JSONObject jsonObject= object.getJSONObject("phone_info");
                    return jsonObject.getString("phoneNumber");
                }
            }
            return null;
        }else {
            return null;
        }
    }
    /**
     * 生成小程序token
     * @param wechatId
     * @return
     */
    public WxAppletsAccessTokenDO getWxAppletsAccessTokenById(String wechatId) {
        try {
            //根据wechatCode查找出appid和appSecret
            WxWechatDO wxWechat = wechatDao.findById(wechatId).orElse(null);
            List<WxAppletsAccessTokenDO> wxAccessTokens =  wxAppletsAccessTokenDao.getWxAccessTokenById(wechatId);
            if(wxWechat==null){
                throw new ApiException("wxWechat is not exist", ExceptionCode.common_error_params_code);
            }
            if(wxAccessTokens!=null&&wxAccessTokens.size()>0){
                for (WxAppletsAccessTokenDO accessToken : wxAccessTokens) {
                    if ((System.currentTimeMillis() - accessToken.getAddTimestamp()) < (accessToken.getExpiresIn() * 500)) {
                        return accessToken;
                    } else {
                        wxAppletsAccessTokenDao.delete(accessToken);
                        break;
                    }
                }
            }
            String token_url = "https://api.weixin.qq.com/cgi-bin/token";
            String appId="";
            String appSecret="";
            appId = wxWechat.getApplets();
            appSecret = wxWechat.getAppletsSecret();
            if (StringUtils.isEmpty(appId)){
                throw new ApiException("appId is null", ExceptionCode.common_error_params_code);
            }
            if (StringUtils.isEmpty(appSecret)){
                throw new ApiException("appSecret is null", ExceptionCode.common_error_params_code);
            }
            Map<String, Object> params = new HashMap<>();
            params.put("grant_type", "client_credential");
            params.put("appid", appId);
            params.put("secret", appSecret);
            String result = HttpUtils.doGet(token_url, params).getContent();
            logger.info("--------------wechat token return:"+result+"---------------");
            JSONObject json = new JSONObject(result);
            if (json.has("access_token")) {
                String token = json.get("access_token").toString();
                String expires_in = json.get("expires_in").toString();
                WxAppletsAccessTokenDO newaccessToken = new WxAppletsAccessTokenDO();
                newaccessToken.setAccessToken(token);
                newaccessToken.setExpiresIn(Long.parseLong(expires_in));
                newaccessToken.setAddTimestamp(System.currentTimeMillis());
                newaccessToken.setCzrq(new Date());
                newaccessToken.setCode(UUID.randomUUID().toString().replace("-",""));
                newaccessToken.setWechatId(wechatId);
                wxAppletsAccessTokenDao.save(newaccessToken);
                return newaccessToken;
            } else {
                return null;
            }
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
}

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

@ -4,7 +4,7 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
import com.yihu.jw.entity.base.doctor.BaseDoctorHospitalDO;
import com.yihu.jw.entity.ca.OauthCaConfigDO;
import com.yihu.jw.entity.base.ca.OauthCaConfigDO;
import com.yihu.jw.security.dao.OauthCaConfigDao;
import com.yihu.jw.security.dao.doctor.BaseDoctorDao;
import com.yihu.jw.security.dao.doctor.BaseDoctorHospitalDao;

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

@ -3,13 +3,12 @@ package com.yihu.jw.security.service;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alipay.api.internal.util.codec.*;
import com.alipay.api.internal.util.codec.Base64;
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.ca.OauthCaConfigDO;
import com.yihu.jw.entity.base.ca.OauthCaConfigDO;
import com.yihu.jw.entity.hospital.mapping.DoctorMappingDO;
import com.yihu.jw.security.dao.OauthCaConfigDao;
import com.yihu.jw.security.dao.doctor.BaseDoctorDao;

+ 1 - 1
server/svr-authentication/src/main/resources/application.yml

@ -770,7 +770,7 @@ spring:
    username: root
    password: 4D^tK%!4
  redis:
    host: 172.26.0.153 # Redis server host.
    host: 172.26.0.253 # Redis server host.
    port: 6390 # Redis server port.
    password: Kb6wKDQP1W4

+ 5 - 9
starter/mysql-starter/src/main/java/com/yihu/jw/mysql/query/BaseJpaService.java

@ -63,7 +63,7 @@ public abstract class BaseJpaService<T, R extends CrudRepository> {
    }
    public T save (T entity) {
        return (T) getRepository().save(entity);
        return (T) getJpaRepository().save(entity);
    }
    public void batchInsert (List list) {
@ -77,15 +77,15 @@ public abstract class BaseJpaService<T, R extends CrudRepository> {
    }
    public void delete(Serializable id) {
        getRepository().deleteById(id);
        getJpaRepository().deleteById(id);
    }
    public void delete(T entity) {
        getRepository().delete(entity);
        getJpaRepository().delete(entity);
    }
    public void delete(Iterable ids) {
        getRepository().delete(ids);
        getJpaRepository().delete(ids);
    }
    public int delete(Object[] ids){
@ -103,7 +103,7 @@ public abstract class BaseJpaService<T, R extends CrudRepository> {
    }
    public T retrieve(Serializable id) {
        return (T) getRepository().findById(id).orElse(null);
        return (T) getJpaRepository().findById(id).orElse(null);
    }
    public List search(String filters) throws ParseException {
@ -219,10 +219,6 @@ public abstract class BaseJpaService<T, R extends CrudRepository> {
        return (JpaRepository) SpringContext.getService(repoClass);
    }
    public R getRepository() {
        return SpringContext.getService(repoClass);
    }
    public Session currentSession() {
        return entityManager.unwrap(Session.class);
    }

+ 1 - 1
svr/svr-base/src/main/java/com/yihu/jw/base/dao/childManage/BaseChildManageDao.java

@ -1,6 +1,6 @@
package com.yihu.jw.base.dao.childManage;
import com.yihu.jw.entity.child.BaseChildManage;
import com.yihu.jw.entity.care.child.BaseChildManage;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.JpaRepository;

+ 1 - 1
svr/svr-base/src/main/java/com/yihu/jw/base/dao/interfacemg/BaseThirdUserDao.java

@ -1,6 +1,6 @@
package com.yihu.jw.base.dao.interfacemg;
import com.yihu.jw.entity.interfacemg.BaseThirdUserDO;
import com.yihu.jw.entity.third.interfacemg.BaseThirdUserDO;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;

+ 1 - 1
svr/svr-base/src/main/java/com/yihu/jw/base/dao/interfacemg/BaseThirdUserInterfaceDao.java

@ -1,6 +1,6 @@
package com.yihu.jw.base.dao.interfacemg;
import com.yihu.jw.entity.interfacemg.BaseThirdUserInterfaceDO;
import com.yihu.jw.entity.third.interfacemg.BaseThirdUserInterfaceDO;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;

+ 1 - 1
svr/svr-base/src/main/java/com/yihu/jw/base/dao/interfacemg/BaseThirdUserInterfaceLogDao.java

@ -1,6 +1,6 @@
package com.yihu.jw.base.dao.interfacemg;
import com.yihu.jw.entity.interfacemg.BaseThirdUserInterfaceLogDO;
import com.yihu.jw.entity.third.interfacemg.BaseThirdUserInterfaceLogDO;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;

+ 1 - 1
svr/svr-base/src/main/java/com/yihu/jw/base/dao/interfacemg/BaseThirdUserInterfaceStandardDao.java

@ -1,6 +1,6 @@
package com.yihu.jw.base.dao.interfacemg;
import com.yihu.jw.entity.interfacemg.BaseThirdUserInterfaceStandardDO;
import com.yihu.jw.entity.third.interfacemg.BaseThirdUserInterfaceStandardDO;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;

+ 15 - 1
svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/dict/WlyyHospitalSysDictEndpoint.java

@ -1,10 +1,11 @@
package com.yihu.jw.base.endpoint.dict;
import com.yihu.jw.dict.service.BaseCopywritingService;
import com.yihu.jw.entity.hospital.consult.WlyyHospitalSysDictDO;
import com.yihu.jw.hospital.dict.service.WlyyHospitalSysDictService;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.ListEnvelop;
import com.yihu.jw.restmodel.web.MixEnvelop;
import com.yihu.jw.restmodel.web.ObjEnvelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import com.yihu.jw.rm.base.BaseRequestMapping;
import com.yihu.jw.rm.hospital.BaseHospitalRequestMapping;
@ -23,6 +24,19 @@ public class WlyyHospitalSysDictEndpoint extends EnvelopRestEndpoint {
    private static Logger logger = LoggerFactory.getLogger(WlyyHospitalSysDictEndpoint.class);
    @Autowired
    private WlyyHospitalSysDictService wlyyHospitalSysDictService;
    @Autowired
    private BaseCopywritingService copywritingService;
    @ApiOperation("把文案设置到缓存")
    @GetMapping(value= "open/nologin/setCopywritingToRedis")
    public Envelop setCopywritingToRedis(@ApiParam(name = "modular", value = "name", required = true)
                               @RequestParam(value = "modular")String modular,
                               @ApiParam(name = "scene", value = "modelName", required = true)
                               @RequestParam(value = "scene")String scene){
        return ObjEnvelop.getSuccess("success",copywritingService.setCopywritingToRedis(null,modular,scene));
    }
    @ApiOperation("查询字典")
    @GetMapping(value= BaseHospitalRequestMapping.PatientNoLogin.findDict)
    public MixEnvelop findDict(@ApiParam(name = "name", value = "name", required = false)

+ 4 - 4
svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/interfacemg/BaseUserInterfaceEndpoint.java

@ -3,10 +3,10 @@ package com.yihu.jw.base.endpoint.interfacemg;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.base.service.interfacemg.BaseUserInterfaceService;
import com.yihu.jw.entity.interfacemg.BaseThirdUserDO;
import com.yihu.jw.entity.interfacemg.BaseThirdUserInterfaceDO;
import com.yihu.jw.entity.interfacemg.BaseThirdUserInterfaceLogDO;
import com.yihu.jw.entity.interfacemg.BaseThirdUserInterfaceStandardDO;
import com.yihu.jw.entity.third.interfacemg.BaseThirdUserDO;
import com.yihu.jw.entity.third.interfacemg.BaseThirdUserInterfaceDO;
import com.yihu.jw.entity.third.interfacemg.BaseThirdUserInterfaceLogDO;
import com.yihu.jw.entity.third.interfacemg.BaseThirdUserInterfaceStandardDO;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.ObjEnvelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;

+ 143 - 0
svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/login/LoginAppEndpoint.java

@ -0,0 +1,143 @@
package com.yihu.jw.base.endpoint.login;
import com.yihu.jw.entity.base.login.BaseLoginAppDO;
import com.yihu.jw.entity.base.login.BaseLoginComponentDO;
import com.yihu.jw.login.service.BaseLoginAppService;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.ListEnvelop;
import com.yihu.jw.restmodel.web.ObjEnvelop;
import com.yihu.jw.restmodel.web.PageEnvelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
 * Created by yeshijie on 2022/11/28.
 */
@RestController
@RequestMapping(value = "loginApp")
@Api(value = "统一登录组件", tags = {"统一登录组件"})
public class LoginAppEndpoint extends EnvelopRestEndpoint {
    @Autowired
    private BaseLoginAppService loginAppService;
    @PostMapping(value = "createLoginApp")
    @ApiOperation(value = "新增/修改登录应用")
    public ObjEnvelop createLoginApp (
            @ApiParam(name = "jsonData", value = "Json数据", required = true)
            @RequestParam String jsonData){
        try {
            BaseLoginAppDO loginAppDO = toEntity(jsonData, BaseLoginAppDO.class);
            return ObjEnvelop.getSuccess("保存成功",loginAppService.createLoginApp(loginAppDO));
        }catch (Exception e){
            e.printStackTrace();
        }
        return ObjEnvelop.getError("保存失败");
    }
    @PostMapping(value = "loginAppStatus")
    @ApiOperation(value = "生效/失效")
    public Envelop loginAppStatus(
            @ApiParam(name = "id", value = "id", required = true)
            @RequestParam(value = "id") String id,
            @ApiParam(name = "del", value = "1生效,0失效", required = true)
            @RequestParam(value = "del") Integer del) {
        try {
            return ObjEnvelop.getSuccess("修改成功",loginAppService.loginAppStatus(id,del));
        }catch (Exception e){
            e.printStackTrace();
        }
        return Envelop.getError("修改失败");
    }
    @PostMapping(value = "loginAppDelete")
    @ApiOperation(value = "删除登录应用")
    public Envelop loginAppDelete(
            @ApiParam(name = "id", value = "id", required = true)
            @RequestParam(value = "id") String id) {
        try {
            loginAppService.loginAppDelete(id);
            return Envelop.getSuccess("删除成功");
        }catch (Exception e){
            e.printStackTrace();
        }
        return Envelop.getError("删除失败");
    }
    @GetMapping(value = "loginAppPage")
    @ApiOperation(value = "获取分页")
    public Envelop loginAppPage (
            @ApiParam(name = "fields", value = "返回的字段,为空返回全部字段")
            @RequestParam(value = "fields", required = false) String fields,
            @ApiParam(name = "filters", value = "过滤器,为空检索所有条件")
            @RequestParam(value = "filters", required = false) String filters,
            @ApiParam(name = "sorts", value = "排序,规则参见说明文档")
            @RequestParam(value = "sorts", required = false) String sorts,
            @ApiParam(name = "page", value = "分页大小", required = true, defaultValue = "1")
            @RequestParam(value = "page") int page,
            @ApiParam(name = "size", value = "页码", required = true, defaultValue = "15")
            @RequestParam(value = "size") int size){
        try {
            List<BaseLoginAppDO> loginAppDOS = loginAppService.search(fields, filters, sorts, page, size);
            long count = loginAppService.getCount(filters);
            return PageEnvelop.getSuccessListWithPage("获取成功",loginAppDOS,page,size,count);
        }catch (Exception e){
            e.printStackTrace();
        }
        return Envelop.getError("获取失败");
    }
    @GetMapping(value = "findLoginCompoentList")
    @ApiOperation(value = "获取登录终端列表")
    public Envelop findLoginCompoentList (
            @ApiParam(name = "loginAppId", value = "登录应用id")
            @RequestParam(value = "loginAppId", required = true) String loginAppId){
        try {
            String filters = "loginAppId="+loginAppId;
            List<BaseLoginComponentDO> componentDOList =loginAppService.findByLoginAppId(loginAppId);
            return ListEnvelop.getSuccess("获取成功", componentDOList);
        }catch (Exception e){
            e.printStackTrace();
        }
        return Envelop.getError("获取失败");
    }
    @PostMapping(value = "createLoginCompoent")
    @ApiOperation(value = "新增/修改登录终端")
    public ObjEnvelop createLoginCompoent (
            @ApiParam(name = "jsonData", value = "Json数据", required = true)
            @RequestParam String jsonData){
        try {
            BaseLoginComponentDO loginAppDO = toEntity(jsonData, BaseLoginComponentDO.class);
            return ObjEnvelop.getSuccess("保存成功",loginAppService.createLoginCompoent(loginAppDO));
        }catch (Exception e){
            e.printStackTrace();
        }
        return ObjEnvelop.getError("保存失败");
    }
    @PostMapping(value = "loginComponentDelete")
    @ApiOperation(value = "删除登录终端")
    public Envelop loginComponentDelete(
            @ApiParam(name = "id", value = "id", required = true)
            @RequestParam(value = "id") String id) {
        try {
            loginAppService.loginComponentDelete(id);
            return Envelop.getSuccess("删除成功");
        }catch (Exception e){
            e.printStackTrace();
        }
        return Envelop.getError("删除失败");
    }
}

+ 2 - 1
svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/processGuidance/BaseProcessGuidanceEndpoint.java

@ -16,6 +16,7 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.web.bind.annotation.*;
@ -32,7 +33,7 @@ import java.util.List;
@Api(value = "全流程指引", tags = {"全流程指引"})
public class BaseProcessGuidanceEndpoint extends EnvelopRestEndpoint {
    @Resource
    @Autowired
    private BaseProcessGuidanceService processGuidanceService;
    @Resource
    private BaseProcessGuidanceDao processGuidanceDao;

+ 2 - 2
svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/voluntary/VoluntaryRecruitmentEndpoint.java

@ -212,12 +212,12 @@ public class VoluntaryRecruitmentEndpoint extends EnvelopRestEndpoint {
            @ApiParam(name = "ids", value = "id串,中间用,分隔", required = true)
            @RequestParam(value = "ids") String ids) {
        String[] idsTmp = ids.split(",");
        List<VoluntaryRecruitmentPeopleDO> List = peopleService.getRepository().queryByIdIn(idsTmp);
        List<VoluntaryRecruitmentPeopleDO> List = peopleDao.queryByIdIn(idsTmp);
        peopleService.delete(ids.split(","));
        for (VoluntaryRecruitmentPeopleDO tmp:List){
            VoluntaryRecruitmentCompanyDO companyDO = companyDao.findById(tmp.getCompanyId()).orElse(null);;
            if (null !=companyDO ){
                Integer count = peopleService.getRepository().findByCompanyId(tmp.getCompanyId());
                Integer count = peopleDao.findByCompanyId(tmp.getCompanyId());
                companyDO.setNum(count);
                companyDao.save(companyDO);
            }

+ 6 - 3
svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/voluntary/VoluntaryRecruitmentPeopleEndpoint.java

@ -1,6 +1,7 @@
package com.yihu.jw.base.endpoint.voluntary;
import com.yihu.jw.base.dao.voluntary.VoluntaryRecruitmentCompanyDao;
import com.yihu.jw.base.dao.voluntary.VoluntaryRecruitmentPeopleDao;
import com.yihu.jw.base.service.voluntary.VoluntaryRecruitmentPeopleService;
import com.yihu.jw.entity.voluntary.VoluntaryRecruitmentCompanyDO;
import com.yihu.jw.entity.voluntary.VoluntaryRecruitmentPeopleDO;
@ -32,6 +33,8 @@ public class VoluntaryRecruitmentPeopleEndpoint extends EnvelopRestEndpoint {
    @Autowired
    private VoluntaryRecruitmentPeopleService peopleService;
    @Autowired
    private VoluntaryRecruitmentPeopleDao peopleDao;
    @Autowired
    private VoluntaryRecruitmentCompanyDao companyDao;
    @PostMapping(value = "delete")
@ -40,12 +43,12 @@ public class VoluntaryRecruitmentPeopleEndpoint extends EnvelopRestEndpoint {
            @ApiParam(name = "ids", value = "id串,中间用,分隔", required = true)
            @RequestParam(value = "ids") String ids) {
        String[] idsTmp = ids.split(",");
        List<VoluntaryRecruitmentPeopleDO> List = peopleService.getRepository().queryByIdIn(idsTmp);
        List<VoluntaryRecruitmentPeopleDO> List = peopleDao.queryByIdIn(idsTmp);
        peopleService.delete(ids.split(","));
        for (VoluntaryRecruitmentPeopleDO tmp:List){
            VoluntaryRecruitmentCompanyDO companyDO = companyDao.findById(tmp.getCompanyId()).orElse(null);;
            if (null !=companyDO ){
                Integer count = peopleService.getRepository().findByCompanyId(tmp.getCompanyId());
                Integer count = peopleDao.findByCompanyId(tmp.getCompanyId());
                companyDO.setNum(count);
                companyDao.save(companyDO);
            }
@ -65,7 +68,7 @@ public class VoluntaryRecruitmentPeopleEndpoint extends EnvelopRestEndpoint {
        appVersion = peopleService.save(appVersion);
        VoluntaryRecruitmentCompanyDO companyDO = companyDao.findById(appVersion.getCompanyId()).orElse(null);;
        if (null !=companyDO ){
            Integer count = peopleService.getRepository().findByCompanyId(appVersion.getCompanyId());
            Integer count = peopleDao.findByCompanyId(appVersion.getCompanyId());
            companyDO.setNum(count);
            companyDao.save(companyDO);
        }

+ 0 - 0
svr/svr-base/src/main/java/com/yihu/jw/base/service/child/ChildManageService.java


Някои файлове не бяха показани, защото твърде много файлове са промени