浏览代码

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

wangzhinan 5 年之前
父节点
当前提交
18c2bc997f
共有 30 个文件被更改,包括 898 次插入117 次删除
  1. 5 0
      business/base-service/pom.xml
  2. 25 0
      business/base-service/src/main/java/com/yihu/jw/dict/dao/DictDoctorDutyDao.java
  3. 2 0
      business/base-service/src/main/java/com/yihu/jw/doctor/dao/BaseDoctorDao.java
  4. 26 11
      business/base-service/src/main/java/com/yihu/jw/doctor/service/BaseDoctorService.java
  5. 64 9
      business/base-service/src/main/java/com/yihu/jw/file_upload/FileUploadService.java
  6. 26 9
      business/base-service/src/main/java/com/yihu/jw/hospital/prescription/service/PrescriptionService.java
  7. 257 0
      business/base-service/src/main/java/com/yihu/jw/wlyy/service/WlyyBusinessService.java
  8. 2 0
      business/base-service/src/main/java/com/yihu/jw/wlyy/wlyyhttp/WlyyHttpService.java
  9. 83 33
      business/im-service/src/main/java/com/yihu/jw/im/service/ImService.java
  10. 8 0
      common/common-entity/src/main/java/com/yihu/jw/entity/base/dict/DictDoctorDutyDO.java
  11. 1 1
      common/common-entity/src/main/java/com/yihu/jw/entity/base/org/BaseOrgDO.java
  12. 1 0
      common/common-request-mapping/src/main/java/com/yihu/jw/rm/hospital/BaseHospitalRequestMapping.java
  13. 1 1
      gateway/ag-basic/pom.xml
  14. 2 2
      gateway/ag-basic/src/main/java/com/yihu/jw/gateway/filter/BasicZuulFilter.java
  15. 61 0
      gateway/ag-basic/src/main/java/com/yihu/jw/gateway/methlog/BaseMethodLogDO.java
  16. 10 0
      gateway/ag-basic/src/main/java/com/yihu/jw/gateway/methlog/BaseMethodLogDao.java
  17. 88 0
      gateway/ag-basic/src/main/java/com/yihu/jw/gateway/methlog/BaseMethodLogService.java
  18. 1 1
      server/svr-authentication/src/main/java/com/yihu/jw/security/core/userdetails/jdbc/WlyyUserDetailsService.java
  19. 17 0
      server/svr-authentication/src/main/java/com/yihu/jw/security/dao/doctor/DoctorMappingDao.java
  20. 48 1
      server/svr-authentication/src/main/java/com/yihu/jw/security/service/OauthWlyyConfigService.java
  21. 1 1
      server/svr-authentication/src/main/resources/application.yml
  22. 7 0
      server/svr-authentication/src/main/resources/bootstrap.yml
  23. 25 25
      svr/svr-base/src/main/java/com/yihu/jw/base/dao/dict/DictDoctorDutyDao.java
  24. 2 1
      svr/svr-base/src/main/java/com/yihu/jw/base/service/doctor/excelImport/BaseDoctorExcelDOReader.java
  25. 9 9
      svr/svr-internet-hospital-entrance/pom.xml
  26. 21 0
      svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/base/BaseInfoEndpoint.java
  27. 8 3
      svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/config/DoctorServiceEndPoint.java
  28. 62 9
      svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/consult/PatientConsultEndpoint.java
  29. 25 0
      svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/patient/PatientNoLoginEndPoint.java
  30. 10 1
      svr/svr-internet-hospital/src/main/resources/application.yml

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

@ -137,6 +137,11 @@
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>4.3.13.RELEASE</version>
        </dependency>
    </dependencies>
    <build>

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

@ -0,0 +1,25 @@
package com.yihu.jw.dict.dao;
import com.yihu.jw.entity.base.dict.DictDoctorDutyDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
/**
 * 
 * 医生职务字典 数据库访问层
 * 
 * @version 
 * <pre>
 * Author	Version		Date		Changes
 * litaohong 	1.0  		2018年10月19日 	Created
 *
 * </pre>
 * @since 1.
 */
public interface DictDoctorDutyDao extends PagingAndSortingRepository<DictDoctorDutyDO, Integer>, JpaSpecificationExecutor<DictDoctorDutyDO>  {
    boolean existsByCode(String code);
    DictDoctorDutyDO findByCode(String code);
}

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

@ -34,4 +34,6 @@ public interface BaseDoctorDao extends PagingAndSortingRepository<BaseDoctorDO,
    @Modifying
    @Query("update BaseDoctorDO p set p.del = ?2 where p.id = ?1")
    void updateStatus(String doctorId,String status);
    List<BaseDoctorDO> findByIdcard(String idcard);
}

+ 26 - 11
business/base-service/src/main/java/com/yihu/jw/doctor/service/BaseDoctorService.java

