Explorar el Código

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

LiTaohong hace 5 años
padre
commit
398274d977
Se han modificado 46 ficheros con 2054 adiciones y 263 borrados
  1. 3 0
      business/base-service/src/main/java/com/yihu/jw/doctor/dao/BaseDoctorHospitalDao.java
  2. 1 1
      svr/svr-base/src/main/java/com/yihu/jw/base/dao/score/BaseEvaluateDao.java
  3. 1 1
      svr/svr-base/src/main/java/com/yihu/jw/base/dao/score/BaseEvaluateScoreDao.java
  4. 55 0
      business/base-service/src/main/java/com/yihu/jw/evaluate/score/service/BaseEvaluateService.java
  5. 4 0
      business/base-service/src/main/java/com/yihu/jw/hospital/consult/dao/HospitalWaitingRoomDao.java
  6. 2 1
      business/base-service/src/main/java/com/yihu/jw/hospital/dict/WlyyChargeDictDao.java
  7. 21 0
      business/base-service/src/main/java/com/yihu/jw/hospital/dict/WlyyHospitalSysDictDao.java
  8. 8 1
      business/base-service/src/main/java/com/yihu/jw/hospital/doctor/dao/DoctorWorkTimeDao.java
  9. 16 0
      business/base-service/src/main/java/com/yihu/jw/hospital/doctor/dao/PatientRegisterTimeDao.java
  10. 2 0
      business/base-service/src/main/java/com/yihu/jw/hospital/mapping/dao/DoctorMappingDao.java
  11. 441 81
      business/base-service/src/main/java/com/yihu/jw/hospital/prescription/service/PrescriptionService.java
  12. 244 37
      business/base-service/src/main/java/com/yihu/jw/hospital/prescription/service/entrance/EntranceService.java
  13. 22 0
      business/base-service/src/main/java/com/yihu/jw/hospital/prescription/service/entrance/util/ConvertUtil.java
  14. 1 1
      business/base-service/src/mqConfig/mqdata/BS15017.json
  15. 2 2
      business/base-service/src/mqConfig/mqdata/BS16017.json
  16. 2 2
      business/base-service/src/mqConfig/mqdata/BS30025.json
  17. 13 0
      common/common-entity/src/main/java/com/yihu/jw/entity/base/doctor/BaseDoctorDO.java
  18. 1 0
      common/common-entity/src/main/java/com/yihu/jw/entity/base/patient/BasePatientDO.java
  19. 1 1
      common/common-entity/src/main/java/com/yihu/jw/entity/base/score/BaseEvaluateScoreDO.java
  20. 1 1
      common/common-entity/src/main/java/com/yihu/jw/entity/hospital/consult/WlyyHospitalWaitingRoomDO.java
  21. 13 5
      common/common-entity/src/main/java/com/yihu/jw/entity/hospital/doctor/WlyyDoctorWorkTimeDO.java
  22. 24 5
      common/common-entity/src/main/java/com/yihu/jw/entity/hospital/doctor/WlyyPatientRegisterTimeDO.java
  23. 5 5
      common/common-entity/src/main/java/com/yihu/jw/entity/hospital/mapping/DoctorMappingDO.java
  24. 41 0
      common/common-entity/src/main/java/com/yihu/jw/entity/hospital/prescription/WlyyOutpatientDO.java
  25. 35 0
      common/common-request-mapping/src/main/java/com/yihu/jw/rm/hospital/BaseHospitalRequestMapping.java
  26. 194 0
      common/common-rest-model/src/main/java/com/yihu/jw/restmodel/hospital/doctor/WlyyDoctorWorkTimeVO.java
  27. 70 0
      common/common-rest-model/src/main/java/com/yihu/jw/restmodel/hospital/prescription/WlyyChargeDictVO.java
  28. 25 0
      common/common-util/src/main/java/com/yihu/jw/util/common/PwdUtil.java
  29. 231 0
      common/common-util/src/main/java/com/yihu/jw/util/http/HttpClientUtil.java
  30. 6 3
      svr/svr-base/src/main/java/com/yihu/jw/base/service/score/ScoreService.java
  31. 35 1
      svr/svr-internet-hospital-entrance/src/main/java/com/yihu/jw/entrance/controller/MqSdkController.java
  32. 0 14
      svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/config/JpaConfig.java
  33. 2 0
      svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/dao/consult/SysDictDao.java
  34. 1 1
      svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/file_upload/FileUploadEndpoint.java
  35. 86 11
      svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/prescription/PrescriptionEndpoint.java
  36. 2 2
      svr/svr-internet-hospital/src/main/resources/application.yml
  37. 37 34
      svr/svr-iot-sunnuo/src/main/java/com/yihu/iot/datainput/controller/IotAnalyzerController.java
  38. 2 35
      svr/svr-iot/pom.xml
  39. 24 2
      svr/svr-iot/src/main/java/com/yihu/iot/controller/analyzer/IotAnalyzerController.java
  40. 132 0
      svr/svr-iot/src/main/java/com/yihu/iot/service/analyzer/IotAnalyzerService.java
  41. 79 0
      svr/svr-iot/src/main/java/com/yihu/iot/service/analyzer/WlyyIotD.java
  42. 14 0
      svr/svr-iot/src/main/java/com/yihu/iot/service/analyzer/WlyyIotDDao.java
  43. 144 0
      svr/svr-iot/src/main/java/com/yihu/iot/service/analyzer/WlyyIotM.java
  44. 8 0
      svr/svr-iot/src/main/java/com/yihu/iot/service/analyzer/WlyyIotMDao.java
  45. 2 2
      svr/svr-iot/src/main/resources/application.yml
  46. 1 14
      svr/svr-iot/src/main/resources/bootstrap.yml

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

@ -23,4 +23,7 @@ public interface BaseDoctorHospitalDao extends PagingAndSortingRepository<BaseDo
    List<BaseDoctorHospitalDO> findByOrgCodeAndDeptCode(String orgCode,String deptCode);
    @Query("select bdo from BaseDoctorHospitalDO bdo where bdo.orgCode=?1 and bdo.deptCode=?2 and bdo.doctorCode = ?3 and bdo.del=1")
    List<BaseDoctorHospitalDO> findByOrgCodeAndDeptCodeAndDoctorCode(String orgCode,String deptCode,String doctorCode);
}

+ 1 - 1
svr/svr-base/src/main/java/com/yihu/jw/base/dao/score/BaseEvaluateDao.java

@ -1,4 +1,4 @@
package com.yihu.jw.base.dao.score;
package com.yihu.jw.evaluate.score.dao;
import com.yihu.jw.entity.base.score.BaseEvaluateDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;

+ 1 - 1
svr/svr-base/src/main/java/com/yihu/jw/base/dao/score/BaseEvaluateScoreDao.java

@ -1,4 +1,4 @@
package com.yihu.jw.base.dao.score;
package com.yihu.jw.evaluate.score.dao;
import com.yihu.jw.entity.base.score.BaseEvaluateScoreDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;

+ 55 - 0
business/base-service/src/main/java/com/yihu/jw/evaluate/score/service/BaseEvaluateService.java

@ -0,0 +1,55 @@
package com.yihu.jw.evaluate.score.service;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.jw.entity.base.score.BaseEvaluateDO;
import com.yihu.jw.entity.base.score.BaseEvaluateScoreDO;
import com.yihu.jw.entity.hospital.prescription.WlyyOutpatientDO;
import com.yihu.jw.entity.hospital.prescription.WlyyPrescriptionDiagnosisDO;
import com.yihu.jw.evaluate.score.dao.BaseEvaluateDao;
import com.yihu.jw.evaluate.score.dao.BaseEvaluateScoreDao;
import com.yihu.mysql.query.BaseJpaService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.List;
/**
 * Created by Trick on 2019/6/20.
 */
@Service
public class BaseEvaluateService extends BaseJpaService<BaseEvaluateDO, BaseEvaluateDao> {
    @Autowired
    private BaseEvaluateScoreDao baseEvaluateScoreDao;
    @Autowired
    private BaseEvaluateDao baseEvaluateDao;
    @Autowired
    private ObjectMapper objectMapper;
    public Boolean addEvaluateScore(String evaluateScoreJson, String evaluatesJson)throws Exception{
        BaseEvaluateScoreDO baseEvaluateScoreDO = objectMapper.readValue(evaluateScoreJson,BaseEvaluateScoreDO.class);
        List<BaseEvaluateDO> evaluateDOList = (List<BaseEvaluateDO>) com.alibaba.fastjson.JSONArray.parseArray(evaluatesJson, BaseEvaluateDO.class);
        if(evaluateDOList!=null&& evaluateDOList.size()>0){
            Double total = 0.0;
            for(BaseEvaluateDO evaluate :evaluateDOList){
                total += evaluate.getScore();
            }
            Double avg = new BigDecimal(total/evaluateDOList.size()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
            baseEvaluateScoreDO.setScore(avg);
            BaseEvaluateScoreDO baseEvaluateScore = baseEvaluateScoreDao.save(baseEvaluateScoreDO);
            for(BaseEvaluateDO evaluateDO:evaluateDOList){
                evaluateDO.setRelationCode(baseEvaluateScore.getId());
            }
            baseEvaluateDao.save(evaluateDOList);
        }
        return true;
    }
}

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

@ -4,8 +4,12 @@ import com.yihu.jw.entity.hospital.consult.WlyyHospitalWaitingRoomDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
/**
 * Created by Trick on 2019/5/23.
 */
public interface HospitalWaitingRoomDao extends PagingAndSortingRepository<WlyyHospitalWaitingRoomDO, String>, JpaSpecificationExecutor<WlyyHospitalWaitingRoomDO> {
    List<WlyyHospitalWaitingRoomDO> findByOutpatientId(String outpatientId);
}

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

@ -5,6 +5,7 @@ import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
import javax.transaction.Transactional;
import java.util.List;
/**
 * Created by zdm on 2019/5/28.
@ -12,5 +13,5 @@ import javax.transaction.Transactional;
@Transactional
public interface WlyyChargeDictDao extends PagingAndSortingRepository<WlyyChargeDictDO, String>, JpaSpecificationExecutor<WlyyChargeDictDO> {
    List<WlyyChargeDictDO>  findByDeptTypeCode(String deptTypeCode);
}

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

@ -0,0 +1,21 @@
package com.yihu.jw.hospital.dict;
import com.yihu.jw.entity.hospital.consult.WlyyHospitalSysDictDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
/**
 * Created by Trick on 2019/6/17.
 */
public interface WlyyHospitalSysDictDao extends PagingAndSortingRepository<WlyyHospitalSysDictDO, String>, JpaSpecificationExecutor<WlyyHospitalSysDictDO> {
    WlyyHospitalSysDictDO findByHospitalAndDictCode(String hospital, String dictCode);
    List<WlyyHospitalSysDictDO> findByHospitalAndDictName(String hospital, String dictName);
    WlyyHospitalSysDictDO findById(String id);
    List<WlyyHospitalSysDictDO> findByDictName(String dictName);
}

+ 8 - 1
business/base-service/src/main/java/com/yihu/jw/hospital/doctor/dao/DoctorWorkTimeDao.java

@ -2,11 +2,18 @@ package com.yihu.jw.hospital.doctor.dao;
import com.yihu.jw.entity.hospital.doctor.WlyyDoctorWorkTimeDO;
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;
/**
 * Created by Trick on 2019/5/31.
 */
public interface DoctorWorkTimeDao extends PagingAndSortingRepository<WlyyDoctorWorkTimeDO, String>, JpaSpecificationExecutor<WlyyDoctorWorkTimeDO> {
    