@ -13,6 +13,8 @@ import com.yihu.mysql.query.BaseJpaService;
import net.sf.json.JSONObject;
import org.apache.commons.collections.map.HashedMap;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
@ -23,6 +25,9 @@ import java.util.Map;
@Service
public class BaseDoctorService extends BaseJpaService<BaseDoctorDO, BaseDoctorDao> {
    private static Logger logger = LoggerFactory.getLogger(BaseDoctorService.class);
    @Autowired
    private BaseDoctorDao baseDoctorDao;
    @Autowired
@ -42,15 +47,15 @@ public class BaseDoctorService extends BaseJpaService<BaseDoctorDO, BaseDoctorDa
     * @param page
     * @param pageSize
     */
    public Envelop queryList(String city, String hospital, String status, String name, String type, int page, int pageSize){
    public Envelop queryList(String city, String hospital, String status, String name, String type,String typeCode, int page, int pageSize){
        Map<String,Object> params = new HashedMap();
        String sqlTotal ="SELECT " +
                " COUNT(1) AS \"total\" " +
                " FROM " +
                " base_doctor a " +
                " JOIN base_doctor_hospital b ON a.id = b.doctor_code " +
                " JOIN wlyy_charge_dict e ON a.charge_type = e.charge_type " +
                " JOIN base_doctor_mapping c ON a.id = c.doctor " +
                " LEFT JOIN wlyy_charge_dict e ON a.charge_type = e.charge_type " +
                " LEFT JOIN base_doctor_mapping c ON a.id = c.doctor " +
                " WHERE " +
                " 1 = 1";
        if (StringUtils.isNotBlank(city)){
@ -75,8 +80,10 @@ public class BaseDoctorService extends BaseJpaService<BaseDoctorDO, BaseDoctorDa
            sqlTotal += " AND a.outpatient_type like:type";
            params.put("type",type);
        }
        sqlTotal += " AND e.dept_type_code =:typeCode";
        params.put("typeCode",6);
        if(StringUtils.isNotBlank(typeCode)){
            sqlTotal += " AND e.dept_type_code =:typeCode";
            params.put("typeCode",typeCode);
        }
        Long count = 0L;
        List<Map<String,Object>> total = hibenateUtils.createSQLQuery(sqlTotal,params);
        if(count!=null){
@ -95,8 +102,8 @@ public class BaseDoctorService extends BaseJpaService<BaseDoctorDO, BaseDoctorDa
                " FROM " +
                " base_doctor a " +
                " JOIN base_doctor_hospital b ON a.id = b.doctor_code " +
                " JOIN wlyy_charge_dict e ON a.charge_type = e.charge_type " +
                " JOIN base_doctor_mapping c ON a.id = c.doctor " +
                " LEFT JOIN wlyy_charge_dict e ON a.charge_type = e.charge_type " +
                " LEFT JOIN base_doctor_mapping c ON a.id = c.doctor " +
                " WHERE 1=1";
        if (StringUtils.isNotBlank(city)){
            sql += " AND a.city_name =:city";
@ -113,7 +120,11 @@ public class BaseDoctorService extends BaseJpaService<BaseDoctorDO, BaseDoctorDa
        if (StringUtils.isNotBlank(type)){
            sql += " AND a.outpatient_type like:type";
        }
        sql += " AND e.dept_type_code =:typeCode";
        if(StringUtils.isNotBlank(typeCode)){
            sql += " AND e.dept_type_code =:typeCode";
        }
        logger.info("queryList sql:"+sql);
        List<Map<String,Object>> list = hibenateUtils.createSQLQuery(sql,params,page,pageSize);
@ -125,7 +136,7 @@ public class BaseDoctorService extends BaseJpaService<BaseDoctorDO, BaseDoctorDa
     * @param doctorId
     * @return
     */
    public Object queryById(String doctorId) {
    public Object queryById(String doctorId,String typeCode) {
        Map<String,Object> params = new HashedMap();
        String sql ="SELECT " +
                " a.NAME AS \"name\", " +
@ -151,8 +162,12 @@ public class BaseDoctorService extends BaseJpaService<BaseDoctorDO, BaseDoctorDa
            sql+=" AND a.id =:id";
            params.put("id",doctorId);
        }
        sql+=" AND e.dept_type_code =:typeCode";
        params.put("typeCode",6);
        if(StringUtils.isNotBlank(typeCode)){
            sql+=" AND e.dept_type_code =:typeCode";
            params.put("typeCode",typeCode);
        }
        logger.info("queryById sql:"+sql);
        List<Map<String, Object>> list = hibenateUtils.createSQLQuery(sql, params);
        StringBuilder disease = new StringBuilder();

+ 64 - 9
business/base-service/src/main/java/com/yihu/jw/file_upload/FileUploadService.java

@ -3,6 +3,7 @@ package com.yihu.jw.file_upload;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.yihu.fastdfs.FastDFSUtil;
import com.yihu.jw.exception.business.file_upload.*;
import com.yihu.jw.hospital.prescription.service.PrescriptionExpressageService;
import com.yihu.jw.restmodel.iot.common.UploadVO;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpEntity;
@ -13,17 +14,19 @@ import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;
import org.apache.poi.util.IOUtils;
import org.csource.common.MyException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mock.web.MockMultipartFile;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import javax.servlet.http.HttpServletRequest;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.*;
import java.net.URLDecoder;
import java.nio.charset.Charset;
import java.security.NoSuchAlgorithmException;
@ -36,6 +39,9 @@ import java.util.*;
@Service
public class FileUploadService {
    private static Logger logger = LoggerFactory.getLogger(FileUploadService.class);
    @Autowired
    private FastDFSUtil fastDFSHelper;
@ -178,13 +184,14 @@ public class FileUploadService {
        String fileName = multipartFile.getOriginalFilename();
        String[] fs = fileName.split("\\.");
        String type = fs[1];
        logger.info("uploadImg type:"+type);
        //图片常见格式:bmp,jpg,png,tif,gif,pcx,tga,exif,fpx,svg,psd,cdr,pcd,dxf,ufo,eps,ai,raw,WMF,webp
        List img = new ArrayList(Arrays.asList("bmp", "jpg", "png", "tif", "gif", "pcx", "tga", "exif", "fpx", "svg", "psd", "cdr", "pcd", "dxf", "ufo", "eps", "ai", "raw", "WMF", "webp"));
        if (!img.contains(type)) {
            map.put("uploadStatus",2);//文件类型不对
            map.put("accessoryUrl",null);//
            return map;
        }
//        List img = new ArrayList(Arrays.asList("bmp", "jpg", "png", "tif", "gif", "pcx", "tga", "exif", "fpx", "svg", "psd", "cdr", "pcd", "dxf", "ufo", "eps", "ai", "raw", "WMF", "webp"));
//        if (!img.contains(type)) {
//            map.put("uploadStatus",2);//文件类型不对
//            map.put("accessoryUrl",null);//
//            return map;
//        }
        String response = request(wlyyUrl + "/upload/chat", multipartFile, null);
        org.json.JSONObject rs = new org.json.JSONObject(response);
        Integer status = (Integer) rs.get("status");
@ -196,6 +203,54 @@ public class FileUploadService {
        }
        throw new Exception();
    }
    
    
    /**
     * 调用健康上传语音文件
     * @param voices_Path
     * @return
     * @throws Exception
     */
    public String uploadWxVoice(String voices_Path) throws Exception {
        String url = "";
        // 文件保存的临时路径
        FastDFSUtil fastDFSUtil = new FastDFSUtil();
        String fileUrls = "";
        File f = new File(voices_Path);
        if (f.exists()) {
            FileInputStream input = new FileInputStream(f);
            MultipartFile multipartFile = new MockMultipartFile("file", f.getName(), "text/plain", IOUtils.toByteArray(input));
            
            long size = multipartFile.getSize();
            if(size<=0){
//                map.put("uploadStatus",1);//size小于0
//                map.put("accessoryUrl",null);//
                return url;
            }
            String fileName = multipartFile.getOriginalFilename();
            String[] fs = fileName.split("\\.");
            String type = fs[1];
            logger.info("uploadImg type:"+type);
            //图片常见格式:bmp,jpg,png,tif,gif,pcx,tga,exif,fpx,svg,psd,cdr,pcd,dxf,ufo,eps,ai,raw,WMF,webp
//        List img = new ArrayList(Arrays.asList("bmp", "jpg", "png", "tif", "gif", "pcx", "tga", "exif", "fpx", "svg", "psd", "cdr", "pcd", "dxf", "ufo", "eps", "ai", "raw", "WMF", "webp"));
//        if (!img.contains(type)) {
//            map.put("uploadStatus",2);//文件类型不对
//            map.put("accessoryUrl",null);//
//            return map;
//        }
            String response = request(wlyyUrl + "/upload/chat", multipartFile, null);
            org.json.JSONObject rs = new org.json.JSONObject(response);
            Integer status = (Integer) rs.get("status");
            if (status == 200) {
                url = rs.get("urls") + "";
//                map.put("uploadStatus", 0);//文件类型正确
//                map.put("accessory", url);//
                return url;
            }
            throw new Exception();
        }
        return url;
    }
    public String request(String remote_url, MultipartFile file, String type) {
        CloseableHttpClient httpClient = HttpClientBuilder.create().build();

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

@ -2268,6 +2268,16 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
                rs.put("workTime",times);
            }
    
            //专家咨询
            String zjCountsql = "SELECT id FROM wlyy_consult_team WHERE doctor='"+doctor+"' AND (type=1 OR type=15)";
            List<Map<String,Object>> zjList = jdbcTemplate.queryForList(sql);
    
            if(zjList!=null&&zjList.size()>0){
                rs.put("zjCount",zjList.size());
            }else{
                rs.put("zjCount",0);
            }
    
            //查询医生各项评价平均分
            String sqlscore = "SELECT " +
                    "AVG(a.score) AS score," +
@ -2892,7 +2902,9 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
                " h.dept_name AS deptName," +
                " d.consult_status AS consultStatus," +
                " d.outpatient_type AS outpatientType," +
                " a.total as consultTotal" +
                " a.total as consultTotal," +
                " h.org_name as orgName," +
                " h.org_code as orgCode" +
                " FROM " +
                " base_doctor d " +
                " JOIN base_doctor_hospital h ON h.doctor_code = d.id "+
@ -2901,8 +2913,18 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
        if(StringUtils.isNotBlank(workingTime)){
            sql+=" JOIN wlyy_doctor_work_time wk on wk.doctor = d.id ";
        }
        sql +=  " WHERE  " +
                " d.charge_type is not null ";
        sql +=  " WHERE  1=1 ";
        if(StringUtils.isBlank(chargType)){
            sql +=" AND d.charge_type is not null ";
        }
        if(StringUtils.isNotBlank(chargType)){
            if("all".equals(chargType)){
                //不过滤
            }else{
                sql+=" AND d.charge_type = '"+chargType+"'";
            }
        }
        if(StringUtils.isNotBlank(iswork)&&"1".equals(iswork)){
            logger.info("iswork:"+iswork);
@ -2920,7 +2942,7 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
                    " )";
        }
        if(StringUtils.isNotBlank(orgCode)){
            sql += " and  h.org_code = '"+orgCode+"'";
            sql += " AND  h.org_code = '"+orgCode+"'";
        }
        if(StringUtils.isNotBlank(diseaseKey)){
            sql+=" AND d.expertise like '%"+diseaseKey+"%'";
@ -2970,11 +2992,6 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
            sql+=" AND d.consult_status = '"+consultStatus+"' ";
        }
    
    
        if(StringUtils.isNotBlank(chargType)){
            sql+=" AND d.charge_type = '"+chargType+"'";
        }
    
        sql += " and d.del='1' order by a.total "+ consutlSort +" limit "+page * pagesize +","+pagesize;
        
        List<Map<String,Object>> list = jdbcTemplate.queryForList(sql);

+ 257 - 0
business/base-service/src/main/java/com/yihu/jw/wlyy/service/WlyyBusinessService.java

@ -2,14 +2,27 @@ package com.yihu.jw.wlyy.service;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.dict.dao.DictDoctorDutyDao;
import com.yihu.jw.dict.dao.DictHospitalDeptDao;
import com.yihu.jw.doctor.dao.BaseDoctorDao;
import com.yihu.jw.doctor.dao.BaseDoctorHospitalDao;
import com.yihu.jw.doctor.dao.BaseDoctorRoleDao;
import com.yihu.jw.entity.base.dict.DictDoctorDutyDO;
import com.yihu.jw.entity.base.dict.DictHospitalDeptDO;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
import com.yihu.jw.entity.base.doctor.BaseDoctorHospitalDO;
import com.yihu.jw.entity.base.doctor.BaseDoctorRoleDO;
import com.yihu.jw.entity.base.org.BaseOrgDO;
import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.entity.hospital.mapping.DoctorMappingDO;
import com.yihu.jw.entity.hospital.prescription.WlyyOutpatientDO;
import com.yihu.jw.hospital.mapping.dao.DoctorMappingDao;
import com.yihu.jw.hospital.prescription.dao.OutpatientDao;
import com.yihu.jw.org.dao.BaseOrgDao;
import com.yihu.jw.patient.dao.BasePatientDao;
import com.yihu.jw.util.common.IdCardUtil;
import com.yihu.jw.util.date.DateUtil;
import com.yihu.jw.util.wechat.wxhttp.HttpUtil;
import com.yihu.jw.wlyy.wlyyhttp.WlyyHttpService;
import com.yihu.utils.security.MD5;
import org.apache.commons.collections.map.HashedMap;
@ -17,6 +30,7 @@ import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -43,6 +57,24 @@ public class WlyyBusinessService {
    @Autowired
    private BasePatientDao basePatientDao;
    @Autowired
    private BaseOrgDao baseOrgDao;
    @Autowired
    private DictHospitalDeptDao dictHospitalDeptDao;
    @Autowired
    private BaseDoctorHospitalDao baseDoctorHospitalDao;
    @Autowired
    private BaseDoctorRoleDao baseDoctorRoleDao;
    @Autowired
    private JdbcTemplate jdbcTemplate;
    @Autowired
    private DoctorMappingDao doctorMappingDao;
    /**
     * 推送系统门诊wlyy系统消息
     * @param doctor
@ -338,4 +370,229 @@ public class WlyyBusinessService {
        }
        return null;
    }
    public String findWlyyHospital(){
        JSONObject re = wlyyHttpService.sendWlyyMes("findWlyyHospital",null,null);
        if(re!=null){
            JSONArray hospitals = JSONArray.parseArray(re.getString("data"));
            logger.info("hospitals size:"+hospitals.size());
            if(hospitals!=null&&hospitals.size()>0){
                Integer addCount = 0;
                for(int i=0;i<hospitals.size();i++){
                    JSONObject h = (JSONObject) hospitals.get(i);
                    String code = h.getString("code");
                    if(!baseOrgDao.existsByCode(code)){
                        BaseOrgDO org = new BaseOrgDO();
                        org.setCode(code);
                        org.setName(h.getString("name"));
                        org.setProvinceCode(h.getString("province"));
                        org.setProvinceName(h.getString("provinceName"));
                        org.setCityCode(h.getString("city"));
                        org.setCityName(h.getString("cityName"));
                        org.setTownCode(h.getString("town"));
                        org.setTownName(h.getString("townName"));
                        org.setType("1");
                        org.setWinNo("-1");
                        baseOrgDao.save(org);
                        addCount++;
                    }
                }
                logger.info("hospitals addCount:"+addCount);
            }
        }
        return "ok";
    }
    public String findWlyyDept(){
        JSONObject re = wlyyHttpService.sendWlyyMes("findWlyyDept",null,null);
        if(re!=null){
            JSONArray depts = JSONArray.parseArray(re.getString("data"));
            logger.info("depts size:"+depts.size());
            if(depts!=null&&depts.size()>0){
                Integer addCount = 0;
                for(int i=0;i<depts.size();i++){
                    JSONObject d = (JSONObject) depts.get(i);
                    String code = d.getString("code");
                    String hospital = d.getString("hospital");
                    if(!dictHospitalDeptDao.existsByCodeAndOrgCode(code,hospital)){
                        DictHospitalDeptDO deptDO = new DictHospitalDeptDO();
                        deptDO.setCode(code);
                        deptDO.setName(d.getString("name"));
                        deptDO.setOrgCode(hospital);
                        deptDO.setConsultDeptFlag("1");
                        deptDO.setCreateTime(new Date());
                        dictHospitalDeptDao.save(deptDO);
                        addCount++;
                    }
                }
                logger.info("Dept addCount"+addCount);
            }
        }
        return "ok";
    }
    public String findWlyyDoctor()throws Exception{
        JSONObject re = wlyyHttpService.sendWlyyMes("findWlyyDoctor",null,null);
        if(re!=null){
            JSONArray doctors = JSONArray.parseArray(re.getString("data"));
            logger.info("doctors size:"+doctors.size());
            if(doctors!=null&&doctors.size()>0){
                //获取全部职称
                List<Map<String,Object>> dutys = findDutys();
                for(int i=0;i<doctors.size();i++){
                    try {
                        JSONObject doctorJson = (JSONObject) doctors.get(i);
                        String idcard = doctorJson.getString("idcard");
                        if(StringUtils.isNotBlank(idcard)) {
                            List<BaseDoctorDO> ds = baseDoctorDao.findByIdcard(idcard);
                            if (ds != null && ds.size() > 0) {
                                //已有账号更新
                                BaseDoctorDO doctor = ds.get(0);
                                doctor.setName(doctorJson.getString("name"));
                                doctor.setIdcard(doctorJson.getString("idcard"));
                                doctor.setMobile(doctorJson.getString("mobile"));
                                doctor.setSex(Integer.parseInt(IdCardUtil.getSexForIdcard_new(idcard)));
                                doctor.setBirthday(IdCardUtil.getBirthdayForIdcard(idcard));
                                doctor.setProvinceCode(doctorJson.getString("province"));
                                doctor.setProvinceName(doctorJson.getString("provinceName"));
                                doctor.setTownCode(doctorJson.getString("town"));
                                doctor.setTownName(doctorJson.getString("townName"));
                                doctor.setCityCode(doctorJson.getString("city"));
                                doctor.setCityName(doctorJson.getString("cityName"));
                                doctor.setExpertise(doctorJson.getString("expertise"));
                                doctor.setIntroduce(doctorJson.getString("introduce"));
                                String jobName = doctorJson.getString("jobName");
                                doctor.setJobTitleCode(getDutysCode(dutys, jobName));
                                doctor.setJobTitleName(jobName);
                                baseDoctorDao.save(doctor);
                            } else {
                                BaseDoctorDO doctor = new BaseDoctorDO();
                                doctor.setName(doctorJson.getString("name"));
                                doctor.setIdcard(doctorJson.getString("idcard"));
                                doctor.setMobile(doctorJson.getString("mobile"));
                                doctor.setSex(Integer.parseInt(IdCardUtil.getSexForIdcard_new(idcard)));
                                doctor.setBirthday(IdCardUtil.getBirthdayForIdcard(idcard));
                                doctor.setProvinceCode(doctorJson.getString("province"));
                                doctor.setProvinceName(doctorJson.getString("provinceName"));
                                doctor.setTownCode(doctorJson.getString("town"));
                                doctor.setTownName(doctorJson.getString("townName"));
                                doctor.setCityCode(doctorJson.getString("city"));
                                doctor.setCityName(doctorJson.getString("cityName"));
                                doctor.setExpertise(doctorJson.getString("expertise"));
                                doctor.setIntroduce(doctorJson.getString("introduce"));
                                //认证信息设置
                                String salt = randomString(5);
                                String pw = idcard.substring(idcard.length() - 6);
                                doctor.setPassword(MD5.md5Hex(pw + "{" + salt + "}"));
                                doctor.setDel("1");
                                doctor.setEnabled(1);
                                doctor.setLocked(0);
                                doctor.setCreateTime(new Date());
                                String jobName = doctorJson.getString("jobName");
                                doctor.setJobTitleCode(getDutysCode(dutys, jobName));
                                doctor.setJobTitleName(jobName);
                                BaseDoctorDO temp = baseDoctorDao.save(doctor);
                                //机构信息部门信息
                                BaseDoctorHospitalDO hospitalDO = new BaseDoctorHospitalDO();
                                hospitalDO.setDoctorCode(temp.getId());
                                hospitalDO.setOrgCode(doctorJson.getString("hospital"));
                                hospitalDO.setOrgName(doctorJson.getString("hospitalName"));
                                hospitalDO.setDeptCode(doctorJson.getString("dept"));
                                hospitalDO.setDeptName(doctorJson.getString("deptName"));
                                hospitalDO.setDel("1");
                                baseDoctorHospitalDao.save(hospitalDO);
                                Integer level = doctorJson.getInteger("level");
                                BaseDoctorRoleDO role = new BaseDoctorRoleDO();
                                if (level != null && level == 1) {
                                    role.setRoleCode("specialist");
                                } else {
                                    role.setRoleCode("generalDoctor");
                                }
                                role.setDoctorCode(temp.getId());
                                role.setRoleCode("generalDoctor");
                                baseDoctorRoleDao.save(role);
                                DoctorMappingDO mappingDO = new DoctorMappingDO();
                                mappingDO.setIdcard(idcard);
                                mappingDO.setDoctor(temp.getId());
                                mappingDO.setOrgCode(doctorJson.getString("hospital"));
                                mappingDO.setOrgName(doctorJson.getString("hospitalName"));
                                mappingDO.setMappingCode(temp.getId());
                                mappingDO.setDoctorName(temp.getName());
                                mappingDO.setMappingDeptName(temp.getName());
                                mappingDO.setCreateTime(new Date());
                                doctorMappingDao.save(mappingDO);
                            }
                        }
                    }catch (Exception e){
                        logger.info("data error");
                    }
                }
            }
        }
        return "ok";
    }
    /**
     * 获取全部职称
     * @return
     */
    public List<Map<String,Object>> findDutys(){
        String sql = "select code,name from dict_doctor_duty";
        return jdbcTemplate.queryForList(sql);
    }
    public String getDutysCode(List<Map<String,Object>> dutys,String name){
        if(StringUtils.isNotBlank(name)){
            for(Map<String,Object> d:dutys){
                String duty = (String)d.get("name");
                if(name.equals(duty)){
                    return (String)d.get("code");
                }
            }
        }
        return "";
    }
    public 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();
    }
    
    /**
     * 推送i健康智能助手模版消息
     * @param wxurl
     */
    public void sendDoctorTemplateByDoctorIdcard(String wxurl) {
        String re = HttpUtil.sendGet(wxurl);
        JSONObject reObject = JSONObject.parseObject(re);
        if(200 == reObject.getInteger("status")){
            logger.info("请求成功,"+re);
        }else{
            logger.info("请求失败");
        }
    }
}

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

@ -95,4 +95,6 @@ public class WlyyHttpService {
        }
        return null;
    }
    
}

+ 83 - 33
business/im-service/src/main/java/com/yihu/jw/im/service/ImService.java

@ -289,6 +289,16 @@ public class ImService {
		return consultCode;
	}
	
	/**
	 * 根据咨询Code,查询咨询详情
	 * @param consultCode
	 * @return
	 */
	public ConsultTeamDo getConsultTeamDo(String consultCode){
		ConsultTeamDo consultTeamDo = consultTeamDao.findByConsult(consultCode);
		return consultTeamDo;
	}
	
	/**
	 * 查询全科医生与某个医生未结束的专家咨询
	 *
@ -403,15 +413,22 @@ public class ImService {
		}
		
		String[] arr = null;
		if (type == 3) {
//			String path = fetchWxVoices(wechat_appid);
//			JSONObject obj = new JSONObject();
//			// 将临时语音拷贝到正式存储路径下
//			if (org.apache.commons.lang3.StringUtils.isNotEmpty(path)) {
//				content = fileUtil.copyTempVoice(path,fastdfs_file_url);
//				obj.put("path", path);
//				obj.put("times", times);
//				content = obj.toString();
		if (type == 3) {//语音文件处理
//			if(!StringUtils.isEmpty(wechat_appid)){
//				String path = fetchWxVoices(wechat_appid);
//				JSONObject obj = new JSONObject();
//				// 将临时语音拷贝到正式存储路径下
//				if (org.apache.commons.lang3.StringUtils.isNotEmpty(path)) {
//					if("xm_ihealth_wx".equals(wechat_appid)){
//						Map<String, Object> map = fileUploadService.uploadImg(file);
//						uploadVO.setFullUri(map.get("accessory").toString());
//					}else{
//						content = fileUtil.copyTempVoice(path,fastdfs_file_url);
//					}
//					obj.put("path", path);
//					obj.put("times", times);
//					content = obj.toString();
//				}
//			}
			ConsultTeamLogDo log = new ConsultTeamLogDo();
			log.setConsult(consult);
@ -639,7 +656,13 @@ public class ImService {
	 * @return
	 */
	public InputStream getInputStream(String mediaId,String wechat_appid) {
		String accessToken = wxAccessTokenService.getWxAccessTokenById(wechat_appid).getAccessToken();
		String accessToken = "";
		//中山医院互联网医院
		if("xm_zsyy_wx".equals(wechat_appid)){
			accessToken = entranceService.getAccessToken("100033");
		}else{
			accessToken = wxAccessTokenService.getWxAccessTokenById(wechat_appid).getAccessToken();
		}
		InputStream is = null;
		String url = "http://file.api.weixin.qq.com/cgi-bin/media/get?access_token=" + accessToken + "&media_id=" + mediaId;
		try {
@ -1571,29 +1594,56 @@ public class ImService {
			pagesize = 10;
		}
		
		String  sql = "SELECT " +
				"a.id AS id," +
				"a.type AS type," +
				"a.title AS title," +
				"a.symptoms AS symptoms," +
				"a.czrq AS czrq," +
				"b.status AS status," +
				"b.evaluate AS evaluate," +
				"d.name AS patientName," +
				"d.id as patientId," +
				"d.idcard as patientIdcard," +
				"d.sex as patientsex," +
				"op.id as outpatientid," +
				"op.type as consultType," +
				"op.general_doctor as generalDoctor," +
				"op.icd10_name as icd10Name," +
				"d.photo AS patientphoto " +
				"FROM wlyy_consult a," +
				"wlyy_consult_team b," +
				"base_patient d, " +
				"wlyy_outpatient op " +
				"WHERE a.id=b.consult " +
				"AND b.patient=d.id AND b.doctor='"+doctor+"' AND a.relation_code = op.id ";
		String  sql = "";
		if(1 == type || 15 ==type){
			sql = "SELECT " +
					"a.id AS id," +
					"a.type AS type," +
					"a.title AS title," +
					"a.symptoms AS symptoms," +
					"a.czrq AS czrq," +
					"b.status AS status," +
					"b.evaluate AS evaluate," +
					"d.name AS patientName," +
					"d.id as patientId," +
					"d.idcard as patientIdcard," +
					"d.sex as patientsex," +
					"d.photo AS patientphoto " +
					"FROM wlyy_consult a," +
					"wlyy_consult_team b," +
					"base_patient d " +
					"WHERE a.id=b.consult " +
					"AND b.patient=d.id AND b.doctor='"+doctor+"'";
		}else{
			
			sql = "SELECT " +
					"a.id AS id," +
					"a.type AS type," +
					"a.title AS title," +
					"a.symptoms AS symptoms," +
					"a.czrq AS czrq," +
					"b.status AS status," +
					"b.evaluate AS evaluate," +
					"d.name AS patientName," +
					"d.id as patientId," +
					"d.idcard as patientIdcard," +
					"d.sex as patientsex," +
					"op.id as outpatientid," +
					"op.type as consultType," +
					"op.general_doctor as generalDoctor," +
					"op.icd10_name as icd10Name," +
					"d.photo AS patientphoto " +
					"FROM wlyy_consult a," +
					"wlyy_consult_team b," +
					"base_patient d, " +
					"wlyy_outpatient op " +
					"WHERE a.id=b.consult " +
					"AND b.patient=d.id AND b.doctor='"+doctor+"' AND a.relation_code = op.id ";
		}
		
		
		
		List<ConsultVO> result = new ArrayList<>();
		
		if(!StringUtils.isEmpty(title)){

+ 8 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/base/dict/DictDoctorDutyDO.java

@ -51,4 +51,12 @@ public class DictDoctorDutyDO extends IntegerIdentityEntity {
        this.name = name;
    }
    @Column(name = "create_time")
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
}

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

@ -159,7 +159,7 @@ public class BaseOrgDO extends UuidIdentityEntityWithOperator {
    private Integer level;
    /**
     * 机构分部号,每个机构都不一样,例如中山医院:6总部7金榜8夏禾
     * 机构分部号,每个机构都不一样,例如中山医院:6总部7金榜8夏禾 默认1
     */
    private String winNo;

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

@ -676,5 +676,6 @@ public class BaseHospitalRequestMapping {
        public static final String isExistsUnfinishedConsult ="/isExistsUnfinishedConsult";
        public static final String getJobBySaasId ="/getJobBySaasId";
        public static final String findWorkTimeInfo="/findWorkTimeInfo";
        public static final String findLevelOneDoctorUpcoming="/findLevelOneDoctorUpcoming";
    }
}

+ 1 - 1
gateway/ag-basic/pom.xml

@ -12,7 +12,7 @@
    <artifactId>ag-basic</artifactId>
    <version>${parent.version}</version>
    <packaging>war</packaging>
    <packaging>jar</packaging>
    <dependencies>
        <!-- 支持Tomcat启动 -->

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

@ -3,7 +3,7 @@ package com.yihu.jw.gateway.filter;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.netflix.zuul.ZuulFilter;
import com.netflix.zuul.context.RequestContext;
import com.yihu.jw.gateway.log.service.BaseMethodLogService;
import com.yihu.jw.gateway.methlog.BaseMethodLogService;
import com.yihu.jw.restmodel.ResultStatus;
import com.yihu.jw.restmodel.web.Envelop;
import org.slf4j.Logger;
@ -30,7 +30,7 @@ import java.util.Enumeration;
import java.util.Iterator;
/**
 * Created by progr1mmer on 2017/12/27
 * Created by progr1mmer on 2017/12/27.
 */
@Component
public class BasicZuulFilter extends ZuulFilter {

+ 61 - 0
gateway/ag-basic/src/main/java/com/yihu/jw/gateway/methlog/BaseMethodLogDO.java

@ -0,0 +1,61 @@
package com.yihu.jw.gateway.methlog;
import com.yihu.jw.entity.UuidIdentityEntity;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.util.Date;
/**
 * Created by Trick on 2020/2/19.
 */
@Entity
@Table(name = "base_method_log")
public class BaseMethodLogDO extends UuidIdentityEntity {
    private String uuid;
    private String name;
    private String ip;
    private String method;
    private Date createTime;
    public String getUuid() {
        return uuid;
    }
    public void setUuid(String uuid) {
        this.uuid = uuid;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getIp() {
        return ip;
    }
    public void setIp(String ip) {
        this.ip = ip;
    }
    public String getMethod() {
        return method;
    }
    public void setMethod(String method) {
        this.method = method;
    }
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
}

+ 10 - 0
gateway/ag-basic/src/main/java/com/yihu/jw/gateway/methlog/BaseMethodLogDao.java

@ -0,0 +1,10 @@
package com.yihu.jw.gateway.methlog;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
/**
 * Created by Trick on 2020/2/19.
 */
public interface BaseMethodLogDao extends PagingAndSortingRepository<BaseMethodLogDO, String>, JpaSpecificationExecutor<BaseMethodLogDO> {
}

+ 88 - 0
gateway/ag-basic/src/main/java/com/yihu/jw/gateway/methlog/BaseMethodLogService.java

@ -0,0 +1,88 @@
package com.yihu.jw.gateway.methlog;
import com.yihu.jw.gateway.log.dao.*;
import com.yihu.jw.gateway.log.entity.*;
import com.yihu.jw.gateway.useragent.UserAgent;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletRequest;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.Date;
/**
 * Created by Trick on 2020/2/19.
 */
@Service
@Transactional
public class BaseMethodLogService {
    private static final Logger logger = LoggerFactory.getLogger(com.yihu.jw.gateway.log.service.BaseMethodLogService.class);
    @Autowired
    private com.yihu.jw.gateway.log.dao.BaseMethodLogDao baseMethodLogDao;
    @Autowired
    private UserAgent userAgent;
    /**
     * 存储操作日志
     */
    public void saveMethodLog(HttpServletRequest request){
        try{
            logger.info("saveMethodLog");
            com.yihu.jw.gateway.log.entity.BaseMethodLogDO log = new com.yihu.jw.gateway.log.entity.BaseMethodLogDO();
            log.setUuid(userAgent.getUID());
            log.setName(userAgent.getUNAME());
            log.setIp(getIpAddress(request));
            log.setCreateTime(new Date());
            log.setMethod(request.getRequestURI());
            baseMethodLogDao.save(log);
            logger.info("saveMethodLog success");
        }catch (Exception e){
            logger.info("saveMethodLog error"+e.toString());
        }
    }
    /**
     * 获取用户真实IP地址,不使用request.getRemoteAddr();的原因是有可能用户使用了代理软件方式避免真实IP地址。
     * 可是,如果通过了多级反向代理的话,X-Forwarded-For的值并不止一个,而是一串IP值,究竟哪个才是真正的用户端的真实IP呢?
     * 答案是取X-Forwarded-For中第一个非unknown的有效IP字符串
     * @param request
     * @return
     */
    private String getIpAddress(HttpServletRequest request) {
        String ip = request.getHeader("x-forwarded-for");
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("Proxy-Client-IP");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("WL-Proxy-Client-IP");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("HTTP_CLIENT_IP");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("HTTP_X_FORWARDED_FOR");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getRemoteAddr();
            if("127.0.0.1".equals(ip)||"0:0:0:0:0:0:0:1".equals(ip)){
                //根据网卡取本机配置的IP
                InetAddress inet=null;
                try {
                    inet = InetAddress.getLocalHost();
                } catch (UnknownHostException e) {
                    e.printStackTrace();
                }
                ip= inet.getHostAddress();
            }
        }
        return ip;
    }
}

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

@ -617,7 +617,7 @@ public class WlyyUserDetailsService extends JdbcDaoSupport implements UserDetail
    public static void main(String arg[]){
        String ps = MD5.md5Hex("123456" + "{" + "Ar8f2" + "}");
        String ps = MD5.md5Hex("327127" + "{" + "Ar8f2" + "}");
        System.out.println(ps);
    }
}

+ 17 - 0
server/svr-authentication/src/main/java/com/yihu/jw/security/dao/doctor/DoctorMappingDao.java

@ -0,0 +1,17 @@
package com.yihu.jw.security.dao.doctor;
import com.yihu.jw.entity.hospital.mapping.DoctorMappingDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
/**
 * Created by Trick on 2019/6/10.
 */
public interface DoctorMappingDao extends PagingAndSortingRepository<DoctorMappingDO, String>, JpaSpecificationExecutor<DoctorMappingDO> {
    List<DoctorMappingDO> findByDoctorAndOrgCode(String doctor, String orgCode);
    List<DoctorMappingDO> findByOrgCodeAndMappingCode(String orgCode, String mappingCode);
}

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

@ -4,11 +4,13 @@ import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
import com.yihu.jw.entity.base.doctor.BaseDoctorHospitalDO;
import com.yihu.jw.entity.base.doctor.BaseDoctorRoleDO;
import com.yihu.jw.entity.hospital.mapping.DoctorMappingDO;
import com.yihu.jw.entity.wlyyinfo.OauthWlyyConfigDO;
import com.yihu.jw.security.dao.OauthWlyyConfigDao;
import com.yihu.jw.security.dao.doctor.BaseDoctorDao;
import com.yihu.jw.security.dao.doctor.BaseDoctorHospitalDao;
import com.yihu.jw.security.dao.doctor.BaseDoctorRoleDao;
import com.yihu.jw.security.dao.doctor.DoctorMappingDao;
import com.yihu.jw.security.utils.HttpClientUtil;
import com.yihu.utils.security.MD5;
import org.apache.commons.collections.map.HashedMap;
@ -18,6 +20,7 @@ import org.apache.http.message.BasicNameValuePair;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -42,6 +45,10 @@ public class OauthWlyyConfigService {
    private BaseDoctorHospitalDao baseDoctorHospitalDao;
    @Autowired
    private BaseDoctorRoleDao baseDoctorRoleDao;
    @Autowired
    private JdbcTemplate jdbcTemplate;
    @Autowired
    private DoctorMappingDao doctorMappingDao;
    public JSONObject checkWlyyDoctor(String code)throws Exception{
@ -86,6 +93,7 @@ public class OauthWlyyConfigService {
                        data.put("mes","I健康账户信息不完整,授权失败");
                        return data;
                    }
                    List<Map<String,Object>> dutys = findDutys();
                    BaseDoctorDO doctorDO = baseDoctorDao.findByIdcard(idcard);
                    if(doctorDO!=null){
@ -155,6 +163,11 @@ public class OauthWlyyConfigService {
                        doctor.setEnabled(1);
                        doctor.setLocked(0);
                        doctor.setCreateTime(new Date());
                        String jobName = doctorJson.getString("jobName");
                        doctor.setJobTitleCode(getDutysCode(dutys,jobName));
                        doctor.setJobTitleName(jobName);
                        BaseDoctorDO temp = baseDoctorDao.save(doctor);
                        //机构信息
@ -162,6 +175,8 @@ public class OauthWlyyConfigService {
                        hospitalDO.setDoctorCode(temp.getId());
                        hospitalDO.setOrgCode(doctorJson.getString("hospital"));
                        hospitalDO.setOrgName(doctorJson.getString("hospitalName"));
                        hospitalDO.setDeptCode(doctorJson.getString("dept"));
                        hospitalDO.setDeptName(doctorJson.getString("deptName"));
                        hospitalDO.setDel("1");
                        baseDoctorHospitalDao.save(hospitalDO);
@ -173,8 +188,19 @@ public class OauthWlyyConfigService {
                            role.setRoleCode("generalDoctor");
                        }
                        role.setDoctorCode(temp.getId());
                        role.setRoleCode("generalDoctor");
                        baseDoctorRoleDao.save(role);
                        //保存
                        DoctorMappingDO mappingDO = new DoctorMappingDO();
                        mappingDO.setIdcard(idcard);
                        mappingDO.setDoctor(temp.getId());
                        mappingDO.setOrgCode(doctorJson.getString("hospital"));
                        mappingDO.setOrgName(doctorJson.getString("hospitalName"));
                        mappingDO.setMappingCode(temp.getId());
                        mappingDO.setDoctorName(temp.getName());
                        mappingDO.setMappingDeptName(temp.getName());
                        mappingDO.setCreateTime(new Date());
                        doctorMappingDao.save(mappingDO);
                        return data;
                    }
                }else{
@ -196,6 +222,27 @@ public class OauthWlyyConfigService {
    }
    /**
     * 获取全部职称
     * @return
     */
    public List<Map<String,Object>> findDutys(){
        String sql = "select code,name from dict_doctor_duty";
        return jdbcTemplate.queryForList(sql);
    }
    public String getDutysCode(List<Map<String,Object>> dutys,String name){
        if(StringUtils.isNotBlank(name)){
            for(Map<String,Object> d:dutys){
                String duty = (String)d.get("name");
                if(name.equals(duty)){
                    return (String)d.get("code");
                }
            }
        }
        return "";
    }
    public String randomString(int length) {
        String str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
        StringBuffer buffer = new StringBuffer();

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

@ -132,7 +132,7 @@ spring:
    password: qY#j2n5O
  redis:
    host: 59.61.92.90 # Redis server host.
    port: 9054  # Redis server port.
    port: 9206  # Redis server port.
    password: jkzlehr
  ##发现服务

+ 7 - 0
server/svr-authentication/src/main/resources/bootstrap.yml

@ -50,6 +50,13 @@ spring:
      uri: ${wlyy.spring.config.uri:http://172.16.100.63:1221}
      label: ${wlyy.spring.config.label:master}
---
spring:
  profiles: jwOracleProd
  cloud:
    config:
      uri: ${wlyy.spring.config.uri:http://192.168.33.199:1221}
      label: ${wlyy.spring.config.label:master}
---
spring:
  profiles: xmjwprod
  cloud:

+ 25 - 25
svr/svr-base/src/main/java/com/yihu/jw/base/dao/dict/DictDoctorDutyDao.java

@ -1,25 +1,25 @@
package com.yihu.jw.base.dao.dict;
import com.yihu.jw.entity.base.dict.DictDoctorDutyDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
/**
 * 
 * 医生职务字典 数据库访问层
 * 
 * @version 
 * <pre>
 * Author	Version		Date		Changes
 * litaohong 	1.0  		2018年10月19日 	Created
 *
 * </pre>
 * @since 1.
 */
public interface DictDoctorDutyDao extends PagingAndSortingRepository<DictDoctorDutyDO, Integer>, JpaSpecificationExecutor<DictDoctorDutyDO>  {
    boolean existsByCode(String code);
    DictDoctorDutyDO findByCode(String code);
}
//package com.yihu.jw.base.dao.dict;
//
//import com.yihu.jw.entity.base.dict.DictDoctorDutyDO;
//import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
//import org.springframework.data.repository.PagingAndSortingRepository;
//
//
///**
// *
// * 医生职务字典 数据库访问层
// *
// * @version
// * <pre>
// * Author	Version		Date		Changes
// * litaohong 	1.0  		2018年10月19日 	Created
// *
// * </pre>
// * @since 1.
// */
//public interface DictDoctorDutyDao extends PagingAndSortingRepository<DictDoctorDutyDO, Integer>, JpaSpecificationExecutor<DictDoctorDutyDO>  {
//
//    boolean existsByCode(String code);
//
//    DictDoctorDutyDO findByCode(String code);
//}

+ 2 - 1
svr/svr-base/src/main/java/com/yihu/jw/base/service/doctor/excelImport/BaseDoctorExcelDOReader.java

@ -1,9 +1,10 @@
package com.yihu.jw.base.service.doctor.excelImport;
import com.yihu.jw.base.dao.dict.DictDoctorDutyDao;
import com.yihu.jw.base.dao.dict.DictJobTitleDao;
import com.yihu.jw.base.dao.doctor.BaseDoctorRoleInfoDao;
import com.yihu.jw.base.endpoint.common.excel.AExcelReader;
import com.yihu.jw.dict.dao.DictDoctorDutyDao;
import com.yihu.jw.dict.dao.DictHospitalDeptDao;
import com.yihu.jw.entity.base.dict.DictJobTitleDO;
import com.yihu.jw.entity.base.doctor.BaseDoctorRoleDO;

+ 9 - 9
svr/svr-internet-hospital-entrance/pom.xml

@ -12,7 +12,7 @@
    <groupId>com.yihu.jw</groupId>
    <artifactId>svr-internet-hospital-entrance</artifactId>
    <packaging>jar</packaging>
    <packaging>war</packaging>
    <version>${parent.version}</version>
    <dependencies>
@ -46,15 +46,15 @@
            <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-eureka</artifactId>-->
        <!--</dependency>-->
        <!--注释掉就不会读取git的配置,只会读取yml中的配置-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-config</artifactId>
        </dependency>
        <!--<dependency>-->
            <!--<groupId>org.springframework.cloud</groupId>-->
            <!--<artifactId>spring-cloud-starter-config</artifactId>-->
        <!--</dependency>-->
        <!--<dependency>-->
            <!--<groupId>org.springframework.cloud</groupId>-->
            <!--<artifactId>spring-cloud-starter-zipkin</artifactId>-->

+ 21 - 0
svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/base/BaseInfoEndpoint.java

@ -13,6 +13,7 @@ import com.yihu.jw.entity.base.org.BaseOrgDO;
import com.yihu.jw.org.service.BaseOrgInfoService;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import com.yihu.jw.wlyy.service.WlyyBusinessService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
@ -50,6 +51,8 @@ public class BaseInfoEndpoint extends EnvelopRestEndpoint {
    @Autowired
    private BaseStreetService baseStreetService;
    @Autowired
    private WlyyBusinessService wlyyBusinessService;
    /**
     * 获取市列表信息
     * @return
@ -145,5 +148,23 @@ public class BaseInfoEndpoint extends EnvelopRestEndpoint {
                              @RequestParam(value = "town", required = true) String town)  {
        return success(baseStreetService.findByTown(town));
    }
    @GetMapping(value = "/findWlyyHospital")
    @ApiOperation(value = "同步医院信息", notes = "同步医院信息")
    public Envelop findWlyyHospital() throws Exception {
        return success(wlyyBusinessService.findWlyyHospital());
    }
    @GetMapping(value = "/findWlyyDept")
    @ApiOperation(value = "同步部门信息", notes = "同步部门信息")
    public Envelop findWlyyDept()  throws Exception{
        return success(wlyyBusinessService.findWlyyDept());
    }
    @GetMapping(value = "/findWlyyDoctor")
    @ApiOperation(value = "同步医生信息", notes = "同步医生信息")
    public Envelop findWlyyDoctor() throws Exception{
        return success(wlyyBusinessService.findWlyyDoctor());
    }
}

+ 8 - 3
svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/config/DoctorServiceEndPoint.java

@ -43,12 +43,14 @@ public class DoctorServiceEndPoint extends EnvelopRestEndpoint {
            @RequestParam(value = "name", required = false) String name,
            @ApiParam(name = "type", value = "咨询类型")
            @RequestParam(value = "type", required = false) String type,
            @ApiParam(name = "typeCode", value = "分部,无分部不传")
            @RequestParam(value = "typeCode", required = false)String typeCode,
            @ApiParam(name = "page", value = "分页大小", required = true, defaultValue = "1")
            @RequestParam(value = "page") int page,
            @ApiParam(name = "pageSize", value = "页码", required = true, defaultValue = "10")
            @RequestParam(value = "pageSize") int pageSize) throws Exception {
        return baseDoctorService.queryList(city,hospital,status,name,type,page,pageSize);
        return baseDoctorService.queryList(city,hospital,status,name,type,typeCode,page,pageSize);
    }
@ -56,8 +58,11 @@ public class DoctorServiceEndPoint extends EnvelopRestEndpoint {
    @ApiOperation(value = "根据医生id查询详情")
    public Envelop queryById(
            @ApiParam(name = "doctorId", value = "医生id")
            @RequestParam(value = "doctorId", required = true) String doctorId)throws Exception{
        Object object = baseDoctorService.queryById(doctorId);
            @RequestParam(value = "doctorId", required = true) String doctorId,
            @ApiParam(name = "typeCode", value = "分部,无不传")
            @RequestParam(value = "typeCode", required = false)String typeCode)throws Exception{
        Object object = baseDoctorService.queryById(doctorId,typeCode);
        if (null != object){
            return success("查询成功",object);
        }

文件差异内容过多而无法显示
+ 62 - 9
svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/consult/PatientConsultEndpoint.java


+ 25 - 0
svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/patient/PatientNoLoginEndPoint.java

@ -1,7 +1,10 @@
package com.yihu.jw.hospital.endpoint.patient;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.dict.service.BaseDictJobTitleService;
import com.yihu.jw.doctor.service.BaseDoctorService;
import com.yihu.jw.entity.base.dict.DictJobTitleDO;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
import com.yihu.jw.hospital.prescription.service.PrescriptionService;
import com.yihu.jw.hospital.service.consult.SysDictService;
import com.yihu.jw.im.service.ImService;
@ -48,6 +51,8 @@ public class PatientNoLoginEndPoint extends EnvelopRestEndpoint {
    private ImService imService;
    @Autowired
    private BaseDictJobTitleService baseDictJobTitleService;
    @Autowired
    private BaseDoctorService baseDoctorService;
@ -181,4 +186,24 @@ public class PatientNoLoginEndPoint extends EnvelopRestEndpoint {
    }
    @GetMapping(value = BaseHospitalRequestMapping.PatientNoLogin.findLevelOneDoctorUpcoming)
    @ApiOperation(value = "根据医生身份证查找互联网医院待办数量", notes = "根据医生身份证查找互联网医院待办数量")
    public ObjEnvelop findLevelOneDoctorUpcoming(@ApiParam(name = "doctor_idcard", value = "医生身份证")
                                                 @RequestParam(value = "doctor_idcard", required = true)String doctor_idcard){
        List<BaseDoctorDO> doctors = baseDoctorService.findByField("idcard",doctor_idcard);
        BaseDoctorDO doctor = null;
        JSONObject result = new JSONObject();
        if(!doctors.isEmpty()){
            doctor = doctors.get(0);
            //专家咨询
            Integer zjCount = imService.sessionCountByType(doctor.getId(),1,0);
            //全科医生求助专科
            Integer zjqzCount = imService.sessionCountByType(doctor.getId(),15,0);
            result.put("zjCount",zjCount+zjqzCount);//专家咨询数量
        }else{
            result.put("zjCount",0);//专家咨询数量
        }
        return success("请求成功",result);
    }
}

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

@ -635,4 +635,13 @@ FileTempPath:
testPattern:
  sign: 1
wlyy:
  url: http://www.xmtyw.cn/wlyytest/
  url: http://www.xmtyw.cn/wlyytest/
es:
  index:
    Statistics: hlw_quota_test
  type:
    Statistics: hlw_quota_test
  host:  http://172.16.100.240:9200
  tHost: 172.16.100.240:9300
  clusterName: jkzl
  securityUser: lion:jkzlehr