    @Query("from WlyyDoctorWorkTimeDO a where a.doctor = ?1 and a.endTime > ?2 and a.endTime < ?3 order by a.startTime asc")
    List<WlyyDoctorWorkTimeDO> findDoctorWorkTime(String doctor, Date startTime, Date endTime);
}

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

@ -0,0 +1,16 @@
package com.yihu.jw.hospital.doctor.dao;
import com.yihu.jw.entity.hospital.doctor.WlyyPatientRegisterTimeDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
/**
 * Created by Trick on 2019/6/19.
 */
public interface PatientRegisterTimeDao extends PagingAndSortingRepository<WlyyPatientRegisterTimeDO, String>, JpaSpecificationExecutor<WlyyPatientRegisterTimeDO> {
    List<WlyyPatientRegisterTimeDO> findByDoctorAndWorkId(String doctor,String workId);
    List<WlyyPatientRegisterTimeDO> findByOutpatientId(String outpatientId);
}

+ 2 - 0
business/base-service/src/main/java/com/yihu/jw/hospital/mapping/dao/DoctorMappingDao.java

@ -12,4 +12,6 @@ import java.util.List;
public interface DoctorMappingDao extends PagingAndSortingRepository<DoctorMappingDO, String>, JpaSpecificationExecutor<DoctorMappingDO> {
    List<DoctorMappingDO> findByDoctorAndOrgCode(String doctor,String orgCode);
    List<DoctorMappingDO> findByOrgCodeAndMappingCode(String orgCode,String mappingCode);
}

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

@ -8,13 +8,19 @@ import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
import com.yihu.jw.entity.base.org.BaseOrgDO;
import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.entity.base.patient.PatientMedicareCardDO;
import com.yihu.jw.entity.hospital.consult.WlyyDoctorClinicRoomDO;
import com.yihu.jw.entity.hospital.consult.WlyyHospitalSysDictDO;
import com.yihu.jw.entity.hospital.consult.WlyyHospitalWaitingRoomDO;
import com.yihu.jw.entity.hospital.dict.WlyyChargeDictDO;
import com.yihu.jw.entity.hospital.doctor.WlyyDoctorWorkTimeDO;
import com.yihu.jw.entity.hospital.doctor.WlyyPatientRegisterTimeDO;
import com.yihu.jw.entity.hospital.mapping.DoctorMappingDO;
import com.yihu.jw.entity.hospital.prescription.*;
import com.yihu.jw.hospital.consult.dao.DoctorClinicRoomConsultDao;
import com.yihu.jw.hospital.consult.dao.HospitalWaitingRoomDao;
import com.yihu.jw.hospital.mapping.dao.DoctorMappingDao;
import com.yihu.jw.hospital.dict.WlyyChargeDictDao;
import com.yihu.jw.hospital.dict.WlyyHospitalSysDictDao;
import com.yihu.jw.hospital.doctor.dao.DoctorWorkTimeDao;
import com.yihu.jw.hospital.doctor.dao.PatientRegisterTimeDao;
import com.yihu.jw.hospital.mapping.service.DoctorMappingService;
import com.yihu.jw.hospital.mapping.service.PatientMappingService;
import com.yihu.jw.hospital.prescription.dao.*;
@ -24,21 +30,18 @@ import com.yihu.jw.patient.dao.BasePatientDao;
import com.yihu.jw.patient.dao.BasePatientMedicareCardDao;
import com.yihu.jw.restmodel.base.dict.DictHospitalDeptVO;
import com.yihu.jw.restmodel.base.org.BaseOrgVO;
import com.yihu.jw.restmodel.hospital.doctor.WlyyDoctorWorkTimeVO;
import com.yihu.jw.restmodel.hospital.prescription.*;
import com.yihu.jw.restmodel.web.MixEnvelop;
import com.yihu.jw.rm.base.BaseRequestMapping;
import com.yihu.jw.rm.hospital.BaseHospitalRequestMapping;
import com.yihu.jw.util.common.IdCardUtil;
import com.yihu.jw.util.date.DateUtil;
import com.yihu.mysql.query.BaseJpaService;
import jxl.*;
import jxl.write.*;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.apache.commons.collections.map.HashedMap;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateUtils;
import org.apache.poi.ss.usermodel.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
@ -49,10 +52,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.io.IOException;
import java.io.OutputStream;
import java.lang.Boolean;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.*;
/**
 * Created by Trick on 2019/5/17.
@ -82,7 +82,7 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
    @Autowired
    private DoctorClinicRoomConsultDao doctorClinicRoomConsultDao;
    @Autowired
    private HospitalWaitingRoomDao HospitalWaitingRoomDao;
    private HospitalWaitingRoomDao hospitalWaitingRoomDao;
    @Autowired
    private DictHospitalDeptDao dictHospitalDeptDao;
    @Autowired
@ -97,6 +97,14 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
    private OutpatientDao outpatientDao;
    @Autowired
    private ObjectMapper objectMapper;
    @Autowired
    private WlyyChargeDictDao wlyyChargeDictDao;
    @Autowired
    private WlyyHospitalSysDictDao sysDictDao;
    @Autowired
    private DoctorWorkTimeDao doctorWorkTimeDao;
    @Autowired
    private PatientRegisterTimeDao patientRegisterTimeDao;
    @Value("${demo.flag}")
    private boolean demoFlag;
@ -193,6 +201,8 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
                " o.origin_adm_no AS originAdmNo, " +
                " o.register_no AS registerNo, " +
                " o.origin_register_no AS originRegisterNo, " +
                " o.origin_con_no AS originConNo," +
                " o.con_no AS conNo," +
                " o.hospital," +
                " o.hospital_name AS hospitalName," +
                " o.win_no AS winNo," +
@ -256,6 +266,8 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
        rs.put("age",IdCardUtil.getAgeForIdcard(basePatientDO.getIdcard()));
        rs.put("address",basePatientDO.getAddress());
        rs.put("mobile",basePatientDO.getMobile());
        rs.put("birthday",DateUtil.dateToStr(basePatientDO.getBirthday(),"yyyy-MM-dd"));
        //获取处方信息
        List<WlyyPrescriptionDO> prescriptionDOs = null;
@ -461,10 +473,9 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
     * @return
     * @throws Exception
     */
    public Boolean appointmentRevisit(String outpatientJson,String expressageJson)throws Exception{
    public WlyyOutpatientDO appointmentRevisit(String outpatientJson,String expressageJson,String registerJson)throws Exception{
        //1.保存就诊实体
        WlyyOutpatientDO outpatientDO = objectMapper.readValue(outpatientJson,WlyyOutpatientDO.class);
        BasePatientDO patientDO = basePatientDao.findById(outpatientDO.getPatient());
@ -476,6 +487,20 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
        WlyyOutpatientDO outpatient = outpatientDao.save(outpatientDO);
        WlyyPatientRegisterTimeDO registerTimeDO = null;
        try {
            //如果是视频预约咨询
            if(StringUtils.isNotBlank(registerJson)){
                registerTimeDO = objectMapper.readValue(registerJson,WlyyPatientRegisterTimeDO.class);
                registerTimeDO.setOutpatientId(outpatient.getId());
                registerTimeDO.setCreateTime(new Date());
                patientRegisterTimeDao.save(registerTimeDO);
            }
        }catch (Exception e){
            throw new RuntimeException("号源已经被预约,请选择其他号源");
        }
        //2.物流信息
        WlyyPrescriptionExpressageDO expressageDO = objectMapper.readValue(expressageJson,WlyyPrescriptionExpressageDO.class);
        expressageDO.setDel(1);
@ -484,78 +509,23 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
        prescriptionExpressageDao.save(expressageDO);
        //3.创建候诊室
        createRoom(outpatient);
        createRoom(outpatient,registerTimeDO==null?null:registerTimeDO.getStartTime());
        return true;
        return outpatient;
    }
//    /**
//     *
//     * @param json
//     * @return
//     */
//    public String paymentCallback(JSONObject json)throws Exception{
//
//        //创建续方
//        createPrescription(json);
//        //创建诊室
//        createRoom(json);
//        return null;
//    }
//    public Boolean createPrescription(JSONObject json) throws Exception{
//
//        String patient = json.getString("patient");
//        String doctor = json.getString("doctor");
//
//        String originRealOrder = json.getString("originRealOrder");
//        String originAdmNo = json.getString("originAdmNo");
//        String serialNo = json.getString("serialNo");
//
//
//        BasePatientDO basePatientDO = basePatientDao.findById(patient);
//        PatientMedicareCardDO cardDO = basePatientMedicareCardDao.findByTypeAndPatientCodeAndDel(PatientMedicareCardDO.Type.MedicareCard.getType(),patient,"1");
//        BaseDoctorDO baseDoctorDO = baseDoctorDao.findOne(doctor);
//        String patNo  = patientMappingService.findHisPatNoByIdCard(basePatientDO.getIdcard());
//
//        WlyyPrescriptionVO originPrescriptionVO = findOriginPrescription(serialNo,patNo,originAdmNo,originRealOrder,demoFlag);
//
//        WlyyPrescriptionDO prescription = new WlyyPrescriptionDO();
//        prescription.setOriginAdmNo(originAdmNo);
//        prescription.setOriginRealOrder(originRealOrder);
//        prescription.setOriginSerialNo(serialNo);
//        prescription.setStatus(0);
//        prescription.setPatientCode(patient);
//        prescription.setPatientName(basePatientDO.getName());
//        prescription.setSsc(cardDO.getCode());
//        prescription.setDoctor(doctor);
//        prescription.setDoctorName(baseDoctorDO.getName());
//
//        List<WlyyPrescriptionInfoVO> originInfoVOs = originPrescriptionVO.getInfoVOs();
//        List<WlyyPrescriptionInfoDO> infoDOs = new ArrayList<>();
//        List<WlyyPrescriptionDiagnosisVO> diagnosisVOs = originPrescriptionVO.getDiagnosisVOs();
//        List<WlyyPrescriptionDiagnosisDO> diagnosisDOs = new ArrayList<>();
//
//        prescriptionInfoDao.save(convertToModels(originInfoVOs,infoDOs,WlyyPrescriptionInfoDO.class));
//        prescriptionDiagnosisDao.save(convertToModels(diagnosisVOs,diagnosisDOs,WlyyPrescriptionDiagnosisDO.class));
//        prescriptionDao.save(prescription);
//        return true;
//    }
    /**
     * 创建候诊室
     * @param outpatientDO
     * @return
     */
    public Boolean createRoom(WlyyOutpatientDO outpatientDO){
    public Boolean createRoom(WlyyOutpatientDO outpatientDO,Date reservationTime){
        WlyyHospitalWaitingRoomDO waitingRoom = new WlyyHospitalWaitingRoomDO();
        waitingRoom.setConsultType(1);
        waitingRoom.setPatientId(outpatientDO.getPatient());
        waitingRoom.setPatientName(outpatientDO.getPatientName());
        waitingRoom.setReservationTime(outpatientDO.getAdmDate());
        waitingRoom.setReservationTime(reservationTime);
        waitingRoom.setVisitStatus(0);
        waitingRoom.setReservationType(1);
        waitingRoom.setSort(0);
@ -566,7 +536,7 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
        }
        waitingRoom.setOutpatientId(outpatientDO.getId());
        waitingRoom.setCreateTime(new Date());
        HospitalWaitingRoomDao.save(waitingRoom);
        hospitalWaitingRoomDao.save(waitingRoom);
        return true;
    }
@ -616,10 +586,11 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
    }
    public JSONObject checkOutpatient(String patient){
    public JSONObject checkOutpatient(String patient)throws Exception{
        //-1卡余额不足,,-2 存在未结束的诊断热 1成功
        JSONObject rs = new JSONObject();
        //1.判断钱是否够
        //1.余额判断改到前端判断
        //net.sf.json.JSONObject json = entranceService.qutpatientBalance(cardNo,demoFlag);
        //2.判断是否有未结束的
        List<WlyyOutpatientDO> list = outpatientDao.findByPatientList(patient);
@ -648,10 +619,20 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
     * @param orgCode
     * @return
     */
    public List<DictHospitalDeptVO> findDeptByHospital(String orgCode){
    public List<DictHospitalDeptVO> findDeptByHospital(String orgCode,String dept){
        List<DictHospitalDeptDO> list =  dictHospitalDeptDao.findByOrgCodeIn(orgCode);
        List<DictHospitalDeptVO> rs = new ArrayList<>();
        return convertToModels(list,rs,DictHospitalDeptVO.class);
        convertToModels(list,rs,DictHospitalDeptVO.class);
        if(rs!=null&&rs.size()>0&&StringUtils.isNotBlank(dept)){
            //排序
            for(int i=0;i<rs.size();i++){
                String id = rs.get(i).getCode();
                if(dept.equals(id)){
                    Collections.swap(rs,0,i);
                }
            }
        }
        return rs;
    }
    /**
@ -660,23 +641,106 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
     * @param dept
     * @return
     */
    public List<Map<String,Object>> findDoctorByHospitalAndDept(String orgCode,String dept){
    public List<Map<String,Object>> findDoctorByHospitalAndDept(String orgCode,String dept,String chargeType,String doctorCode){
        String sql ="SELECT " +
                " d.id, " +
                " d.photo, " +
                " d.`name`, " +
                " h.doctor_duty_code, " +
                " h.doctor_duty_name " +
                " d.expertise," +
                " d.introduce," +
                " d.job_title_code AS jobTitleCode, " +
                " d.job_title_name AS jobTitleName," +
                " d.charge_type AS chargeType" +
                " FROM " +
                " base_doctor d " +
                " JOIN base_doctor_hospital h ON h.doctor_code = d.id " +
                " WHERE  " +
                " h.dept_code = '"+dept+"' " +
                " AND h.org_code = '"+orgCode+"'";
        if(StringUtils.isNotBlank(chargeType)){
            sql+=" AND d.charge_type ='"+chargeType+"'";
        }
        List<Map<String,Object>> list = jdbcTemplate.queryForList(sql);
        if(list!=null&&list.size()>0&&StringUtils.isNotBlank(doctorCode)){
            //排序
            for(int i=0;i<list.size();i++){
                String id = (String)list.get(i).get("id");
                if(doctorCode.equals(id)){
                    Collections.swap(list,0,i);
                }
            }
        }
        return list;
    }
    /**
     * 获取医生列表
     * @param orgCode
     * @param dept
     * @return
     */
    public MixEnvelop findDoctorWithWork(String orgCode,String dept,String chargeType,String doctorCode,Integer page,Integer size){
        String totalSql ="SELECT " +
                " count(1) AS total " +
                " FROM " +
                " base_doctor d " +
                " JOIN base_doctor_hospital h ON h.doctor_code = d.id " +
                " WHERE  " +
                " h.dept_code = '"+dept+"' " +
                " AND h.org_code = '"+orgCode+"'";
        if(StringUtils.isNotBlank(chargeType)){
            totalSql+=" AND d.charge_type ='"+chargeType+"'";
        }
        List<Map<String, Object>> rstotal = jdbcTemplate.queryForList(totalSql);
        Long count = 0L;
        if (rstotal != null && rstotal.size() > 0) {
            count = (Long) rstotal.get(0).get("total");
        }
        String sql ="SELECT " +
                " d.id, " +
                " d.photo, " +
                " d.`name`, " +
                " d.expertise," +
                " d.introduce," +
                " d.job_title_code AS jobTitleCode, " +
                " d.job_title_name AS jobTitleName," +
                " d.charge_type AS chargeType" +
                " FROM " +
                " base_doctor d " +
                " JOIN base_doctor_hospital h ON h.doctor_code = d.id " +
                " WHERE  " +
                " h.dept_code = '"+dept+"' " +
                " AND h.org_code = '"+orgCode+"'";
        if(StringUtils.isNotBlank(chargeType)){
            sql+=" AND d.charge_type ='"+chargeType+"'";
        }
        sql += " LIMIT " + (page - 1) * size + "," + size + "";
        List<Map<String,Object>> list = jdbcTemplate.queryForList(sql);
        if(list!=null&&list.size()>0){
            //获取排班
            for(Map<String,Object> doctor :list){
                String id = (String)doctor.get("id");
                List<WlyyDoctorWorkTimeVO> times = findDoctorWorkTime(id);
                doctor.put("workTime",times);
            }
            if(StringUtils.isNotBlank(doctorCode)){
                //排序
                for(int i=0;i<list.size();i++){
                    String id = (String)list.get(i).get("id");
                    if(doctorCode.equals(id)){
                        Collections.swap(list,0,i);
                    }
                }
            }
        }
        return MixEnvelop.getSuccessListWithPage(BaseHospitalRequestMapping.Prescription.api_success, list, page, size, count);
    }
    /**
     * 挂号
     * @return
@ -695,6 +759,8 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
            //存储挂号号
            String serialNo = (String)rs.get("serial_no");
            outpatientDO.setRegisterNo(serialNo);
            String conNo = (String)rs.get("@times");
            outpatientDO.setCardNo(conNo);
        }
        return rs;
@ -757,6 +823,7 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
            prescriptionDO = prescriptionDOs.get(0);
        }else{
            prescriptionDO = new WlyyPrescriptionDO();
            prescriptionDO.setOutpatientId(outPatientId);
        }
        prescriptionDO.setStatus(10);
        prescriptionDO.setPatientCode(outpatientDO.getPatient());
@ -768,7 +835,9 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
        //下诊断
        //删除之前诊断
        List<WlyyPrescriptionDiagnosisDO> ds = prescriptionDiagnosisDao.findByPrescriptionId(prescription.getId());
        prescriptionDiagnosisDao.delete(ds);
        if(ds!=null&&ds.size()>0){
            prescriptionDiagnosisDao.delete(ds);
        }
        List<WlyyPrescriptionDiagnosisDO> diagnosisDOs = (List<WlyyPrescriptionDiagnosisDO>) com.alibaba.fastjson.JSONArray.parseArray(diagnosisJson, WlyyPrescriptionDiagnosisDO.class);
        String Icd10 = "";
@ -1059,4 +1128,295 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
        }
        ws.addCell(label);
    }
    public List<WlyyChargeDictVO> findByDeptTypeCode(String deptTypeCode){
        List<WlyyChargeDictDO> dictDOs = wlyyChargeDictDao.findByDeptTypeCode(deptTypeCode);
        List<WlyyChargeDictVO> dictVOs = new ArrayList<>();
        return convertToModels(dictDOs,dictVOs,WlyyChargeDictVO.class);
    }
    public List<WlyyDoctorWorkTimeVO> findDoctorWorkTime(String doctor){
        //获取医生排班规则
        List<WlyyHospitalSysDictDO> list = sysDictDao.findByDictName("Scheduling");
        Calendar ncTime = Calendar.getInstance();
        ncTime.setTime(new Date());
        Calendar scTime = Calendar.getInstance();
        scTime.setTime(new Date());
        Calendar ecTime = Calendar.getInstance();
        ecTime.setTime(new Date());
        //设置几天号源,及最后天号源的开放时间
        int days =Integer.parseInt(findHospitalSysDictValue(list,"OpenDays"));
        String closeTime = findHospitalSysDictValue(list,"CloseTime");
        //比较当前时间是否超过开放时间
        if(DateUtil.strToDate(DateUtil.getTimeShort(),DateUtil.HH_MM_SS).after(DateUtil.strToDate(closeTime,DateUtil.HH_MM))){
            //当前时间超过开放时间,可以预约最后一天全部号源
            ecTime.add(Calendar.DAY_OF_MONTH,days);
            ecTime.set(ecTime.get(Calendar.YEAR),ecTime.get(Calendar.MONTH),ecTime.get(Calendar.DATE),23,59,59);
        }else{
            //当前时间没超过开放时间,可以预约最后一天前一天全部号源
            ecTime.add(Calendar.DAY_OF_MONTH,days>1?days-1:0);
            ecTime.set(ecTime.get(Calendar.YEAR),ecTime.get(Calendar.MONTH),ecTime.get(Calendar.DATE),23,59,59);
        }
        List<WlyyDoctorWorkTimeDO> times =  doctorWorkTimeDao.findDoctorWorkTime(doctor,scTime.getTime(),ecTime.getTime());
        workTimeFilter(list,times);
        List<WlyyDoctorWorkTimeVO> timeVOs = new ArrayList<>();
        convertToModels(times,timeVOs,WlyyDoctorWorkTimeVO.class);
        if(timeVOs!=null&&timeVOs.size()>0){
            for(WlyyDoctorWorkTimeVO timeVO : timeVOs){
                timeVO.setCount(findWorkTimeCount(timeVO.getId()));
            }
        }
        return timeVOs;
    }
    public List<WlyyDoctorWorkTimeDO> workTimeFilter(List<WlyyHospitalSysDictDO> sys,List<WlyyDoctorWorkTimeDO> times){
        if(times!=null&&times.size()>0){
            //上午号源开放的最早天数
            int AMCloseDays =Integer.parseInt(findHospitalSysDictValue(sys,"AMCloseDays"));
            //每一天上午的最早预约的过号时间
            String AMCloseTime = findHospitalSysDictValue(sys,"AMCloseTime");
            //下午号源开放的最早天数
            int PMCloseDays =Integer.parseInt(findHospitalSysDictValue(sys,"PMCloseDays"));
            //每一天下午的最早预约的过号时间
            String PMCloseTime = findHospitalSysDictValue(sys,"PMCloseTime");
            Iterator it = times.iterator();
            while (it.hasNext()){
                //设置上午过号时间
                Calendar scAMTime = Calendar.getInstance();
                scAMTime.setTime(new Date());
                scAMTime.add(Calendar.DAY_OF_MONTH,AMCloseDays);
                //设置下午午过号时间
                Calendar scPMTime = Calendar.getInstance();
                scPMTime.setTime(new Date());
                scPMTime.add(Calendar.DAY_OF_MONTH,PMCloseDays);
                WlyyDoctorWorkTimeDO time = (WlyyDoctorWorkTimeDO)it.next();
                Boolean filter = true;
                //1.【上午的排班中】 且 【排班结束时间】如果在【开放时间】前,则移除
                if(filter&&"1".equals(time.getTimeType())&&time.getEndTime().before(scAMTime.getTime())){
                    it.remove();
                    filter=false;
                }
                //2.【下午午的排班中】 且 【排班结束时间】如果在【开放时间】前,则移除该排班
                if(filter&&"2".equals(time.getTimeType())&&time.getEndTime().before(scPMTime.getTime())){
                    it.remove();
                    filter=false;
                }
                //3.如果【当前时间】过了【上午放号时间】,则移除所有上午的排班
                if(filter&&"1".equals(time.getTimeType())&&
                        DateUtil.strToDate(DateUtil.getTimeShort(),DateUtil.HH_MM_SS).after(DateUtil.strToDate(AMCloseTime,DateUtil.HH_MM))){
                    scAMTime.set(scAMTime.get(Calendar.YEAR),scAMTime.get(Calendar.MONTH),scAMTime.get(Calendar.DATE),12,00,00);
                    if(time.getEndTime().before(scAMTime.getTime())){
                        it.remove();
                        filter=false;
                    }
                }
                //4.如果【当前时间】过了【下午午放号时间】,则移除所有下午的排班
                if(filter&&"2".equals(time.getTimeType())&&
                        DateUtil.strToDate(DateUtil.getTimeShort(),DateUtil.HH_MM_SS).after(DateUtil.strToDate(PMCloseTime,DateUtil.HH_MM))){
                    scPMTime.set(scAMTime.get(Calendar.YEAR),scAMTime.get(Calendar.MONTH),scAMTime.get(Calendar.DATE),12,00,00);
                    if(time.getEndTime().before(scPMTime.getTime())){
                        it.remove();
                    }
                }
            }
        }
        return times;
    }
    public String findHospitalSysDictValue(List<WlyyHospitalSysDictDO> list,String dictCode){
        if(list!=null&&list.size()>0){
            for(WlyyHospitalSysDictDO sysDictDO : list){
                if(dictCode.equals(sysDictDO.getDictCode())){
                    return sysDictDO.getDictValue();
                }
            }
        }
        return "";
    }
    /**
     * 获取卡信息
     * @param cardNo
     * @param demoFlag
     * @return
     * @throws Exception
     */
    public net.sf.json.JSONObject getCardInfo(String cardNo, boolean demoFlag) throws Exception {
        return entranceService.qutpatientBalance(cardNo,demoFlag);
    }
    public List<Map<String,Object>> findWorkTimeInfo(String id){
        WlyyDoctorWorkTimeDO timeDO = doctorWorkTimeDao.findOne(id);
        Calendar sc = Calendar.getInstance();
        sc.setTime(timeDO.getStartTime());
        List<Map<String,Object>> rs = new ArrayList<>();
        //1.根据当前时间,去取已过时间的号源
        while (sc.getTime().before(timeDO.getEndTime())){
            if(new Date().before(sc.getTime())){
                break;
            }
            //加上时间间隔
            sc.add(Calendar.MINUTE,timeDO.getTimeInterval());
        }
        List<WlyyPatientRegisterTimeDO> registerTimeDOs = patientRegisterTimeDao.findByDoctorAndWorkId(timeDO.getDoctor(),id);
        //2.根据时间间隔拆分号源
        while (sc.getTime().before(timeDO.getEndTime())){
            Map<String,Object> t = new HashedMap();
            t.put("startTime",DateUtil.dateToStr(sc.getTime(),"yyyy-MM-dd HH:mm:ss"));
            //加上时间间隔
            sc.add(Calendar.MINUTE,timeDO.getTimeInterval());
            //如果结束时间大于排班时间则不再拆分号源
            if(sc.getTime().after(timeDO.getEndTime())){
                break;
            }
            t.put("endTime",DateUtil.dateToStr(sc.getTime(),"yyyy-MM-dd HH:mm:ss"));
            //如果号源被预约了,标记为true
            Boolean registered = false;
            if(registerTimeDOs!=null&&registerTimeDOs.size()>0){
                for(WlyyPatientRegisterTimeDO registerTimeDO : registerTimeDOs){
                    if(t.get("startTime").equals(DateUtil.dateToStr(registerTimeDO.getStartTime(),"yyyy-MM-dd HH:mm:ss"))){
                        registered = true;
                    }
                }
            }
            t.put("registered",registered);
            rs.add(t);
        }
        return rs;
    }
    public Integer findWorkTimeCount(String id){
        WlyyDoctorWorkTimeDO timeDO = doctorWorkTimeDao.findOne(id);
        Calendar sc = Calendar.getInstance();
        sc.setTime(timeDO.getStartTime());
        List<Map<String,Object>> rs = new ArrayList<>();
        //1.根据当前时间,去取已过时间的号源
        while (sc.getTime().before(timeDO.getEndTime())){
            if(new Date().before(sc.getTime())){
                break;
            }
            //加上时间间隔
            sc.add(Calendar.MINUTE,timeDO.getTimeInterval());
        }
        List<WlyyPatientRegisterTimeDO> registerTimeDOs = patientRegisterTimeDao.findByDoctorAndWorkId(timeDO.getDoctor(),id);
        //2.根据时间间隔拆分号源
        while (sc.getTime().before(timeDO.getEndTime())){
            Map<String,Object> t = new HashedMap();
            t.put("startTime",DateUtil.dateToStr(sc.getTime(),"yyyy-MM-dd HH:mm:ss"));
            //加上时间间隔
            sc.add(Calendar.MINUTE,timeDO.getTimeInterval());
            if(sc.getTime().after(timeDO.getEndTime())){
                break;
            }
            t.put("endTime",DateUtil.dateToStr(sc.getTime(),"yyyy-MM-dd HH:mm:ss"));
            if(registerTimeDOs!=null&&registerTimeDOs.size()>0){
                Boolean registered = false;
                for(WlyyPatientRegisterTimeDO registerTimeDO : registerTimeDOs){
                    if(t.get("startTime").equals(DateUtil.dateToStr(registerTimeDO.getStartTime(),"yyyy-MM-dd HH:mm:ss"))){
                        registered = true;
                    }
                }
                if(!registered){
                    rs.add(t);
                }
            }else {
                rs.add(t);
            }
        }
        return rs.size();
    }
    public Map<String,Object> findDoctorInfo(String doctor){
        BaseDoctorDO doctorDO = baseDoctorDao.findOne(doctor);
        Map<String,Object> rs = new HashedMap();
        if(doctorDO!=null){
            rs.put("doctor",doctor);
            rs.put("doctor",doctorDO.getName());
            rs.put("job",doctorDO.getJobTitleCode());
            rs.put("jobName",doctorDO.getJobTitleName());
            rs.put("chargeType",doctorDO.getChargeType());
            rs.put("photo",doctorDO.getPhoto());
        }
        return rs;
    }
    public Map<String,Object> cancelOutPatient(String outPatientId,String cancelType,String cancelValue,String cancelRemark){
        Map<String,Object> rs = new HashedMap();
        //判断医生是否接诊
        List<WlyyHospitalWaitingRoomDO> roomDOs =hospitalWaitingRoomDao.findByOutpatientId(outPatientId);
        if(roomDOs!=null&&roomDOs.size()>0){
            for(WlyyHospitalWaitingRoomDO roomDO:roomDOs){
                if(roomDO.getVisitStatus()==2){
                    rs.put("code",-1);
                    rs.put("mes","医生已经接诊,无法取消");
                    return rs;
                }else{
                    roomDO.setVisitStatus(-1);
                    hospitalWaitingRoomDao.save(roomDO);
                }
            }
        }
        //更改门诊状态
        WlyyOutpatientDO wlyyOutpatientDO = outpatientDao.findOne(outPatientId);
        wlyyOutpatientDO.setStatus("-1");
        wlyyOutpatientDO.setPatientCancelRemark(cancelRemark);
        wlyyOutpatientDO.setPatientCancelType(cancelType);
        wlyyOutpatientDO.setPatientCancelValue(cancelValue);
        outpatientDao.save(wlyyOutpatientDO);
        //删除门诊号源
        List<WlyyPatientRegisterTimeDO> list = patientRegisterTimeDao.findByOutpatientId(wlyyOutpatientDO.getId());
        patientRegisterTimeDao.delete(list);
        rs.put("code",1);
        rs.put("mes","取消成功");
        return  rs;
    }
    public List<WlyyHospitalSysDictDO> findCancelReasonList(){
        return sysDictDao.findByDictName("PatientCancel");
    }
}

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

@ -4,19 +4,25 @@ package com.yihu.jw.hospital.prescription.service.entrance;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.jw.dict.dao.DictHospitalDeptDao;
import com.yihu.jw.dict.service.DictHospitalDeptService;
import com.yihu.jw.doctor.dao.BaseDoctorDao;
import com.yihu.jw.doctor.dao.BaseDoctorHospitalDao;
import com.yihu.jw.entity.base.dict.DictHospitalDeptDO;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
import com.yihu.jw.entity.base.doctor.BaseDoctorHospitalDO;
import com.yihu.jw.entity.hospital.dict.WlyyChargeDictDO;
import com.yihu.jw.entity.hospital.mapping.HospitalDeptMappingDO;
import com.yihu.jw.entity.hospital.mapping.DoctorMappingDO;
import com.yihu.jw.entity.hospital.mapping.PatientMappingDO;
import com.yihu.jw.hospital.dict.WlyyChargeDictDao;
import com.yihu.jw.hospital.mapping.dao.HospitalDeptMappingDao;
import com.yihu.jw.hospital.mapping.dao.DoctorMappingDao;
import com.yihu.jw.hospital.mapping.dao.PatientMappingDao;
import com.yihu.jw.hospital.prescription.service.entrance.util.ConvertUtil;
import com.yihu.jw.hospital.prescription.service.entrance.util.MqSdkUtil;
import com.yihu.jw.hospital.prescription.service.entrance.util.WebserviceUtil;
import com.yihu.jw.restmodel.hospital.prescription.*;
import com.yihu.jw.util.common.PwdUtil;
import com.yihu.jw.util.date.DateUtil;
import com.yihu.jw.util.http.HttpClientUtil;
import com.yihu.jw.util.idcard.IdCardUtil;
import net.sf.json.JSON;
import net.sf.json.JSONArray;
import net.sf.json.xml.XMLSerializer;
@ -77,12 +83,22 @@ public class EntranceService {
    private String sourceSysCode;
    @Value("${hospital.TargetSysCode}")
    private String targetSysCode;
    @Value("${hospital.url}")
    private String serverUrl;
    @Autowired
    private DictHospitalDeptDao dictHospitalDeptDao;
    @Autowired
    private PatientMappingDao patientMappingDao;
    @Autowired
    private WlyyChargeDictDao wlyyChargeDictDao;
    @Autowired
    private BaseDoctorDao baseDoctorDao;
    @Autowired
    private DoctorMappingDao doctorMappingDao;
    @Autowired
    private BaseDoctorHospitalDao baseDoctorHospitalDao;
    @Autowired
    private HttpClientUtil httpClientUtil;
    /**
     * 获取本地示例返参
@ -120,7 +136,7 @@ public class EntranceService {
    /**
     * 查询门诊余额
     * @param cardNo 身份证号码,必传参数
     * @param cardNo 卡号,必传参数
     * @param demoFlag 是否使用demo.不请求接口。true代表获取本地数据,false代表获取his数据
     * @return
     * @throws Exception
@ -160,8 +176,8 @@ public class EntranceService {
    /**
     * 门诊就诊卡列表
     * @param SOCIAL_NO 身份证号,二者不能都为空
     * @param CARD_NO 就诊卡号,二者不能都为空
     * @param SOCIAL_NO 身份证号
     * @param CARD_NO 就诊卡号
     * @return
     * @throws Exception
     */
@ -277,6 +293,8 @@ public class EntranceService {
                                    wlyyPrescriptionVO = initWlyyPrescriptionVo(new WlyyPrescriptionVO(), jsonObjectBody, realOrder);
                                    wlyyPrescriptionVO.setHospital("350211A1002");
                                    wlyyPrescriptionVO.setHospitalName("厦门市中山医院");
                                    String doasgeTime=null != jsonObjectBody.get("DISP_DATE") ? jsonObjectBody.get("DISP_DATE").toString() : "";
                                    wlyyPrescriptionVO.setDosageTime(DateUtil.strToDate((doasgeTime+" 00:00:00"),DateUtil.YYYY_MM_DD_HH_MM_SS));
                                    wlyyPrescriptionVOMap.put(realOrder, wlyyPrescriptionVO);
                                    //主诊断 毒蛇咬伤&T63.001
                                    String[] icdName = jsonObjectBody.get("icd_name").toString().split("&");
@ -373,7 +391,7 @@ public class EntranceService {
        wlyyPrescriptionVO.setPatientCode(patNo);
        wlyyPrescriptionVO.setPatientName(patientName);
        wlyyPrescriptionVO.setIdcard(patientMappingDo.getIdcard());
        wlyyPrescriptionVO.setIdcard(null==patientMappingDo?null:patientMappingDo.getIdcard());
        //TODO 社保卡号
        wlyyPrescriptionVO.setSsc("");
        wlyyPrescriptionVO.setHisDoctorCode(null != jsonObjectBody.get("PRESC_DOC") ? jsonObjectBody.get("PRESC_DOC").toString() : "");
@ -414,6 +432,8 @@ public class EntranceService {
    public  List<WlyyOutpatientVO> BS30025(String PAT_NO,String conNo,String startTime,String endTime,boolean demoFlag) throws Exception {
        String fid = BS30025;
        String resp = "";
        String orgCode = "350211A1002";
        String orgName = "厦门市中山医院";
        if (demoFlag) {
            resp = getJosnFileResullt(fid);
        } else {
@ -448,8 +468,10 @@ public class EntranceService {
            net.sf.json.JSONObject jsonObjectMgsInfo = (net.sf.json.JSONObject) object;
            if (null != jsonObjectMgsInfo) {
                wlyyOutpatientVO = new WlyyOutpatientVO();
                wlyyOutpatientVO.setHospital("350211A1002");
                wlyyOutpatientVO.setHospitalName("厦门市中山医院");
                //中山医院固定入参
                wlyyOutpatientVO.setHospital(orgCode);
                wlyyOutpatientVO.setHospitalName(orgName);
                wlyyOutpatientVO.setWinNo("6");
                wlyyOutpatientVO.setAdmNo(null == jsonObjectMgsInfo.get("ADM_NO") ? "" : jsonObjectMgsInfo.get("ADM_NO") + "");
                wlyyOutpatientVO.setRegisterNo(null == jsonObjectMgsInfo.get("REGISTER_SN") ? "" : jsonObjectMgsInfo.get("REGISTER_SN") + "");
                wlyyOutpatientVO.setDept(null == jsonObjectMgsInfo.get("ADM_SPEC") ? "" : jsonObjectMgsInfo.get("ADM_SPEC") + "");
@ -465,15 +487,60 @@ public class EntranceService {
                wlyyOutpatientVO.setPatient(patNo);
                wlyyOutpatientVO.setPatientName(patientName);
                wlyyOutpatientVO.setConNo(null == jsonObjectMgsInfo.get("CON_NO") ? "" : jsonObjectMgsInfo.get("CON_NO") + "");
                wlyyOutpatientVO.setDoctor(null == jsonObjectMgsInfo.get("CON_DOC") ? "" : jsonObjectMgsInfo.get("CON_DOC") + "");
                String doctor=null == jsonObjectMgsInfo.get("CON_DOC") ? "" : jsonObjectMgsInfo.get("CON_DOC") + "";
                //转化医生
                String mappingCode = doctor.trim();
                String doctorCode = "";
                if(StringUtils.isNotBlank(mappingCode)){
                    List<DoctorMappingDO> mappingDOs =doctorMappingDao.findByOrgCodeAndMappingCode(orgCode,mappingCode);
                    if(mappingDOs!=null&&mappingDOs.size()>0){
                        doctorCode = mappingDOs.get(0).getDoctor();
                    }
                }
                wlyyOutpatientVO.setDoctor(doctorCode);
                wlyyOutpatientVO.setDoctorName(null == jsonObjectMgsInfo.get("CON_DOC_NAME") ? "" : jsonObjectMgsInfo.get("CON_DOC_NAME") + "");
                wlyyOutpatientVO.setIdcard(null == jsonObjectMgsInfo.get("social_no") ? "" : jsonObjectMgsInfo.get("social_no") + "");
                wlyyOutpatientVO.setMjz(null == jsonObjectMgsInfo.get("MJZ") ? "" : jsonObjectMgsInfo.get("MJZ") + "");
                String icds = null == jsonObjectMgsInfo.get("icd_name") ? "" : jsonObjectMgsInfo.get("icd_name") + "";
                String[] icdcodeAndName = icds.split("&");
                wlyyOutpatientVO.setIcd10(icdcodeAndName.length > 1 ? icdcodeAndName[1].toString() : "");
                wlyyOutpatientVO.setIcd10Name(icdcodeAndName.length > 0 ? icdcodeAndName[0].toString() : "");
                //主诊断 毒蛇咬伤&T63.001
                String[] icdName = jsonObjectMgsInfo.get("icd_name").toString().split("&");
                String[] diagTwo = jsonObjectMgsInfo.get("diag_two").toString().split("&");
                String[] diagThree = jsonObjectMgsInfo.get("diag_three").toString().split("&");
                String[] diagFour = jsonObjectMgsInfo.get("diag_four").toString().split("&");
                String[] diagFive = jsonObjectMgsInfo.get("diag_five").toString().split("&");
                String icdcodes = "";
                String icdNames = "";
                if(icdName.length>0){
                    icdcodes += icdName[1];
                    icdNames += icdName[0];
                }
                if(diagTwo.length>0){
                    icdcodes += ","+diagTwo[1];
                    icdNames += ","+diagTwo[0];
                }
                if(diagThree.length>0){
                    icdcodes += ","+diagThree[1];
                    icdNames += ","+diagThree[0];
                }
                if(diagFour.length>0){
                    icdcodes += ","+diagFour[1];
                    icdNames += ","+diagFour[0];
                }
                if(diagFive.length>0){
                    icdcodes += ","+diagFive[1];
                    icdNames += ","+diagFive[0];
                }
//                String icds = null == jsonObjectMgsInfo.get("icd_name") ? "" : jsonObjectMgsInfo.get("icd_name") + "";
//                String[] icdcodeAndName = icds.split("&");
//                wlyyOutpatientVO.setIcd10(icdcodeAndName.length > 1 ? icdcodeAndName[1].toString() : "");
//                wlyyOutpatientVO.setIcd10Name(icdcodeAndName.length > 0 ? icdcodeAndName[0].toString() : "");
                wlyyOutpatientVO.setIcd10(icdcodes);
                wlyyOutpatientVO.setIcd10Name(icdNames);
                String admDate = null == jsonObjectMgsInfo.get("ADM_DAT") ? "" : jsonObjectMgsInfo.get("ADM_DAT") + "";
                String conDate = null == jsonObjectMgsInfo.get("CON_DATE") ? "" : jsonObjectMgsInfo.get("CON_DATE") + "";
                wlyyOutpatientVO.setAdmDate(DateUtil.strToDate(admDate, DateUtil.YYYY_MM_DD_HH_MM_SS_));
@ -678,7 +745,7 @@ public class EntranceService {
            resp = MqSdkUtil.putReqAndGetRespByQueryStr(sbs.toString(), fid);
            resp = MqSdkUtil.xml2jsonArrayRootRow(resp);
        }
        return ConvertUtil.convertListEnvelopInRequest(resp);
        return ConvertUtil.convertListEnvelopInRequestBS10112(resp);
    }
    /**
@ -1241,35 +1308,27 @@ public class EntranceService {
    }
    public List<WlyyChargeDictDO> BS55010(String windowsNo,String code,String chargeType,boolean demoFlag) throws Exception {
        String fid="BS55010";
    /**
     * 诊查费字典同步
     * @param windowsNo 分部号
     * @param code 医生code
     * @param chargeType 号别
     * @param demoFlag 是否获取demo数据
     * @return
     * @throws Exception
     */
    public List<WlyyChargeDictDO> chargeDict(String windowsNo,String code,String chargeType,boolean demoFlag) throws Exception {
        String resp="";
        Map<String,Object> map=new HashMap<>();
        List<WlyyChargeDictDO> wlyyChargeDictDOS=new ArrayList<>();
        net.sf.json.JSONArray jsonArray=new JSONArray();
        if (demoFlag) {
            String fid="BS55010";
            resp = getJosnFileResullt(fid);
            jsonArray= ConvertUtil.convertListEnvelopInBodyRow(resp);
        } else {
            StringBuffer sbs = new StringBuffer();
            //AccessControl :用户、密码、服务id
            sbs.append("<ESBEntry><AccessControl><Fid>" + fid + "</Fid><UserName>"+mqUser+"</UserName><Password>"+mqPwd+"</Password></AccessControl>");
            //MessageHeader :固定值 消费方系统编号 S60,提供方系统编号 S01
            sbs.append("<MessageHeader><Fid>" + fid + "</Fid><MsgDate>" + DateUtil.dateToStr(new Date(), DateUtil.YYYY_MM_DD_HH_MM_SS) + "</MsgDate><SourceSysCode>"+sourceSysCode+"</SourceSysCode><TargetSysCode>"+targetSysCode+"</TargetSysCode></MessageHeader>");
            //查询信息拼接
            sbs.append("<MsgInfo><endNum>20000</endNum><Msg/>");
            if (StringUtils.isNotBlank(windowsNo)) {
                sbs.append("<query compy=\"=\" item=\"windows_no\" splice=\"and\" value=\"'"+windowsNo+"'\"/>");
            }
            if (StringUtils.isNotBlank(chargeType)) {
                sbs.append("<query compy=\"=\" item=\"charge_type\" splice=\"and\" value=\"'"+chargeType+"'\"/>");
            }
            if (StringUtils.isNotBlank(code)) {
                sbs.append("<query compy=\"=\" item=\"code\" splice=\"and\" value=\"'"+code+"'\"/>");
            }
            sbs.append("<startNum>1</startNum></MsgInfo></ESBEntry>");
            resp = MqSdkUtil.putReqAndGetRespByQueryStr(sbs.toString(), fid);
            resp = MqSdkUtil.xml2jsonArrayRootRow(resp);
            jsonArray= BS55010( windowsNo, code, chargeType, demoFlag);
        }
        net.sf.json.JSONArray jsonArray= ConvertUtil.convertListEnvelopInBodyRow(resp);
        for(Object object:jsonArray){
            net.sf.json.JSONObject jsonObjectBody=(net.sf.json.JSONObject)object;
            String chareName="";
@ -1302,5 +1361,153 @@ public class EntranceService {
        return wlyyChargeDictDOS;
    }
    public net.sf.json.JSONArray BS55010(String windowsNo,String code,String chargeType,boolean demoFlag) throws Exception {
        String fid="BS55010";
        String resp="";
        if (demoFlag) {
            resp = getJosnFileResullt(fid);
        } else {
            StringBuffer sbs = new StringBuffer();
            //AccessControl :用户、密码、服务id
            sbs.append("<ESBEntry><AccessControl><Fid>" + fid + "</Fid><UserName>"+mqUser+"</UserName><Password>"+mqPwd+"</Password></AccessControl>");
            //MessageHeader :固定值 消费方系统编号 S60,提供方系统编号 S01
            sbs.append("<MessageHeader><Fid>" + fid + "</Fid><MsgDate>" + DateUtil.dateToStr(new Date(), DateUtil.YYYY_MM_DD_HH_MM_SS) + "</MsgDate><SourceSysCode>"+sourceSysCode+"</SourceSysCode><TargetSysCode>"+targetSysCode+"</TargetSysCode></MessageHeader>");
            //查询信息拼接
            sbs.append("<MsgInfo><endNum>20000</endNum><Msg/>");
            if (StringUtils.isNotBlank(windowsNo)) {
                sbs.append("<query compy=\"=\" item=\"windows_no\" splice=\"and\" value=\"'"+windowsNo+"'\"/>");
            }
            if (StringUtils.isNotBlank(chargeType)) {
                sbs.append("<query compy=\"=\" item=\"charge_type\" splice=\"and\" value=\"'"+chargeType+"'\"/>");
            }
            if (StringUtils.isNotBlank(code)) {
                sbs.append("<query compy=\"=\" item=\"code\" splice=\"and\" value=\"'"+code+"'\"/>");
            }
            sbs.append("<startNum>1</startNum></MsgInfo></ESBEntry>");
            resp = MqSdkUtil.putReqAndGetRespByQueryStr(sbs.toString(), fid);
            resp = MqSdkUtil.xml2jsonArrayRootRow(resp);
        }
        return ConvertUtil.convertListEnvelopInBodyRow(resp);
    }
    /**
     * 同步医生到本地库,获取到医生的时候需要调用BS55010 查询医生的诊查费
     * @param demoFlag
     * @return
     * @throws Exception
     */
    public int MS02003(boolean demoFlag) throws Exception {
        int i = 0;
        String fid = "MS02003";
        String resp = "";
        if (demoFlag) {
            resp = getJosnFileResullt(fid);
        } else {
            StringBuffer sbs = new StringBuffer();
            //AccessControl :用户、密码、服务id
            sbs.append("<ESBEntry><AccessControl><Fid>" + fid + "</Fid><UserName>" + mqUser + "</UserName><Password>" + mqPwd + "</Password></AccessControl>");
            //MessageHeader :固定值 消费方系统编号 S60,提供方系统编号 S01
            sbs.append("<MessageHeader><Fid>" + fid + "</Fid><MsgDate>" + DateUtil.dateToStr(new Date(), DateUtil.YYYY_MM_DD_HH_MM_SS) + "</MsgDate><SourceSysCode>" + sourceSysCode + "</SourceSysCode><TargetSysCode>" + targetSysCode + "</TargetSysCode></MessageHeader>");
            //查询信息拼接
            sbs.append("<MsgInfo><endNum>10000</endNum><Msg></Msg><startNum>1</startNum></MsgInfo></ESBEntry>");
            resp = MqSdkUtil.putReqAndGetRespByQueryStr(sbs.toString(), fid);
            resp = MqSdkUtil.xml2jsonArrayRootRow(resp);
            net.sf.json.JSONArray jsonArray = ConvertUtil.convertListEnvelopInBodyRow(resp);
            for (Object object : jsonArray) {
                net.sf.json.JSONObject jsonObjectBody = (net.sf.json.JSONObject) object;
                String doctorCode = "";
                String doctorName = "";
                if (null != jsonObjectBody) {
                    //获取中山医院的医生
                    String winNo = "6";
                    doctorCode = null == jsonObjectBody.get("Emp_Code") ? "" : jsonObjectBody.get("Emp_Code").toString();
                    //根据医生及分部,获取医生号别
                    net.sf.json.JSONArray jsonArrayCharge = BS55010(winNo, doctorCode, null, false);
                    String chareType = "";
                    for (Object objectCharge : jsonArrayCharge) {
                        net.sf.json.JSONObject jsonObjectBodyCharge = (net.sf.json.JSONObject) objectCharge;
                        if (null != jsonObjectBodyCharge) {
                            chareType = null == jsonObjectBodyCharge.get("charge_type") ? "" : jsonObjectBodyCharge.get("charge_type").toString();
                        }
                    }
                    //保存医生信息
                    BaseDoctorDO baseDoctorDO = new BaseDoctorDO();
                    String idCard = null == jsonObjectBody.get("Card_Id") ? "" : jsonObjectBody.get("Card_Id").toString();
                    baseDoctorDO.setIdcard(idCard);
                    baseDoctorDO.setBirthday(IdCardUtil.getBirthdayForIdcard(idCard));
                    baseDoctorDO.setSex(Integer.valueOf(IdCardUtil.getSexForIdcard(idCard)));
                    //拼音码
                    baseDoctorDO.setSpell(null == jsonObjectBody.get("PinYin_Code") ? "" : jsonObjectBody.get("PinYin_Code").toString());
                    String disableFlag = null == jsonObjectBody.get("Disable_Flag") ? "" : jsonObjectBody.get("Disable_Flag").toString();
                    //互联网医院:1停用,0使用  转 i健康:1正常,0作废
                    baseDoctorDO.setDel("1".equals(disableFlag) ? "0" : "1");
                    //姓名
                    doctorName = null == jsonObjectBody.get("Emp_Name") ? "" : jsonObjectBody.get("Emp_Name").toString();
                    //号别
                    baseDoctorDO.setChargeType(chareType);
                    if (StringUtils.isNotBlank(idCard)) {
                        baseDoctorDO.setSalt(PwdUtil.randomString(5));
                        baseDoctorDO.setPassword(com.yihu.utils.security.MD5.md5Hex(baseDoctorDO.getIdcard().substring(12, 18) + "{" + baseDoctorDO.getSalt() + "}"));
                    }
                    baseDoctorDO = baseDoctorDao.save(baseDoctorDO);
                    //根据医生和机构判断数据是否存在,若不存在则在mapping中追加记录
                    List<DoctorMappingDO> doctorMappingDOS = doctorMappingDao.findByDoctorAndOrgCode(baseDoctorDO.getId(), "350211A1002");
                    if (!(null != doctorMappingDOS && doctorMappingDOS.size() > 0)) {
                        DoctorMappingDO doctorMappingDO = new DoctorMappingDO();
                        doctorMappingDO.setDoctor(baseDoctorDO.getId());
                        doctorMappingDO.setDoctorName(doctorName);
                        doctorMappingDO.setMappingCode(doctorCode);
                        doctorMappingDO.setMappingName(doctorName);
                        doctorMappingDO.setOrgCode("350211A1002");
                        doctorMappingDO.setOrgName("厦门市中山医院");
                        doctorMappingDao.save(doctorMappingDO);
                    }
                    // 用医生和机构id、部门判断数据是否存在,若不存在则保存医生机构关联关系
                    String deptCode = null == jsonObjectBody.get("Dept_Code") ? "" : jsonObjectBody.get("Dept_Code").toString();
                    List<BaseDoctorHospitalDO> baseDoctorHospitalDOS = baseDoctorHospitalDao.findByOrgCodeAndDeptCodeAndDoctorCode("350211A1002", deptCode, baseDoctorDO.getId());
                    if (!(null != baseDoctorHospitalDOS && baseDoctorHospitalDOS.size() > 0)) {
                        BaseDoctorHospitalDO baseDoctorHospitalDO = new BaseDoctorHospitalDO();
                        baseDoctorHospitalDO.setOrgCode("350211A1002");
                        baseDoctorHospitalDO.setOrgName("厦门市中山医院");
                        baseDoctorHospitalDO.setDoctorCode(baseDoctorDO.getId());
                        baseDoctorHospitalDO.setDeptCode(deptCode);
                        baseDoctorHospitalDO.setDel("1");
                        baseDoctorHospitalDao.save(baseDoctorHospitalDO);
                    }
                    i++;
                }
            }
        }
        return i;
    }
    //=============================================公众号信息======================================================================================
    /**
     *
     * @param userName 推送人姓名
     * @param idCard 推送人身份证
     * @param phone 推送人手机号
     * @param title 推送标题
     * @param url 跳转链接
     * @param content 内容简介
     * @param contentString 内容明细串
     * @return
     */
    public String ehospitalNotice(String userName,String idCard,String phone,String title,String url,String content,String contentString){
        JSONObject  jsonObject=new JSONObject ();
        jsonObject.put("userName",userName);
        jsonObject.put("idCard", idCard);
        jsonObject.put("phone", phone);
        jsonObject.put("title ", title);
        jsonObject.put("url", url);
        jsonObject.put("content", content);
        jsonObject.put("contentString",contentString);
        String responseMsg =httpClientUtil.sendPost(serverUrl+"/interface/ehospitalNoticePush.htm",jsonObject.toString());
        System.out.println(responseMsg);
        return responseMsg;
    }
}

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

@ -158,4 +158,26 @@ public class ConvertUtil {
        }
        return  null;
    }
    /**
     * BS10112处方开方接口返回对象数组数据解析
     * @param obj
     * @return
     * @throws Exception
     */
    public static  JSONObject convertListEnvelopInRequestBS10112(String obj)throws Exception{
        JSONObject jsonObject=JSONObject.fromObject(obj);
        if(null!=jsonObject&&"1".equals(jsonObject.get("code").toString())){
            JSONArray jsonObjectMgsInfo=(JSONArray)jsonObject.get("MsgInfo");
            if(null!=jsonObjectMgsInfo){
                for (Object object : jsonObjectMgsInfo) {
                    JSONObject jsonObjectBody = (JSONObject) object;
                    Object objectBody=jsonObjectBody.get("resquest");
                    jsonObjectBody = (JSONObject) objectBody;
                    return jsonObjectBody;
                }
            }
        }
        return  null;
    }
}

+ 1 - 1
business/base-service/src/mqConfig/mqdata/BS15017.json

@ -3,7 +3,7 @@
	"MsgInfo": {
		"Msg": {
			"CARD_NO": "D26818411",
			"ZHYE": "0.00",
			"ZHYE": "30.00",
			"YEXZ_FLAG": "1"
		},
		"MsgCount": "1",

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

@ -42,8 +42,8 @@
				"YPZYSX": "远离进餐时服,血栓性静脉炎禁用",
				"dxk_meeting_no": [],
				"icd_name": "先兆流产&O20.000",
				"diag_two": "&",
				"diag_three": "&",
				"diag_two": "先兆流产1&O20.001",
				"diag_three": "先兆流产1&O20.002",
				"diag_four": [],
				"diag_five": [],
				"real_order": "401934082",

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

@ -3,7 +3,7 @@
	"MsgInfo": [{
		"row": {
			"ADM_NO": "P11160895-0(2)",
			"PAT_NAME": "张爱华",
			"PAT_NAME": "文彬",
			"SEX": "2",
			"BIRTH_DATE": "1959/01/01 00:00:00",
			"ID_CARD": [],
@ -14,7 +14,7 @@
			"CON_NO": "2",
			"CON_DATE": "2019/06/03 01:37:52",
			"CON_DOC": "8632 ",
			"CON_DOC_NAME": "赵冰",
			"CON_DOC_NAME": "贵港医生1",
			"CON_SPEC": "1190007",
			"CON_SPEC_NAME": "急诊外科",
			"RCPT_POLICY": "00",

+ 13 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/base/doctor/BaseDoctorDO.java

@ -162,6 +162,10 @@ public class BaseDoctorDO extends UuidIdentityEntityWithOperator {
	 */
	private String jobTitleName;
    /**
     * 号别字典
     */
    private String chargeType;
    /**
	 * 作废标识,1正常,0作废
	 */
@ -398,4 +402,13 @@ public class BaseDoctorDO extends UuidIdentityEntityWithOperator {
    public void setJobTitleName(String jobTitleName) {
        this.jobTitleName = jobTitleName;
    }
    @Column(name = "charge_type")
    public String getChargeType() {
        return chargeType;
    }
    public void setChargeType(String chargeType) {
        this.chargeType = chargeType;
    }
}

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

@ -304,6 +304,7 @@ public class BasePatientDO extends UuidIdentityEntityWithOperator {
        this.name = name;
    }
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+08:00")
    @Column(name = "birthday")
    public Date getBirthday() {
        return birthday;

+ 1 - 1
common/common-entity/src/main/java/com/yihu/jw/entity/base/score/BaseEvaluateScoreDO.java

@ -21,7 +21,7 @@ public class BaseEvaluateScoreDO extends UuidIdentityEntityWithOperator {
    private String doctorName;//医生名字',
    private String patient;//评价人',
    private String patientName;//评价人姓名',
    private Integer evaluateType;//.咨询评价;',
    private Integer evaluateType;//.咨询评价;1咨询',
    private String relationCode;//所属业务关系code,例如:1为咨询code',
    private Double score;//主表分数',
    private Integer type;//1、实名,2、匿名',

+ 1 - 1
common/common-entity/src/main/java/com/yihu/jw/entity/hospital/consult/WlyyHospitalWaitingRoomDO.java

@ -65,7 +65,7 @@ public class WlyyHospitalWaitingRoomDO extends UuidIdentityEntity {
    private String doctorName;
    /**
	 * 0离线 1在线(候诊) 2已诊
	 * -1取消,0离线 1在线(候诊) 2已诊
	 */
	private Integer visitStatus;

+ 13 - 5
common/common-entity/src/main/java/com/yihu/jw/entity/hospital/doctor/WlyyDoctorWorkTimeDO.java

@ -24,10 +24,11 @@ public class WlyyDoctorWorkTimeDO extends UuidIdentityEntity {
    private String registerName;//挂号类别名称
    private Double registerFee;//费用
    private String type;//1.线上;2.线下',
    private String timeType;//1.上午 7:00~12:00;2.下午12:00~18:00;4.晚上 其他时间段',
    private String timeType;//1.上午00:00~12:00之前;2.下午12:00~00:00;',
    private Date startTime;//开始时间',
    private Date endTime;//结束时间',
    private Date date;//排班日期',
    private String date;//排班日期',
    private Integer timeInterval;//号源间隔
    private Date createTime;//创建时间',
    public String getDoctor() {
@ -137,12 +138,11 @@ public class WlyyDoctorWorkTimeDO extends UuidIdentityEntity {
        this.endTime = endTime;
    }
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    public Date getDate() {
    public String getDate() {
        return date;
    }
    public void setDate(Date date) {
    public void setDate(String date) {
        this.date = date;
    }
@ -154,4 +154,12 @@ public class WlyyDoctorWorkTimeDO extends UuidIdentityEntity {
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    public Integer getTimeInterval() {
        return timeInterval;
    }
    public void setTimeInterval(Integer timeInterval) {
        this.timeInterval = timeInterval;
    }
}

+ 24 - 5
common/common-entity/src/main/java/com/yihu/jw/entity/hospital/doctor/WlyyPatientRegisterTimeDO.java

@ -14,6 +14,8 @@ import java.util.Date;
@Table(name = "wlyy_patient_register_time")
public class WlyyPatientRegisterTimeDO extends UuidIdentityEntity {
    private String outpatientId;//门诊记录id
    private String patient;//患者code',
    private String patientName;//患者姓名',
    private String doctor;//医生code',
@ -21,8 +23,17 @@ public class WlyyPatientRegisterTimeDO extends UuidIdentityEntity {
    private String workId;//医生排班id',
    private Date startTime;//预约开始时间',
    private Date endTime;//
    private String timeType;//1.上午00:00~12:00之前;2.下午12:00~00:00;',
    private String date;//预约日期',
    private Date create_time;//创建时间',
    private Date createTime;//创建时间',
    public String getOutpatientId() {
        return outpatientId;
    }
    public void setOutpatientId(String outpatientId) {
        this.outpatientId = outpatientId;
    }
    public String getPatient() {
        return patient;
@ -81,6 +92,14 @@ public class WlyyPatientRegisterTimeDO extends UuidIdentityEntity {
        this.endTime = endTime;
    }
    public String getTimeType() {
        return timeType;
    }
    public void setTimeType(String timeType) {
        this.timeType = timeType;
    }
    public String getDate() {
        return date;
    }
@ -90,11 +109,11 @@ public class WlyyPatientRegisterTimeDO extends UuidIdentityEntity {
    }
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    public Date getCreate_time() {
        return create_time;
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreate_time(Date create_time) {
        this.create_time = create_time;
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
}

+ 5 - 5
common/common-entity/src/main/java/com/yihu/jw/entity/hospital/mapping/DoctorMappingDO.java

@ -15,7 +15,7 @@ import java.util.Date;
public class DoctorMappingDO extends UuidIdentityEntity {
    private String doctor;//医生code',
    private String doctor_name;//医生名称',
    private String doctorName;//医生名称',
    private String idcard;//身份证号',
    private String orgCode;//机构code',
    private String orgName;//机构名称',
@ -35,12 +35,12 @@ public class DoctorMappingDO extends UuidIdentityEntity {
        this.doctor = doctor;
    }
    public String getDoctor_name() {
        return doctor_name;
    public String getDoctorName() {
        return doctorName;
    }
    public void setDoctor_name(String doctor_name) {
        this.doctor_name = doctor_name;
    public void setDoctorName(String doctorName) {
        this.doctorName = doctorName;
    }
    public String getIdcard() {

+ 41 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/hospital/prescription/WlyyOutpatientDO.java

@ -155,6 +155,20 @@ public class WlyyOutpatientDO extends UuidIdentityEntity {
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
	private Date conDate;
    /**
     * 患者取消类型
     */
    private String patientCancelType;
    /**
     * 患者取消类型名称
     */
    private String patientCancelValue;
    /**
     * 患者取消类型详细说明
     */
    private String patientCancelRemark;
    /**
	 * -1 取消;0 候诊中 ;1 就诊中 ;2 已诊
	 */
@ -395,4 +409,31 @@ public class WlyyOutpatientDO extends UuidIdentityEntity {
    public void setConNo(String conNo) {
        this.conNo = conNo;
    }
    @Column(name="patient_cancel_type")
    public String getPatientCancelType() {
        return patientCancelType;
    }
    public void setPatientCancelType(String patientCancelType) {
        this.patientCancelType = patientCancelType;
    }
    @Column(name="patient_cancel_value")
    public String getPatientCancelValue() {
        return patientCancelValue;
    }
    public void setPatientCancelValue(String patientCancelValue) {
        this.patientCancelValue = patientCancelValue;
    }
    @Column(name="patient_cancel_remark")
    public String getPatientCancelRemark() {
        return patientCancelRemark;
    }
    public void setPatientCancelRemark(String patientCancelRemark) {
        this.patientCancelRemark = patientCancelRemark;
    }
}

+ 35 - 0
common/common-request-mapping/src/main/java/com/yihu/jw/rm/hospital/BaseHospitalRequestMapping.java

@ -118,6 +118,41 @@ public class BaseHospitalRequestMapping {
         * 订单导出
         */
        public static final String pushListWrite="/pushListWrite";
        /**
         * 获取号别字典
         */
        public static final String findByDeptTypeCode="/findByDeptTypeCode";
        /**
         * 获取卡信息
         */
        public static final String getCardInfo="/getCardInfo";
        /**
         * 查询医生带排班
         */
        public static final String findDoctorWithWork="/findDoctorWithWork";
        /**
         * 获取具体号源
         */
        public static final String findWorkTimeInfo="/findWorkTimeInfo";
        /**
         * 获取获取医生信息
         */
        public static final String findDoctorInfo="/findDoctorInfo";
        /**
         * 取消门诊
         */
        public static final String cancelOutPatient="/cancelOutPatient";
        /**
         * 居民取消原因字典
         */
        public static final String findCancelReasonList="/findCancelReasonList";
        //=================end=======================================
        /**

+ 194 - 0
common/common-rest-model/src/main/java/com/yihu/jw/restmodel/hospital/doctor/WlyyDoctorWorkTimeVO.java

@ -0,0 +1,194 @@
package com.yihu.jw.restmodel.hospital.doctor;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.util.Date;
/**
 * Created by Trick on 2019/6/18.
 */
@ApiModel(value = "WlyyDoctorWorkTimeVO", description = "医生工作时间")
public class WlyyDoctorWorkTimeVO {
    @ApiModelProperty(value = "排班id", example = "模块1")
    private String id;
    @ApiModelProperty(value = "医生code", example = "模块1")
    private String doctor;//医生code',
    @ApiModelProperty(value = "医生名称", example = "模块1")
    private String doctorName;//医生名称',
    @ApiModelProperty(value = "医院code", example = "模块1")
    private String hospital;//医院code
    @ApiModelProperty(value = "医院名称", example = "模块1")
    private String hospitalName;//医院名称
    @ApiModelProperty(value = "部门", example = "模块1")
    private String dept;//部门
    @ApiModelProperty(value = "部门名称", example = "模块1")
    private String deptName;//部门名称
    @ApiModelProperty(value = "挂号code", example = "模块1")
    private String registerCode;//挂号code',
    @ApiModelProperty(value = "挂号类别名称", example = "模块1")
    private String registerName;//挂号类别名称
    @ApiModelProperty(value = "费用", example = "模块1")
    private Double registerFee;//费用
    @ApiModelProperty(value = "1.线上;2.线下',", example = "模块1")
    private String type;//1.线上;2.线下',
    @ApiModelProperty(value = "1.上午00:00~12:00之前;2.下午12:00~00:00;',", example = "模块1")
    private String timeType;//1.上午00:00~12:00之前;2.下午12:00~00:00;',
    @ApiModelProperty(value = "开始时间", example = "模块1")
    private Date startTime;//开始时间',
    @ApiModelProperty(value = "结束时间", example = "模块1")
    private Date endTime;//结束时间',
    @ApiModelProperty(value = "号别code", example = "模块1")
    private String date;//排班日期',
    @ApiModelProperty(value = "号源间隔", example = "模块1")
    private Integer timeInterval;//号源间隔
    @ApiModelProperty(value = "创建时间", example = "模块1")
    private Date createTime;//创建时间',
    @ApiModelProperty(value = "当前号源数目", example = "模块1")
    private Integer count;
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getDoctor() {
        return doctor;
    }
    public void setDoctor(String doctor) {
        this.doctor = doctor;
    }
    public String getDoctorName() {
        return doctorName;
    }
    public void setDoctorName(String doctorName) {
        this.doctorName = doctorName;
    }
    public String getHospital() {
        return hospital;
    }
    public void setHospital(String hospital) {
        this.hospital = hospital;
    }
    public String getHospitalName() {
        return hospitalName;
    }
    public void setHospitalName(String hospitalName) {
        this.hospitalName = hospitalName;
    }
    public String getDept() {
        return dept;
    }
    public void setDept(String dept) {
        this.dept = dept;
    }
    public String getDeptName() {
        return deptName;
    }
    public void setDeptName(String deptName) {
        this.deptName = deptName;
    }
    public String getRegisterCode() {
        return registerCode;
    }
    public void setRegisterCode(String registerCode) {
        this.registerCode = registerCode;
    }
    public String getRegisterName() {
        return registerName;
    }
    public void setRegisterName(String registerName) {
        this.registerName = registerName;
    }
    public Double getRegisterFee() {
        return registerFee;
    }
    public void setRegisterFee(Double registerFee) {
        this.registerFee = registerFee;
    }
    public String getType() {
        return type;
    }
    public void setType(String type) {
        this.type = type;
    }
    public String getTimeType() {
        return timeType;
    }
    public void setTimeType(String timeType) {
        this.timeType = timeType;
    }
    @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;
    }
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    public Date getEndTime() {
        return endTime;
    }
    public void setEndTime(Date endTime) {
        this.endTime = endTime;
    }
    public String getDate() {
        return date;
    }
    public void setDate(String date) {
        this.date = date;
    }
    @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;
    }
    public Integer getTimeInterval() {
        return timeInterval;
    }
    public void setTimeInterval(Integer timeInterval) {
        this.timeInterval = timeInterval;
    }
    public Integer getCount() {
        return count;
    }
    public void setCount(Integer count) {
        this.count = count;
    }
}

+ 70 - 0
common/common-rest-model/src/main/java/com/yihu/jw/restmodel/hospital/prescription/WlyyChargeDictVO.java

@ -0,0 +1,70 @@
package com.yihu.jw.restmodel.hospital.prescription;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.util.Date;
/**
 * Created by Trick on 2019/6/17.
 */
@ApiModel(value = "WlyyHisPrescriptionVO", description = "诊查费实体")
public class WlyyChargeDictVO {
    /**号别code*/
    @ApiModelProperty(value = "号别code", example = "模块1")
    private String chargeType;
    /**号别名称*/
    @ApiModelProperty(value = "号别名称", example = "模块1")
    private String chargeName;
    /**诊查费,单位元*/
    @ApiModelProperty(value = "诊查费,单位元", example = "模块1")
    private double reqFee;
    /**创建时间*/
    @ApiModelProperty(value = "创建时间", example = "模块1")
    private Date createTime;
    /**6总部7金榜8夏禾*/
    @ApiModelProperty(value = "6总部7金榜8夏禾", example = "模块1")
    private String deptTypeCode;
    public String getChargeType() {
        return chargeType;
    }
    public void setChargeType(String chargeType) {
        this.chargeType = chargeType;
    }
    public String getChargeName() {
        return chargeName;
    }
    public void setChargeName(String chargeName) {
        this.chargeName = chargeName;
    }
    public double getReqFee() {
        return reqFee;
    }
    public void setReqFee(double reqFee) {
        this.reqFee = reqFee;
    }
    @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;
    }
    public String getDeptTypeCode() {
        return deptTypeCode;
    }
    public void setDeptTypeCode(String deptTypeCode) {
        this.deptTypeCode = deptTypeCode;
    }
}

+ 25 - 0
common/common-util/src/main/java/com/yihu/jw/util/common/PwdUtil.java

@ -0,0 +1,25 @@
package com.yihu.jw.util.common;
import java.util.Random;
/**
 * Created by zdm on 2019/6/19.
 */
public class PwdUtil {
    /**
     * 获取指定长度的随机字符串
     * @param length
     * @return
     */
    public static String randomString(int length) {
        String str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
        StringBuffer buffer = new StringBuffer();
        Random random = new Random();
        for (int i = 0; i < length; i++) {
            int pos = random.nextInt(str.length());
            buffer.append(str.charAt(pos));
        }
        return buffer.toString();
    }
}

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

@ -0,0 +1,231 @@
package com.yihu.jw.util.http;
import org.apache.http.HttpEntity;
import org.apache.http.NameValuePair;
import org.apache.http.ParseException;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import org.json.JSONObject;
import org.springframework.stereotype.Component;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
@Component
public class HttpClientUtil {
    /**
     * 发送post请求
     *
     * @param url     请求地址
     * @param params  请求参数
     * @param chatSet 编码格式
     * @return
     */
    public  String post(String url, List<NameValuePair> params, String chatSet) {
        // 创建默认的httpClient实例.
        CloseableHttpClient httpclient = HttpClients.createDefault();
        // 创建httppost
        HttpPost httppost = new HttpPost(url);
        UrlEncodedFormEntity uefEntity;
        try {
            uefEntity = new UrlEncodedFormEntity(params, chatSet);
            httppost.setEntity(uefEntity);
            CloseableHttpResponse response = httpclient.execute(httppost);
            try {
                HttpEntity entity = response.getEntity();
                if (entity != null) {
                    return EntityUtils.toString(entity, chatSet);
                }
            } finally {
                response.close();
            }
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (UnsupportedEncodingException e1) {
            e1.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            // 关闭连接,释放资源
            try {
                httpclient.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return null;
    }
    /**
     * 发送get请求
     *
     * @param url     请求地址
     * @param chatSet 编码格式
     * @return
     */
    public  String get(String url, String chatSet) {
        CloseableHttpClient httpclient = HttpClients.createDefault();
        try {
            // 创建httpget.
            HttpGet httpget = new HttpGet(url);
            // 执行get请求.
            CloseableHttpResponse response = httpclient.execute(httpget);
            try {
                // 获取响应实体
                HttpEntity entity = response.getEntity();
                if (entity != null) {
                    return EntityUtils.toString(entity, chatSet);
                }
            } finally {
                response.close();
            }
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (ParseException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            // 关闭连接,释放资源
            try {
                httpclient.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return null;
    }
    /**
     * http调用方法,(健康之路开放平台)
     *
     * @param url
     * @param params
     * @return
     * @throws Exception
     */
    public  String httpPost(String url, Map<String, String> params) throws Exception {
        CloseableHttpClient httpclient = HttpClients.createDefault();
        try {
            HttpPost httpPost = new HttpPost(url);
            if (params != null && params.size() > 0) {
                List<NameValuePair> valuePairs = new ArrayList<NameValuePair>(params.size());
                for (Map.Entry<String, String> entry : params.entrySet()) {
                    NameValuePair nameValuePair = new BasicNameValuePair(entry.getKey(), String.valueOf(entry.getValue()));
                    valuePairs.add(nameValuePair);
                }
                UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(valuePairs, "UTF-8");
                httpPost.setEntity(formEntity);
            }
            CloseableHttpResponse resp = httpclient.execute(httpPost);
            try {
                HttpEntity entity = resp.getEntity();
                String respContent = EntityUtils.toString(entity, "UTF-8").trim();
                return respContent;
            } finally {
                resp.close();
            }
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        } finally {
            httpclient.close();
        }
    }
    /**
     * 获取加密后参数集合(健康之路开放平台)
     *
     * @param params
     * @return
     */
    public  Map<String, String> getSecretParams(Map<String, String> params, String appId, String secret) {
        String timestamp = Long.toString(System.currentTimeMillis());
        params.put("timestamp", timestamp);
        StringBuilder stringBuilder = new StringBuilder();
        // 对参数名进行字典排序  
        String[] keyArray = params.keySet().toArray(new String[0]);
        Arrays.sort(keyArray);
        // 拼接有序的参数名-值串  
        stringBuilder.append(appId);
        for (String key : keyArray) {
            stringBuilder.append(key).append(params.get(key));
        }
        String codes = stringBuilder.append(secret).toString();
        String sign = org.apache.commons.codec.digest.DigestUtils.shaHex(codes).toUpperCase();
        // 添加签名,并发送请求  
        params.put("appId", appId);
        params.put("sign", sign);
        return params;
    }
    /**
     * 向指定 URL 发送POST方法的请求
     *
     * @param url
     *            发送请求的 URL带上参数
     * @param param
     *            POST参数。
     * @return 所代表远程资源的响应结果
     */
    public  String sendPost(String url, String param) {
        StringBuffer buffer = new StringBuffer();
        PrintWriter out = null;
        BufferedReader in = null;
        HttpURLConnection conn = null;
        try {
            URL realUrl = new URL(url);
            // 打开和URL之间的连接
            conn = (HttpURLConnection) realUrl.openConnection();
            conn.setRequestMethod("POST");
            conn.setDoOutput(true);
            conn.setDoInput(true);
            conn.setUseCaches(false);
            conn.setRequestProperty("Content-Type", "application/json");
            conn.setRequestProperty("accept", "*/*");
            conn.setRequestProperty("connection", "Keep-Alive");
            conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
            OutputStreamWriter osw = new OutputStreamWriter(conn.getOutputStream(), "UTF-8");
            osw.write(param.toString());
            osw.flush();
            // 读取返回内容
            BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
            String temp;
            while ((temp = br.readLine()) != null) {
                buffer.append(temp);
                buffer.append("\n");
            }
        } catch (Exception e) {
           e.printStackTrace();
        } finally {
            try {
                if (out != null) {
                    out.close();
                }
                if (in != null) {
                    in.close();
                }
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }
        return buffer.toString();
    }
}

+ 6 - 3
svr/svr-base/src/main/java/com/yihu/jw/base/service/score/ScoreService.java

@ -1,9 +1,12 @@
package com.yihu.jw.base.service.score;
import com.yihu.jw.base.dao.score.BaseEvaluateDao;
import com.yihu.jw.base.dao.score.BaseEvaluateScoreDao;
import com.yihu.jw.entity.base.score.BaseEvaluateDO;
import com.yihu.jw.entity.base.score.BaseEvaluateScoreDO;
import com.yihu.jw.evaluate.score.dao.BaseEvaluateDao;
import com.yihu.jw.evaluate.score.dao.BaseEvaluateScoreDao;
import com.yihu.jw.hospital.prescription.dao.PrescriptionDao;
import com.yihu.mysql.query.BaseJpaService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -16,7 +19,7 @@ import java.util.List;
 */
@Service
@Transactional
public class ScoreService {
public class ScoreService{
    @Autowired
    private BaseEvaluateScoreDao baseEvaluateScoreDao;

+ 35 - 1
svr/svr-internet-hospital-entrance/src/main/java/com/yihu/jw/entrance/controller/MqSdkController.java

@ -321,8 +321,42 @@ public class MqSdkController extends EnvelopRestEndpoint {
                               @RequestParam(value = "chargeType", required = false) String chargeType,
                               @ApiParam(name = "code", value = "医生编码")
                               @RequestParam(value = "code", required = false) String code) throws Exception {
        List<WlyyChargeDictDO> obj = entranceService.BS55010(windowsNo, code,chargeType, demoFlag);
        List<WlyyChargeDictDO> obj = entranceService.chargeDict(windowsNo, code,chargeType, demoFlag);
        return success(obj);
    }
    @GetMapping(value = "/MS02003")
    @ApiOperation(value = "医生信息同步")
    public ObjEnvelop MS02003() throws Exception {
       int obj = entranceService.MS02003(demoFlag);
       System.out.println("共同步"+obj+"位医生!");
        return success(obj);
    }
    @GetMapping(value = "/ehospitalNotice")
    @ApiOperation(value = "互联网医院通知")
    public ObjEnvelop ehospitalNotice(
            @ApiParam(name = "userName", value = "推送人姓名")
            @RequestParam(value = "userName", required = true) String userName,
            @ApiParam(name = "idCard", value = "推送人身份证")
            @RequestParam(value = "idCard", required = false) String idCard,
            @ApiParam(name = "phone", value = "推送人手机号")
            @RequestParam(value = "phone", required = true) String phone,
            @ApiParam(name = "title", value = "推送标题")
            @RequestParam(value = "title", required = true) String title,
            @ApiParam(name = "url", value = "跳转链接")
            @RequestParam(value = "url", required = false) String url,
            @ApiParam(name = "content", value = "内容简介")
            @RequestParam(value = "content", required = true) String content,
            @ApiParam(name = "contentString", value = "内容明细串")
            @RequestParam(value = "contentString", required = false) String contentString) throws Exception {
        String responseMsg = entranceService.ehospitalNotice(userName, idCard, phone, title, url, content, contentString);
        org.json.JSONObject object1 = new org.json.JSONObject(responseMsg);
        if (null != object1 && "00".equals(object1.get("respCode"))) {
            return ObjEnvelop.getSuccess(object1.get("respMsg").toString(), null);
        } else {
            return ObjEnvelop.getError(object1.get("respMsg").toString());
        }
    }
}

+ 0 - 14
svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/config/JpaConfig.java

@ -1,14 +0,0 @@
package com.yihu.jw.hospital.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.orm.jpa.JpaTransactionManager;
@Configuration
public class JpaConfig {
    @Bean
    public JpaTransactionManager transactionManager(){
        return new JpaTransactionManager();
    }
}

+ 2 - 0
svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/dao/consult/SysDictDao.java

@ -15,4 +15,6 @@ public interface SysDictDao extends PagingAndSortingRepository<WlyyHospitalSysDi
    List<WlyyHospitalSysDictDO> findByHospitalAndDictName(String hospital, String dictName);
    WlyyHospitalSysDictDO findById(String id);
    List<WlyyHospitalSysDictDO> findByDictName(String dictName);
}

+ 1 - 1
svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/file_upload/FileUploadEndpoint.java

@ -64,7 +64,7 @@ public class FileUploadEndpoint extends EnvelopRestEndpoint {
    @PostMapping(value = BaseRequestMapping.FileUpload.UPLOAD_STRING)
    @ApiOperation(value = "base64上传图片",notes = "base64上传图片")
    public ObjEnvelop<UploadVO> uploadImages(@ApiParam(name = "jsonData", value = "头像转化后的输入流")
                                                 @RequestBody String jsonData) throws Exception {
                                             @RequestParam(value = "jsonData", required = true) String jsonData) throws Exception {
        UploadVO uploadVO = fileUploadService.uploadImages(jsonData,fastdfs_file_url);
        return success("上传成功", uploadVO);
    }

+ 86 - 11
svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/prescription/PrescriptionEndpoint.java

@ -168,7 +168,7 @@ public class PrescriptionEndpoint extends EnvelopRestEndpoint {
    @GetMapping(value = BaseHospitalRequestMapping.Prescription.checkOutpatient)
    @ApiOperation(value = "判断是否可用发起门诊", notes = "判断是否可用发起门诊")
    public ObjEnvelop checkOutpatient(@ApiParam(name = "patient", value = "续方明细")
                                      @RequestParam(value = "patient", required = true)String patient){
                                      @RequestParam(value = "patient", required = true)String patient)throws Exception{
        return success(prescriptionService.checkOutpatient(patient));
    }
@ -181,17 +181,23 @@ public class PrescriptionEndpoint extends EnvelopRestEndpoint {
    @GetMapping(value = BaseHospitalRequestMapping.Prescription.findDeptByHospital)
    @ApiOperation(value = "查询机构底下部门", notes = "查询机构底下部门")
    public ListEnvelop findDeptByHospital(@ApiParam(name = "orgCode", value = "机构code")
                                          @RequestParam(value = "orgCode", required = true)String orgCode) {
        return success(prescriptionService.findDeptByHospital(orgCode));
                                          @RequestParam(value = "orgCode", required = true)String orgCode,
                                          @ApiParam(name = "dept", value = "需要置顶部门")
                                          @RequestParam(value = "dept", required = false)String dept) {
        return success(prescriptionService.findDeptByHospital(orgCode,dept));
    }
    @GetMapping(value = BaseHospitalRequestMapping.Prescription.findDoctorByHospitalAndDept)
    @ApiOperation(value = "查询部门下医生", notes = "查询机构底下部门")
    @ApiOperation(value = "查询部门下医生", notes = "查询部门下医生")
    public ListEnvelop findDoctorByHospitalAndDept(@ApiParam(name = "orgCode", value = "机构code")
                                                   @RequestParam(value = "orgCode", required = true)String orgCode,
                                                   @ApiParam(name = "dept", value = "部门code")
                                                   @RequestParam(value = "dept", required = true)String dept) {
        return success(prescriptionService.findDoctorByHospitalAndDept(orgCode,dept));
                                                   @RequestParam(value = "dept", required = true)String dept,
                                                   @ApiParam(name = "chargeType", value = "号别")
                                                   @RequestParam(value = "chargeType", required = false)String chargeType,
                                                   @ApiParam(name = "doctorCode", value = "需要置顶医生")
                                                   @RequestParam(value = "doctorCode", required = false)String doctorCode) {
        return success(prescriptionService.findDoctorByHospitalAndDept(orgCode,dept,chargeType,doctorCode));
    }
    @PostMapping(value = BaseHospitalRequestMapping.Prescription.appointmentRevisit)
@ -199,8 +205,10 @@ public class PrescriptionEndpoint extends EnvelopRestEndpoint {
    public ObjEnvelop appointmentRevisit(@ApiParam(name = "outpatientJson", value = "居民门诊json")
                                         @RequestParam(value = "outpatientJson", required = false)String outpatientJson,
                                         @ApiParam(name = "expressageJson", value = "居民物流json")
                                         @RequestParam(value = "expressageJson", required = false)String expressageJson)throws Exception {
        return success(BaseHospitalRequestMapping.Prescription.api_success,prescriptionService.appointmentRevisit(outpatientJson,expressageJson));
                                         @RequestParam(value = "expressageJson", required = false)String expressageJson,
                                         @ApiParam(name = "registerJson", value = "预约时间")
                                         @RequestParam(value = "registerJson", required = false)String registerJson)throws Exception {
        return success(BaseHospitalRequestMapping.Prescription.api_success,prescriptionService.appointmentRevisit(outpatientJson,expressageJson,registerJson));
    }
    @GetMapping(value = BaseHospitalRequestMapping.Prescription.getICD10)
@ -239,15 +247,15 @@ public class PrescriptionEndpoint extends EnvelopRestEndpoint {
    @PostMapping(value = BaseHospitalRequestMapping.Prescription.makeDiagnosis)
    @ApiOperation(value = "下诊断", notes = "下诊断")
    public ObjEnvelop makeDiagnosis(@ApiParam(name = "outPatientId", value = "门诊编号")
                                            @RequestParam(value = "outPatientId", required = false)String outPatientId,
                                            @RequestParam(value = "outPatientId", required = true)String outPatientId,
                                            @ApiParam(name = "advice", value = "医嘱")
                                            @RequestParam(value = "advice", required = false)String advice,
                                            @ApiParam(name = "type", value = "1带药品,2不带药品")
                                            @RequestParam(value = "type", required = false)String type,
                                            @RequestParam(value = "type", required = true)String type,
                                            @ApiParam(name = "infoJsons", value = "药品json")
                                            @RequestParam(value = "infoJsons", required = false)String infoJsons,
                                            @ApiParam(name = "diagnosisJson", value = "诊断json")
                                            @RequestParam(value = "diagnosisJson", required = false)String diagnosisJson)throws Exception {
                                            @RequestParam(value = "diagnosisJson", required = true)String diagnosisJson)throws Exception {
        return success(prescriptionService.makeDiagnosis(outPatientId,advice,type,infoJsons,diagnosisJson));
    }
@ -300,6 +308,73 @@ public class PrescriptionEndpoint extends EnvelopRestEndpoint {
        OutputStream os = response.getOutputStream();
        prescriptionService.pushListWrite(os,list);
    }
    @GetMapping(value = BaseHospitalRequestMapping.Prescription.findByDeptTypeCode)
    @ApiOperation(value = "就诊费用查询", notes = "就诊费用查询")
    public ListEnvelop findByDeptTypeCode(@ApiParam(name = "deptTypeCode", value = "6总部7金榜8夏禾")
                                @RequestParam(value = "deptTypeCode", required = false)String deptTypeCode) throws Exception{
        return success(prescriptionService.findByDeptTypeCode(deptTypeCode));
    }
    @GetMapping(value = BaseHospitalRequestMapping.Prescription.getCardInfo)
    @ApiOperation(value = "获取卡信息", notes = "获取卡信息")
    public ObjEnvelop getCardInfo(@ApiParam(name = "cardNo", value = "卡号")
                                  @RequestParam(value = "cardNo", required = false)String cardNo) throws Exception {
        return success(prescriptionService.getCardInfo(cardNo,demoFlag));
    }
    @GetMapping(value = BaseHospitalRequestMapping.Prescription.findDoctorWithWork)
    @ApiOperation(value = "查询医生带排班", notes = "查询医生带排班")
    public ObjEnvelop findDoctorWithWork(@ApiParam(name = "orgCode", value = "机构code")
                                         @RequestParam(value = "orgCode", required = true)String orgCode,
                                         @ApiParam(name = "dept", value = "部门code")
                                         @RequestParam(value = "dept", required = true)String dept,
                                         @ApiParam(name = "doctorCode", value = "需要置顶医生code")
                                         @RequestParam(value = "doctorCode", required = false)String doctorCode,
                                         @ApiParam(name = "chargeType", value = "号别")
                                         @RequestParam(value = "chargeType", required = false)String chargeType,
                                         @ApiParam(name = "page", value = "第几页")
                                         @RequestParam(value = "page", required = true)Integer page,
                                         @ApiParam(name = "size", value = "每页大小")
                                         @RequestParam(value = "size", required = true)Integer size) {
        return success(prescriptionService.findDoctorWithWork(orgCode,dept,chargeType,doctorCode,page,size));
    }
    @GetMapping(value = BaseHospitalRequestMapping.Prescription.findWorkTimeInfo)
    @ApiOperation(value = "获取具体号源", notes = "获取具体号源")
    public ListEnvelop findWorkTimeInfo(@ApiParam(name = "id", value = "排班id")
                                        @RequestParam(value = "id", required = false)String id) {
        return success(prescriptionService.findWorkTimeInfo(id));
    }
    @GetMapping(value = BaseHospitalRequestMapping.Prescription.findDoctorInfo)
    @ApiOperation(value = "获取医生信息", notes = "获取医生信息")
    public ObjEnvelop findDoctorInfo(@ApiParam(name = "doctor", value = "医生code")
                                     @RequestParam(value = "doctor", required = false)String doctor){
        return success(prescriptionService.findDoctorInfo(doctor));
    }
    @PostMapping(value = BaseHospitalRequestMapping.Prescription.cancelOutPatient)
    @ApiOperation(value = "取消复诊", notes = "取消复诊")
    public ObjEnvelop cancelOutPatient(@ApiParam(name = "outPatientId", value = "门诊记录")
                                       @RequestParam(value = "outPatientId", required = false)String outPatientId,
                                       @ApiParam(name = "cancelType", value = "取消原因类型")
                                       @RequestParam(value = "cancelType", required = false)String cancelType,
                                       @ApiParam(name = "cancelValue", value = "取消原因名称")
                                       @RequestParam(value = "cancelValue", required = false)String cancelValue,
                                       @ApiParam(name = "cancelRemark", value = "取消原因详细说明")
                                       @RequestParam(value = "cancelRemark", required = false)String cancelRemark) {
        return success(prescriptionService.cancelOutPatient(outPatientId,cancelType,cancelValue,cancelRemark));
    }
    @GetMapping(value = BaseHospitalRequestMapping.Prescription.findCancelReasonList)
    @ApiOperation(value = "获取居民取消原因字典", notes = "获取居民取消原因字典")
    public ListEnvelop findCancelReasonList(){
        return success(prescriptionService.findCancelReasonList());
    }
    //===========

+ 2 - 2
svr/svr-internet-hospital/src/main/resources/application.yml

@ -107,7 +107,7 @@ spring:
#    base-url: http://localhost:9411 #日志追踪的地址
fastDFS:
  fastdfs_file_url: http://172.26.0.110:22122/
  fastdfs_file_url: http://172.26.0.110:8888/
# 短信发送地址
jw:
  smsUrl: http://svr-base:10020/sms_gateway/send
@ -152,7 +152,7 @@ spring:
    host: 172.26.0.253 # Redis server host.
    port: 6379 # Redis server port.
fastDFS:
  fastdfs_file_url: http://172.26.0.110:22122/
  fastdfs_file_url: http://172.26.0.110:8888/
wechat:
  id: 97ed8a0a-4f07-4b85-ab02-b716c611a464  # base库中,wx_wechat 的id字段
# 短信验证码发送的客户端标识,居民端

+ 37 - 34
svr/svr-iot-sunnuo/src/main/java/com/yihu/iot/datainput/controller/IotAnalyzerController.java

@ -159,33 +159,34 @@ public class IotAnalyzerController extends EnvelopRestEndpoint {
    }
    @PostMapping(value = "/heartRate" /*,consumes = MediaType.APPLICATION_OCTET_STREAM_VALUE*/)
    @PostMapping(value = "/heartRate")
    @ApiOperation(value = "柏颐心率数据接收", notes = "柏颐心率数据接收")
    public String heartRate(
            @ApiParam(name = "imei", value = "15位设备唯一序号")
            @RequestParam(value = "imei",required = true)String imei,
            @RequestParam(value = "imei",required = false)String imei,
            @ApiParam(name = "time_begin", value = "发生时间YYYY-MM-DD HH:mm:SS")
            @RequestParam(value = "time_begin",required = true)String time_begin,
            @RequestParam(value = "time_begin",required = false)String time_begin,
            @ApiParam(name = "heartrate", value = "心率")
            @RequestParam(value = "heartrate",required = true)int heartrate,
            @RequestParam(value = "heartrate",required = false)int heartrate,
            @ApiParam(name = "theshold_heartrate_h", value = "心率阈值上限")
            @RequestParam(value = "theshold_heartrate_h",required = true)int theshold_heartrate_h,
            @RequestParam(value = "theshold_heartrate_h",required = false)int theshold_heartrate_h,
            @ApiParam(name = "theshold_heartrate_l", value = "心率阈值下限")
            @RequestParam(value = "theshold_heartrate_l",required = true)int theshold_heartrate_l) throws Exception{
            @RequestParam(value = "theshold_heartrate_l",required = false)int theshold_heartrate_l) throws Exception{
        String strResult = "";
        Map res = new HashMap();
        IotDeviceBaiyiDO iotDeviceBaiyiDO=new IotDeviceBaiyiDO();
        iotDeviceBaiyiDO.setImei(imei);
        iotDeviceBaiyiDO.setType(1);
        iotDeviceBaiyiDO.setTimeBegin(time_begin);
        iotDeviceBaiyiDO.setValue1(heartrate);
        iotDeviceBaiyiDO.setValue2(theshold_heartrate_h);
        iotDeviceBaiyiDO.setValue3(theshold_heartrate_l);
        iotDeviceBaiyiDao.save(iotDeviceBaiyiDO);
        String info  = "imei="+imei+";time_begin="+time_begin+";heartrate="+heartrate+";theshold_heartrate_h="+theshold_heartrate_h+";theshold_heartrate_l="+theshold_heartrate_l;
        logger.info("info="+info);
        try {
            String info  = "imei="+imei+";time_begin="+time_begin+";heartrate="+heartrate+";theshold_heartrate_h="+theshold_heartrate_h+";theshold_heartrate_l="+theshold_heartrate_l;
            logger.info("info="+info);
            IotDeviceBaiyiDO iotDeviceBaiyiDO=new IotDeviceBaiyiDO();
            iotDeviceBaiyiDO.setImei(imei);
            iotDeviceBaiyiDO.setType(1);
            iotDeviceBaiyiDO.setTimeBegin(time_begin);
            iotDeviceBaiyiDO.setValue1(heartrate);
            iotDeviceBaiyiDO.setValue2(theshold_heartrate_h);
            iotDeviceBaiyiDO.setValue3(theshold_heartrate_l);
            iotDeviceBaiyiDao.save(iotDeviceBaiyiDO);
            return BaiyiDataParam(iotDeviceBaiyiDO);
//            return "";
        } catch (Exception e) {
            e.printStackTrace();
            res.put("statusCode", "03");
@ -196,36 +197,37 @@ public class IotAnalyzerController extends EnvelopRestEndpoint {
        }
    }
    @PostMapping(value = "/bloodPressure" /*,consumes = MediaType.APPLICATION_OCTET_STREAM_VALUE*/)
    @PostMapping(value = "/bloodPressure")
    @ApiOperation(value = "柏颐血压数据接收", notes = "柏颐血压数据接收")
    public String bloodPressure(
            @ApiParam(name = "imei", value = "15位设备唯一序号", required = true)
            @RequestParam(value = "imei",required = true)String imei,
            @RequestParam(value = "imei",required = false)String imei,
            @ApiParam(name = "time_begin", value = "发生时间YYYY-MM-DD HH:mm:SS", required = true)
            @RequestParam(value = "time_begin",required = true)String time_begin,
            @RequestParam(value = "time_begin",required = false)String time_begin,
            @ApiParam(name = "dbp", value = "舒张压", required = true)
            @RequestParam(value = "dbp",required = true)int dbp,
            @RequestParam(value = "dbp",required = false)int dbp,
            @ApiParam(name = "dbp_l", value = "舒张压报警下限", required = true)
            @RequestParam(value = "dbp_l",required = true)int dbp_l,
            @RequestParam(value = "dbp_l",required = false)int dbp_l,
            @ApiParam(name = "sbp", value = "收缩压", required = true)
            @RequestParam(value = "sbp",required = true)int sbp,
            @RequestParam(value = "sbp",required = false)int sbp,
            @ApiParam(name = "sbp_h", value = "收缩压报警上限", required = true)
            @RequestParam(value = "sbp_h",required = true)int sbp_h) throws Exception{
            @RequestParam(value = "sbp_h",required = false)int sbp_h) throws Exception{
        String strResult = "";
        Map res = new HashMap();
        IotDeviceBaiyiDO iotDeviceBaiyiDO=new IotDeviceBaiyiDO();
        iotDeviceBaiyiDO.setImei(imei);
        iotDeviceBaiyiDO.setTimeBegin(time_begin);
        iotDeviceBaiyiDO.setType(2);
        iotDeviceBaiyiDO.setValue1(dbp);
        iotDeviceBaiyiDO.setValue2(dbp_l);
        iotDeviceBaiyiDO.setValue3(sbp);
        iotDeviceBaiyiDO.setValue4(sbp_h);
        iotDeviceBaiyiDao.save(iotDeviceBaiyiDO);
        String info= "imei="+imei+";time_begin="+time_begin+";dbp="+dbp+";dbp_l="+dbp_l+";sbp="+sbp+";sbp_h="+sbp_h;
        logger.info("info="+info);
        try {
            String info= "imei="+imei+";time_begin="+time_begin+";dbp="+dbp+";dbp_l="+dbp_l+";sbp="+sbp+";sbp_h="+sbp_h;
            logger.info("info="+info);
            IotDeviceBaiyiDO iotDeviceBaiyiDO=new IotDeviceBaiyiDO();
            iotDeviceBaiyiDO.setImei(imei);
            iotDeviceBaiyiDO.setTimeBegin(time_begin);
            iotDeviceBaiyiDO.setType(2);
            iotDeviceBaiyiDO.setValue1(dbp);
            iotDeviceBaiyiDO.setValue2(dbp_l);
            iotDeviceBaiyiDO.setValue3(sbp);
            iotDeviceBaiyiDO.setValue4(sbp_h);
            iotDeviceBaiyiDao.save(iotDeviceBaiyiDO);
            return BaiyiDataParam(iotDeviceBaiyiDO);
//            return "";
        } catch (Exception e) {
            e.printStackTrace();
            res.put("statusCode", "03");
@ -298,5 +300,6 @@ public class IotAnalyzerController extends EnvelopRestEndpoint {
        String strResult = objectMapper.writeValueAsString(res);
        logger.info(strResult);
        return strResult;
//      return "";
    }
}

+ 2 - 35
svr/svr-iot/pom.xml

@ -11,7 +11,7 @@
    </parent>
    <groupId>com.yihu.iot</groupId>
    <artifactId>svr-iot</artifactId>
    <artifactId>svr-iot-third</artifactId>
    <version>${parent.version}</version>
    <packaging>war</packaging>
@ -42,23 +42,6 @@
        </dependency>
        <!-- 支持Tomcat启动 -->
        <!--<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-config</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
@ -116,30 +99,15 @@
            <artifactId>mysql-starter</artifactId>
            <version>2.0.0</version>
        </dependency>
        <!--<dependency>
            <groupId>com.yihu.base</groupId>
            <artifactId>common-log</artifactId>
        </dependency>-->
        <dependency>
            <groupId>com.yihu</groupId>
            <artifactId>fastdfs-starter</artifactId>
            <version>2.0.0</version>
        </dependency>
        <dependency>
            <groupId>com.yihu</groupId>
            <artifactId>elasticsearch-starter</artifactId>
            <version>2.0.0</version>
        </dependency>
        <!--<dependency>
            <groupId>com.yihu</groupId>
            <artifactId>common-data-es-starter</artifactId>
            <version>1.1.2</version>
        </dependency>-->
    </dependencies>
    <build>
        <finalName>svr-iot</finalName>
        <finalName>svr-iot-third</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
@ -154,5 +122,4 @@
            </plugin>
        </plugins>
    </build>
</project>

+ 24 - 2
svr/svr-iot/src/main/java/com/yihu/iot/controller/analyzer/IotAnalyzerController.java

@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.iot.datainput.service.DataInputService;
import com.yihu.iot.datainput.util.ConstantUtils;
import com.yihu.iot.service.analyzer.IotAnalyzerService;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import com.yihu.jw.util.date.DateUtil;
@ -37,12 +38,15 @@ public class IotAnalyzerController extends EnvelopRestEndpoint {
    @Autowired
    ObjectMapper objectMapper;
    @Autowired
    private IotAnalyzerService iotAnalyzerService;
    /**
     * 基于奕拓小屋上传的体征数据,进行解析入库
     * 基于奕拓小屋上传的体征数据,进行解析入库  V1.0 版本
     * @param jsonData
     * @return
     */
    @PostMapping(value = "/yitouxiaowu" ,consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    @PostMapping(value = "/yitouxiaowuBK" ,consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    @ApiOperation(value = "奕拓体征数据解析入库", notes = "奕拓体征数据解析入库")
    public String updateDeviceDataTest(
            @ApiParam(name = "json_data", value = "Json数据", required = true)
@ -725,6 +729,24 @@ public class IotAnalyzerController extends EnvelopRestEndpoint {
    }
    /**
     * 基于奕拓小屋上传的体征数据,进行解析入库  V2.0 版本
     * @param jsonData
     * @return
     */
    @PostMapping(value = "/yitouxiaowu" ,consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    @ApiOperation(value = "奕拓体征数据解析入库", notes = "奕拓体征数据解析入库")
    public Envelop updateDeviceData(
            @ApiParam(name = "json_data", value = "Json数据", required = true)
            @RequestBody String jsonData)throws Exception {
        boolean res = iotAnalyzerService.analyzerMapM(jsonData);
        if(res){
            return success("体征数据上传成功");
        }else {
            return failed("体征数据上传失败");
        }
    }
}

+ 132 - 0
svr/svr-iot/src/main/java/com/yihu/iot/service/analyzer/IotAnalyzerService.java

@ -0,0 +1,132 @@
package com.yihu.iot.service.analyzer;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.mysql.query.BaseJpaService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
/**
 * @author cws on 2019/6/16
 */
@Service
public class IotAnalyzerService extends BaseJpaService<WlyyIotD, WlyyIotDDao> {
    private Logger logger = LoggerFactory.getLogger(IotAnalyzerService.class);
    @Autowired
    private WlyyIotDDao wlyyIotDDao;
    @Autowired
    private WlyyIotMDao wlyyIotMDao;
    @Autowired
    ObjectMapper objectMapper;
    /**
     * 针对上传的体数据进行基础数据的解析,进行主表数据的存储
     * @param jsonData
     * @return
     * @throws Exception
     */
    public boolean analyzerMapM(String jsonData)throws Exception{
        WlyyIotM wlyyIotM = new WlyyIotM();
        boolean addFlag = false;
        String mid = "";
        //1-0 JSON 数据解析成 map 对象
        Map<String, Object> dataDetail = objectMapper.readValue(jsonData, HashMap.class);
        // 1-1 存储体征数据的基本信息
        LinkedHashMap memberMap = (LinkedHashMap)dataDetail.get("Member");
        wlyyIotM.setSn(dataDetail.get("MachineId") == null? "":dataDetail.get("MachineId").toString());
        wlyyIotM.setUnitNo(dataDetail.get("UnitNo") == null? "":dataDetail.get("UnitNo").toString());
        wlyyIotM.setUnitName(dataDetail.get("UnitName") == null? "":dataDetail.get("UnitName").toString());
        wlyyIotM.setDoctorId(dataDetail.get("DoctorId") == null? "":dataDetail.get("DoctorId").toString());
        wlyyIotM.setDoctorName(dataDetail.get("DoctorName") == null? "":dataDetail.get("DoctorName").toString());
        wlyyIotM.setRecordNo(dataDetail.get("RecordNo") == null? "":dataDetail.get("RecordNo").toString());
        wlyyIotM.setMeasureTime(dataDetail.get("MeasureTime") == null? "":dataDetail.get("MeasureTime").toString());
        wlyyIotM.setDeviceName("弈拓健康小屋测量仪");
        wlyyIotM.setDeviceModel(dataDetail.get("DeviceType") == null? "":dataDetail.get("DeviceType").toString());
        wlyyIotM.setMacAddr(dataDetail.get("MacAddr") == null? "":dataDetail.get("MacAddr").toString());
        wlyyIotM.setIdCardNo(memberMap.get("IdCode")==null?"":memberMap.get("IdCode").toString());
        wlyyIotM.setUserName(memberMap.get("Name")==null?"":memberMap.get("Name").toString());
        WlyyIotM wlyyIotMS =  wlyyIotMDao.save(wlyyIotM);
        if(wlyyIotMS != null){
            // 主表存储成功后,返回主表ID,用于细表存储关联用
            mid = wlyyIotMS.getId().toString();
        }
        for (Map.Entry entry : dataDetail.entrySet()) {
            String code = entry.getKey().toString();
            if("Member".equals(code) || "Member".equals(code) ){
                continue;
            }
            if("Height".equals(code) || "Fat".equals(code)|| "MinFat".equals(code)|| "BloodPressure".equals(code)|| "Bo".equals(code)
                    || "Ecg".equals(code)|| "PEEcg".equals(code)|| "Temperature".equals(code)|| "Whr".equals(code)|| "BloodSugar".equals(code)
                    || "Ua".equals(code)|| "Chol".equals(code)|| "BloodFat".equals(code)|| "Cardiovascular".equals(code)|| "BMD".equals(code)
                    || "Alcohol".equals(code)|| "Lung".equals(code)|| "Hb".equals(code)|| "Urinalysis".equals(code)){
                LinkedHashMap valueMap = (LinkedHashMap)entry.getValue();
                analyzerMapD(valueMap,mid,code);
            }
        }
        return true;
    }
    /**
     * 单项细表数据存储,因为体征数据上传,不管怎么样都返回成功,若数据未上传则直接查看LOG日志
     * @param mapInfo
     * @param mid
     * @param type
     * @return
     * @throws Exception
     */
    public boolean analyzerMapD(Map<String,Object> mapInfo, String mid,String type)throws Exception{
        boolean addFlag = false;
        for (Map.Entry<String, Object> entry : mapInfo.entrySet()) {
            String code = entry.getKey().toString();
            String value = entry.getValue() == null?"":entry.getValue().toString();
            // 当数值为空时,不进行存储操作
            if("".equals(value) || "0".equals(value) || "null".equals(value) ){
                continue;
            }else {
                WlyyIotD wlyyIotD = new WlyyIotD();
                wlyyIotD.setMid(mid);
                wlyyIotD.setType(type);
                wlyyIotD.setCode(code);
                wlyyIotD.setValue(value);
                wlyyIotD = addIotRecord(wlyyIotD);
                if(wlyyIotD != null){
                    logger.info( "体征数据新增成功:id = " + wlyyIotD.getId() + " ; type = " + type +" ; code = " + code +"; value = " +  value);
                    continue;
                }else {
                    logger.error( "体征数据新增成功:mid = " + mid + " ; type = " + type +" ; code = " + code +"; value = " +  value);
                    continue;
                }
            }
        }
        return true;
    }
    /**
     * 单条记录的存储,用于遍历循环操作
     * @param wlyyIotD
     * @return
     */
    public WlyyIotD addIotRecord(WlyyIotD wlyyIotD){
        WlyyIotD wlyyIotDRes = wlyyIotDDao.save(wlyyIotD);
        if(wlyyIotDRes != null){
            return wlyyIotDRes;
        }else{
            return null;
        }
    }
}

+ 79 - 0
svr/svr-iot/src/main/java/com/yihu/iot/service/analyzer/WlyyIotD.java

@ -0,0 +1,79 @@
package com.yihu.iot.service.analyzer;
import com.yihu.jw.entity.UuidIdentityEntity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.io.Serializable;
@Entity
@Table(name = "wlyy_iot_d")
public class WlyyIotD extends UuidIdentityEntity implements Serializable {
    @Column(name = "mid")
    private String mid;
    @Column(name = "type")
    private String type;
    @Column(name = "code")
    private String code;
    @Column(name = "name")
    private String name;
    @Column(name = "value")
    private String value;
    @Column(name = "unit")
    private String unit;
    public String getMid() {
        return mid;
    }
    public void setMid(String mid) {
        this.mid = mid;
    }
    public String getType() {
        return type;
    }
    public void setType(String type) {
        this.type = type;
    }
    public String getCode() {
        return code;
    }
    public void setCode(String code) {
        this.code = code;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getValue() {
        return value;
    }
    public void setValue(String value) {
        this.value = value;
    }
    public String getUnit() {
        return unit;
    }
    public void setUnit(String unit) {
        this.unit = unit;
    }
}

+ 14 - 0
svr/svr-iot/src/main/java/com/yihu/iot/service/analyzer/WlyyIotDDao.java

@ -0,0 +1,14 @@
package com.yihu.iot.service.analyzer;
import com.yihu.jw.entity.base.dict.DictDiseaseDO;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
import java.util.Map;
public interface WlyyIotDDao extends PagingAndSortingRepository<WlyyIotD, Integer>, JpaSpecificationExecutor<WlyyIotD>  {
}

+ 144 - 0
svr/svr-iot/src/main/java/com/yihu/iot/service/analyzer/WlyyIotM.java

@ -0,0 +1,144 @@
package com.yihu.iot.service.analyzer;
import com.yihu.jw.entity.UuidIdentityEntity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.io.Serializable;
@Entity
@Table(name = "wlyy_iot_m")
public class WlyyIotM extends UuidIdentityEntity implements Serializable {
    @Column(name = "sn")
    private String sn;
    @Column(name = "device_name")
    private String deviceName;
    @Column(name = "device_model")
    private String deviceModel;
    @Column(name = "id_card_no")
    private String idCardNo;
    @Column(name = "user_name")
    private String userName;
    @Column(name = "unit_no")
    private String unitNo;
    @Column(name = "unit_name")
    private String unitName;
    @Column(name = "doctor_id")
    private String doctorId;
    @Column(name = "doctor_name")
    private String doctorName;
    @Column(name = "record_no")
    private String recordNo;
    @Column(name = "measure_time")
    private String measureTime;
    @Column(name = "mac_addr")
    private String macAddr;
    public String getSn() {
        return sn;
    }
    public void setSn(String sn) {
        this.sn = sn;
    }
    public String getDeviceName() {
        return deviceName;
    }
    public void setDeviceName(String deviceName) {
        this.deviceName = deviceName;
    }
    public String getDeviceModel() {
        return deviceModel;
    }
    public void setDeviceModel(String deviceModel) {
        this.deviceModel = deviceModel;
    }
    public String getIdCardNo() {
        return idCardNo;
    }
    public void setIdCardNo(String idCardNo) {
        this.idCardNo = idCardNo;
    }
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public String getUnitNo() {
        return unitNo;
    }
    public void setUnitNo(String unitNo) {
        this.unitNo = unitNo;
    }
    public String getUnitName() {
        return unitName;
    }
    public void setUnitName(String unitName) {
        this.unitName = unitName;
    }
    public String getDoctorId() {
        return doctorId;
    }
    public void setDoctorId(String doctorId) {
        this.doctorId = doctorId;
    }
    public String getDoctorName() {
        return doctorName;
    }
    public void setDoctorName(String doctorName) {
        this.doctorName = doctorName;
    }
    public String getRecordNo() {
        return recordNo;
    }
    public void setRecordNo(String recordNo) {
        this.recordNo = recordNo;
    }
    public String getMeasureTime() {
        return measureTime;
    }
    public void setMeasureTime(String measureTime) {
        this.measureTime = measureTime;
    }
    public String getMacAddr() {
        return macAddr;
    }
    public void setMacAddr(String macAddr) {
        this.macAddr = macAddr;
    }
}

+ 8 - 0
svr/svr-iot/src/main/java/com/yihu/iot/service/analyzer/WlyyIotMDao.java

@ -0,0 +1,8 @@
package com.yihu.iot.service.analyzer;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
public interface WlyyIotMDao extends PagingAndSortingRepository<WlyyIotM, Integer>, JpaSpecificationExecutor<WlyyIotM>  {
}

+ 2 - 2
svr/svr-iot/src/main/resources/application.yml

@ -125,9 +125,9 @@ spring:
    password: jkzlehr@123
  elasticsearch:
    cluster-name: jkzl #默认即为elasticsearch  集群名
    cluster-nodes: 59.61.92.90:9208,59.61.92.90:9210 #配置es节点信息,逗号分隔,如果没有指定,则启动ClientNode
    cluster-nodes: 59.61.92.90:9208, 59.61.92.90:9210 #配置es节点信息,逗号分隔,如果没有指定,则启动ClientNode
    jest:
      uris: http://59.61.92.90:9208,http://59.61.92.90:9210
      uris: http://59.61.92.90:9208, http://59.61.92.90:9210
  wlyy:
    url: http://www.xmtyw.cn/wlyy/
#fast-dfs:

+ 1 - 14
svr/svr-iot/src/main/resources/bootstrap.yml

@ -1,16 +1,3 @@
spring:
  application:
    name: svr-iot  #注册到发现服务的id 如果id一样 eurika会自动做负载
  cloud:
    config:
      failFast: true
      username: jw
      password: jkzl
---
spring:
  profiles: jwdev
  cloud:
    config:
      uri: ${wlyy.spring.config.uri:http://172.26.0.107:1221}
      label: ${wlyy.spring.config.label:jwdev}
    name: svr-iot-third  #注册到发现服务的id 如果id一样 eurika会自动做负载