Sfoglia il codice sorgente

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

zdm 5 anni fa
parent
commit
133ea19179
28 ha cambiato i file con 324 aggiunte e 198 eliminazioni
  1. 31 1
      business/base-service/src/main/java/com/yihu/jw/hospital/prescription/service/PrescriptionService.java
  2. 3 3
      business/base-service/src/main/java/com/yihu/jw/patient/dao/BasePatientDao.java
  3. 38 4
      business/im-service/src/main/java/com/yihu/jw/im/service/ImService.java
  4. 14 0
      common/common-entity/src/main/java/com/yihu/jw/entity/base/doctor/BaseDoctorHospitalDO.java
  5. 0 58
      common/common-entity/src/main/java/com/yihu/jw/entity/base/patient/BasePatientDO.java
  6. 0 1
      common/common-util/src/main/java/com/yihu/jw/util/http/HttpClientUtil.java
  7. 2 1
      gateway/ag-basic/src/main/java/com/yihu/jw/gateway/filter/BasicZuulFilter.java
  8. 1 0
      gateway/ag-basic/src/main/java/com/yihu/jw/gateway/security/WebSecurityConfig.java
  9. 1 1
      gateway/ag-basic/src/main/resources/bootstrap.yml
  10. 62 21
      server/svr-authentication/src/main/java/com/yihu/jw/security/core/userdetails/jdbc/WlyyUserDetailsService.java
  11. 84 0
      server/svr-authentication/src/main/java/com/yihu/jw/security/model/PatientWechat.java
  12. 0 28
      server/svr-authentication/src/main/java/com/yihu/jw/security/model/WlyyUserDetails.java
  13. 1 1
      server/svr-authentication/src/main/java/com/yihu/jw/security/oauth2/provider/WlyyTokenGranter.java
  14. 15 5
      server/svr-authentication/src/main/resources/application.yml
  15. 6 41
      server/svr-authentication/src/main/resources/bootstrap.yml
  16. 3 3
      server/svr-configuration/src/main/resources/bootstrap.yml
  17. 1 1
      svr/svr-base/src/main/resources/bootstrap.yml
  18. 1 1
      svr/svr-internet-hospital-entrance/src/main/resources/bootstrap.yml
  19. 0 10
      svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/consult/DoctorConsultEndpoint.java
  20. 1 1
      svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/consult/PatientConsultEndpoint.java
  21. 5 9
      svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/expressage/ExpressageEndpoint.java
  22. 1 1
      svr/svr-internet-hospital/src/main/resources/bootstrap.yml
  23. BIN
      svr/svr-internet-hospital/src/main/resources/image/d-male.png
  24. BIN
      svr/svr-internet-hospital/src/main/resources/image/p-female.png
  25. 37 0
      svr/svr-iot/src/main/java/com/yihu/iot/service/analyzer/WlyyIotTzDict.java
  26. 10 0
      svr/svr-iot/src/main/java/com/yihu/iot/service/analyzer/WlyyIotTzDictDao.java
  27. 6 6
      svr/svr-patient/src/main/java/com/yihu/jw/patient/service/personal_Info/PatientService.java
  28. 1 1
      svr/svr-wlyy-specialist/src/main/resources/bootstrap.yml

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

@ -3,8 +3,10 @@ package com.yihu.jw.hospital.prescription.service;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.jw.dict.dao.DictHospitalDeptDao;
import com.yihu.jw.doctor.dao.BaseDoctorDao;
import com.yihu.jw.doctor.dao.BaseDoctorHospitalDao;
import com.yihu.jw.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.org.BaseOrgDO;
import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.entity.base.patient.PatientMedicareCardDO;
@ -35,6 +37,7 @@ 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;
@ -109,6 +112,8 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
    private WlyyHttpLogDao wlyyHttpLogDao;
    @Autowired
    private WlyyDoctorClinicRoomDao wlyyDoctorClinicRoomDao;
    @Autowired
    private BaseDoctorHospitalDao baseDoctorHospitalDao;
    
    @Value("${demo.flag}")
@ -1422,6 +1427,30 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
            rs.put("jobTitleName",doctorDO.getJobTitleName());
            rs.put("chargeType",doctorDO.getChargeType());
            rs.put("photo",doctorDO.getPhoto());
            //机构科室信息
            List<BaseDoctorHospitalDO> hospitalDOs =  baseDoctorHospitalDao.findByDoctorCode(doctorDO.getId());
            if(hospitalDOs!=null&&hospitalDOs.size()>0){
               rs.put("hospital",hospitalDOs.get(0));
            }else{
               rs.put("hospital",null);
            }
            String sql = "SELECT " +
                    " t. CODE AS roleCode, " +
                    " t. NAME AS roleName" +
                    " FROM " +
                    " base_doctor_role r " +
                    " JOIN base_doctor_role_dict t ON t.`code` = r.role_code " +
                    " WHERE " +
                    " r.doctor_code = '"+doctor+"'";
            List<Map<String,Object>> list = jdbcTemplate.queryForList(sql);
            if(list!=null&&list.size()>0){
                rs.put("roles",list);
            }else{
                rs.put("roles",null);
            }
        }
        return rs;
@ -1556,7 +1585,8 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
                "WHERE " +
                "room.patient_id=patient.id " +
                "AND room.outpatient_id=outpatient.id " +
                "AND room.doctor IS NULL " +
                "AND outpatient.status = 0 " +
                "AND (room.doctor IS NULL or room.doctor='"+doctor+"') " +
                "AND room.consult_type="+type;
        
        List<Map<String,Object>> list = jdbcTemplate.queryForList(sql);

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

@ -38,9 +38,9 @@ public interface BasePatientDao extends PagingAndSortingRepository<BasePatientDO
    @Query("from BasePatientDO p where p.mobile = ?1 and p.del=?2")
    List<BasePatientDO> findByMobileAndDel(String mobile,String del);
    @Modifying
    @Query(" update BasePatientDO a set a.openid=?2 where a.id=?1 ")
    int updateOpenId(String id, String openId);
//    @Modifying
//    @Query(" update BasePatientDO a set a.openid=?2 where a.id=?1 ")
//    int updateOpenId(String id, String openId);
    BasePatientDO findByIdAndDel(String id,String del);
}

+ 38 - 4
business/im-service/src/main/java/com/yihu/jw/im/service/ImService.java

@ -172,7 +172,7 @@ public class ImService {
				"AND a.patient= '" +patient+"' "+
				"AND b.to_doctor='" +doctor+"' "+
				"AND a.del='1' " +
				"AND a.type<> 8 " +
				"AND a.type<> 9 " +
				"AND a.`status`=0";
		
		List<Map<String, Object>> rstotal = jdbcTemplate.queryForList(totalSql);
@ -628,8 +628,9 @@ public class ImService {
		
		JSONObject users = new JSONObject();
		users.put(doctor,0);
		
		// 设置医生名称
		BaseDoctorDO baseDoctorDO = baseDoctorDao.findById(doctor);
		// 设置患者信息
		ct.setPatient(patient);
		// 查询患者信息
@ -655,9 +656,20 @@ public class ImService {
//		consult.setGuidance(ct.getGuidance());
		// 设置咨询标识
		ct.setConsult(consult.getId());
		// 设置医生CODE
		ct.setDoctor(doctor);
		// 设置医生名称
		ct.setDoctorName(baseDoctorDO.getName());
		
		JSONObject jsonObject = new JSONObject();
		jsonObject.put("title", tempPatient.getName() + "申请专家咨询");
		jsonObject.put("content",ct.getSymptoms());
		jsonObject.put("age",DateUtil.getAgeForIdcard(tempPatient.getIdcard()));
		jsonObject.put("sex",tempPatient.getSex());
		jsonObject.put("name",tempPatient.getName());
		
		//推送给IM去创建议题,取得成员消息
		JSONObject messages = imUtil.getCreateTopicMessage(patient, tempPatient.getName(), consult.getTitle(), consult.getSymptoms(), consult.getImages(), doctor);
		JSONObject messages = imUtil.getCreateTopicMessage(patient, tempPatient.getName(), consult.getTitle(), jsonObject.toJSONString(), consult.getImages(), doctor);
		users.put(patient, 0);//+ " "+(tempPatient.getSex()==1?"(男 ":"(女 ") + IdCardUtil.getAgeForIdcard(tempPatient.getIdcard())+")"
		JSONObject obj = imUtil.createTopics(patient + "_" + doctor + "_" + ct.getType(), consult.getId(), tempPatient.getName(), users, messages, imUtil.SESSION_TYPE_MUC);
		if (obj == null) {
@ -817,8 +829,16 @@ public class ImService {
			//1、获取his就诊记录详情(保存续方表、药品续方信息表、续方疾病类型表)
			WlyyOutpatientDO wlyyOutpatientDO = outpatientDao.findOne(outpatientCode);
			
			if(!"0".equals(wlyyOutpatientDO.getStatus())){
				throw new RuntimeException("该就诊记录已被取消,无法接单!");
			}
			
			JSONObject jsonObject = new JSONObject();
			jsonObject.put("title", p.getName() + "申请复诊");
			jsonObject.put("content",wlyyOutpatientDO.getDescription());
			jsonObject.put("age",DateUtil.getAgeForIdcard(p.getIdcard()));
			jsonObject.put("sex",p.getSex());
			jsonObject.put("name",p.getName());
			
			
			String content = jsonObject.toString();
@ -834,6 +854,7 @@ public class ImService {
			ct.setDoctorName(doctor.getName());
			// 设置患者信息
			ct.setPatient(patient);
			ct.setSymptoms(wlyyOutpatientDO.getDescription());
//			if (1 == type) {
//				ct.setSymptoms("高血压");
//			} else if (2 == type) {
@ -868,7 +889,7 @@ public class ImService {
			ct.setConsult(consult.getId());
			
			//推送给IM去创建议题,取得成员消息
			JSONObject messages = imUtil.getCreateTopicMessage(doctorCode, doctor.getName(), consult.getTitle(), content, consult.getImages(), patient);
			JSONObject messages = imUtil.getCreateTopicMessage(patient, p.getName(), consult.getTitle(), content, consult.getImages(), doctorCode);
			
			//5、(im创建咨询) 续方咨询的sessionid为居民code+就诊code+咨询类型(图文,视频,图文+视频)
			String sessionId = patient + "_" + outpatientCode + "_" + ct.getType();
@ -905,6 +926,10 @@ public class ImService {
			
			JSONObject result = imUtil.getSingleSessionInfo(sessionId,doctorCode);
			
			wlyyOutpatientDO.setStatus("1");//修改就诊记录为就诊中
			wlyyOutpatientDO.setConDate(new Date());
			outpatientDao.save(wlyyOutpatientDO);
			
			return result;
		}
	}
@ -996,6 +1021,15 @@ public class ImService {
		consultTeam.setStatus(1);
		consultDao.save(cons);
		consultTeamDao.save(consultTeam);
		
		//判断是否是在线复诊
		if(cons.getRelationCode() != null){
			WlyyOutpatientDO wlyyOutpatientDO = outpatientDao.findOne(cons.getRelationCode());
			if(wlyyOutpatientDO != null && wlyyOutpatientDO.getId() != null){
				wlyyOutpatientDO.setStatus("2");
			}
		}
		return 1;
	}
	

+ 14 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/base/doctor/BaseDoctorHospitalDO.java

@ -36,6 +36,11 @@ public class BaseDoctorHospitalDO extends IntegerIdentityEntity {
     */
    private String deptCode;
    /**
     * 医生所在机构部门标识
     */
    private String deptName;
    /**
     * 职务代码
     */
@ -101,6 +106,15 @@ public class BaseDoctorHospitalDO extends IntegerIdentityEntity {
        this.deptCode = deptCode;
    }
    @Column(name = "dept_name")
    public String getDeptName() {
        return deptName;
    }
    public void setDeptName(String deptName) {
        this.deptName = deptName;
    }
    public String getDoctorDutyCode() {
        return doctorDutyCode;
    }

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

@ -175,23 +175,6 @@ public class BasePatientDO extends UuidIdentityEntityWithOperator {
     */
    private String recordAmount;
    /**
     * 微信编号
     */
    private String openid;
    /**
     * i健康微信编号
     */
    private String ihealthOpenid;
    /**
     * i健康微信编号添加时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    private Date ihealthOpenidTime;
    /**
     * 用户状态:1正常,0禁用,-1恶意注册,2审核中
     */
@ -202,12 +185,6 @@ public class BasePatientDO extends UuidIdentityEntityWithOperator {
     */
    private String mobileRemarks;
    /**
     * 第一次添加open的时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    private Date openidTime;
    /**
     * 绑定电子社保卡主体(共济为操作人code,医社保关联patient_medicare_card)
     */
@ -458,15 +435,6 @@ public class BasePatientDO extends UuidIdentityEntityWithOperator {
        this.recordAmount = recordAmount;
    }
    @Column(name = "openid")
    public String getOpenid() {
        return openid;
    }
    public void setOpenid(String openid) {
        this.openid = openid;
    }
    @Column(name = "patient_status")
    public String getPatientStatus() {
        return patientStatus;
@ -485,15 +453,6 @@ public class BasePatientDO extends UuidIdentityEntityWithOperator {
        this.mobileRemarks = mobileRemarks;
    }
    @Column(name = "openid_time")
    public Date getOpenidTime() {
        return openidTime;
    }
    public void setOpenidTime(Date openidTime) {
        this.openidTime = openidTime;
    }
    @Column(name = "principal_code")
    public String getPrincipalCode() {
        return principalCode;
@ -645,21 +604,4 @@ public class BasePatientDO extends UuidIdentityEntityWithOperator {
        this.loginDate = loginDate;
    }
    @Column(name = "ihealth_openid")
    public String getIhealthOpenid() {
        return ihealthOpenid;
    }
    public void setIhealthOpenid(String ihealthOpenid) {
        this.ihealthOpenid = ihealthOpenid;
    }
    @Column(name = "ihealth_openid_time")
    public Date getIhealthOpenidTime() {
        return ihealthOpenidTime;
    }
    public void setIhealthOpenidTime(Date ihealthOpenidTime) {
        this.ihealthOpenidTime = ihealthOpenidTime;
    }
}

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

@ -12,7 +12,6 @@ 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.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Component;

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

@ -69,7 +69,8 @@ public class BasicZuulFilter extends ZuulFilter {
                || url.contains("/basePatient/sendCaptcha")//发送短信
                || url.contains("/sms_gateway/send")//发送短信
                || url.contains("/accountAppeal/create")
                || url.contains("/open/")) {//开发接口
                || url.contains("/open/")//开放接口
                || url.contains("/image/")) {//获取默认图片
            return true;
        }
        return this.authenticate(ctx, request, url);

+ 1 - 0
gateway/ag-basic/src/main/java/com/yihu/jw/gateway/security/WebSecurityConfig.java

@ -6,6 +6,7 @@ import org.springframework.core.annotation.Order;
import org.springframework.security.config.annotation.web.builders.WebSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.transaction.annotation.Transactional;
/**
 * Created by progr1mmer on 2017/9/27.

+ 1 - 1
gateway/ag-basic/src/main/resources/bootstrap.yml

@ -40,4 +40,4 @@ spring:
  cloud:
    config:
      uri: ${wlyy.pring.config.uri:http://192.0.33.26:1221}
      label: ${wlyy.spring.config.label:jwprod}
      label: ${wlyy.spring.config.label:master}

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

@ -23,11 +23,13 @@ import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.security.oauth2.common.OAuth2AccessToken;
import org.springframework.security.oauth2.provider.ClientDetails;
import org.springframework.security.oauth2.provider.ClientDetailsService;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
import javax.sql.DataSource;
import java.security.KeyPair;
import java.sql.Timestamp;
import java.util.*;
import java.util.concurrent.TimeUnit;
@ -43,13 +45,16 @@ public class WlyyUserDetailsService extends JdbcDaoSupport implements UserDetail
    private static final String DEFAULT_DOCTOR_DETAILS_STATEMENT = "SELECT * FROM base_doctor d WHERE d.mobile = ? OR d.idcard = ?";
    private static final String DEFAULT_PATIENT_DETAILS_STATEMENT = "SELECT * FROM base_patient p WHERE p.mobile = ? OR p.idcard = ?";
    private static final String DEFAULT_PATIENT_DETAILS_ID_STATEMENT = "SELECT * FROM base_patient p WHERE p.id = ? ";
    private static final String DEFAULT_PATIENT_DETAILS_IDCARD_STATEMENT = "SELECT * FROM base_patient p WHERE p.idcard = ? ";
    private static final String DEFAULT_PATIENT_INSERT_STATEMENT =
            "INSERT into base_patient (`id`,`ihealth_openid`,`ihealth_openid_time`,`idcard`,`password`,`salt`,`name`,`birthday`,`sex`,`mobile`," +
            "INSERT into base_patient (`id`,`photo`,`idcard`,`password`,`salt`,`name`,`birthday`,`sex`,`mobile`," +
                    "`province_code`,`province_name`,`city_code`,`city_name`,`town_code`,`town_name`,`street_code`,`street_name`,`address`," +
                    "`del`,`locked`,`enabled`,`login_failure_count`,`login_date`) " +
                    " values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
                    " values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
    private static final String PATIENT_INSERT_WEHCAT = "insert into base_patient_wechat (`id`,`wechat_id`,`patient_id`,`openid`,`create_time`) values(?,?,?,?,?)";
    private static final String BespeakRegist = "bespeakRegist:";
@ -112,7 +117,7 @@ public class WlyyUserDetailsService extends JdbcDaoSupport implements UserDetail
        } else if ("2".equals(loginType)) {//2.为医生账号
            //解除锁定
            this.getJdbcTemplate().update("update base_doctor d set d.login_failure_count = 0, d.locked = 0 where d.mobile = ? or d.idcard = ?", username, username);
        } else if ("3".equals(loginType)) { //3.患者账号
        } else if ("3".equals(loginType) || "4".equals(loginType)) { //3.患者账号
            //解除锁定
            this.getJdbcTemplate().update("update base_patient p set p.login_failure_count = 5, p.locked = 0 where p.mobile = ? or p.idcard = ?", username, username);
        } //...
@ -126,6 +131,7 @@ public class WlyyUserDetailsService extends JdbcDaoSupport implements UserDetail
     * @param username
     * @return
     */
    @Transactional
    public List<WlyyUserDetails> getWlyyUserDetails(String username) {
        String loginType = getLogintype();
@ -150,7 +156,7 @@ public class WlyyUserDetailsService extends JdbcDaoSupport implements UserDetail
            users = this.getJdbcTemplate().query(DEFAULT_PATIENT_DETAILS_STATEMENT, new BeanPropertyRowMapper(WlyyUserDetails.class), username, username);
            // 去i健康查询用户
        }else if("4".equals(loginType)){
            users = this.getJdbcTemplate().query(DEFAULT_PATIENT_DETAILS_ID_STATEMENT, new BeanPropertyRowMapper(WlyyUserDetails.class), username);
            users = this.getJdbcTemplate().query(DEFAULT_PATIENT_DETAILS_IDCARD_STATEMENT, new BeanPropertyRowMapper(WlyyUserDetails.class), getIdcard());
            if ((null == users || users.size() == 0) && "4".equals(loginType)) {
                List<NameValuePair> params = new ArrayList<>();
@ -163,7 +169,7 @@ public class WlyyUserDetailsService extends JdbcDaoSupport implements UserDetail
                try{
                    res = httpClientUtil.post(iHealthUserInfoUrl, params, "UTF-8");
                }catch (Exception e){
                    logger.error("远程请求i健康用户信息异常败:" + e.getMessage());
                    logger.error("远程请求i健康用户信息异常:" + e.getMessage());
                    return users;
                }
                if(null == res){
@ -177,8 +183,7 @@ public class WlyyUserDetailsService extends JdbcDaoSupport implements UserDetail
                try {
                    this.getJdbcTemplate().update(DEFAULT_PATIENT_INSERT_STATEMENT,
                            new Object[]{patient.getString("code"),
                                    patient.getString("openid"),
                                    new Date(),
                                    patient.getString("photo"),
                                    patient.getString("idcard"),
                                    patient.getString("password"),
                                    patient.getString("salt"),
@ -203,7 +208,22 @@ public class WlyyUserDetailsService extends JdbcDaoSupport implements UserDetail
                            }
                    );
                }catch (Exception e){
                    e.printStackTrace();
                    logger.error("将i健康居民数据同步到互联网医院居民表失败:" + e.getMessage());
                    return users;
                }
                try {
                    this.getJdbcTemplate().update(PATIENT_INSERT_WEHCAT,
                            new Object[]{
                                    UUID.randomUUID().toString(),
                                    getWechatId(),
                                    patient.getString("code"),
                                    getOpenid(),
                                    new Date()
                            }
                    );
                }catch (Exception e){
                    logger.error("将i健康居民微信openid数据同步到互联网医院居民微信关联表失败:" + e.getMessage());
                    return users;
                }
                WlyyUserDetails user = new WlyyUserDetails();
@ -367,7 +387,7 @@ public class WlyyUserDetailsService extends JdbcDaoSupport implements UserDetail
        } else if("4".equals(loginType)){
            //更新登录时间
            this.getJdbcTemplate().update("update base_patient p set p.login_failure_count = 0, p.login_date = ? where p.mobile = ? or p.idcard = ?", new Date(), username, username);
            users = this.getJdbcTemplate().query(DEFAULT_PATIENT_DETAILS_ID_STATEMENT, new BeanPropertyRowMapper(WlyyUserSimple.class), username);
            users = this.getJdbcTemplate().query(DEFAULT_PATIENT_DETAILS_IDCARD_STATEMENT, new BeanPropertyRowMapper(WlyyUserSimple.class), getIdcard());
        }
        return users;
@ -402,7 +422,7 @@ public class WlyyUserDetailsService extends JdbcDaoSupport implements UserDetail
    }
    /**
     * 获取i健康用户登录openid型
     * 获取用户登录的clientId
     *
     * @return
     */
@ -415,23 +435,44 @@ public class WlyyUserDetailsService extends JdbcDaoSupport implements UserDetail
        return clientId;
    }
    /**
     * 获取用户登录的wechatId
     *
     * @return
     */
    public String getWechatId() {
    public boolean setRolePhth(String loginType, OAuth2AccessToken token, String id, StringRedisTemplate redisTemplate) {
        HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
        if (org.apache.commons.lang.StringUtils.isBlank(loginType) || "1".equals(loginType)) { //1或默认查找user表,为平台管理员账号
            String key = "wlyy2:auth:token:" + token.getValue();
            redisTemplate.opsForValue().set(key, "/**");
            redisTemplate.expire(key, token.getExpiresIn(), TimeUnit.SECONDS);
        } else if ("2".equals(loginType)) {//2.为医生账号
        String wechatId = request.getParameter("wechat_id");
        } else if ("3".equals(loginType) || "4".equals(loginType)) { //3.患者账号
        return wechatId;
    }
  /**
     * 获取用户登录的idcard
     *
     * @return
     */
    public String getIdcard() {
        HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
        KeyPair keyPair = (KeyPair) request.getSession().getAttribute("privateKey");
        String idcard = com.yihu.jw.security.utils.RSAUtils.decryptBase64(request.getParameter("idcard"), keyPair);
        return idcard;
    }
    public boolean setRolePhth(String loginType, OAuth2AccessToken token, String id, StringRedisTemplate redisTemplate) {
        if (org.apache.commons.lang.StringUtils.isBlank(loginType) || "1".equals(loginType) || "2".equals(loginType) || "3".equals(loginType) || "4".equals(loginType)) { //1或默认查找user表,为平台管理员账号
            String key = "wlyy2:auth:token:" + token.getValue();
            redisTemplate.opsForValue().set(key, "/**");
            redisTemplate.expire(key, token.getExpiresIn(), TimeUnit.SECONDS);
        } else {
            return false;
            return true;
        }
        return true;
        return false;
    }
    public void updateOpenId(String openid, String userId) {

+ 84 - 0
server/svr-authentication/src/main/java/com/yihu/jw/security/model/PatientWechat.java

@ -0,0 +1,84 @@
package com.yihu.jw.security.model;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.io.Serializable;
import java.util.Date;
/**
 * Model - 居民微信openid
 * Created by lith on 2019/7/3.
 */
public class PatientWechat implements Serializable {
    private String id; //对应患者,医生等表中的id字段
    //用户名
    private String saasId;
    //姓名
    private String name;
    //身份证号码
    private String wechatId;
    //手机号码
    private String openid;
    //patient_id
    private String unionid;
    //最后登陆时间
    private Date createTime;
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getSaasId() {
        return saasId;
    }
    public void setSaasId(String saasId) {
        this.saasId = saasId;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getWechatId() {
        return wechatId;
    }
    public void setWechatId(String wechatId) {
        this.wechatId = wechatId;
    }
    public String getOpenid() {
        return openid;
    }
    public void setOpenid(String openid) {
        this.openid = openid;
    }
    public String getUnionid() {
        return unionid;
    }
    public void setUnionid(String unionid) {
        this.unionid = unionid;
    }
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
}

+ 0 - 28
server/svr-authentication/src/main/java/com/yihu/jw/security/model/WlyyUserDetails.java

@ -115,17 +115,6 @@ public class WlyyUserDetails implements Serializable {
    private String address;
    /**
     * i健康微信编号
     */
    private String ihealthOpenid;
    /**
     * i健康微信编号添加时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    private Date ihealthOpenidTime;
    public Date getBirthday() {
        return birthday;
@ -199,23 +188,6 @@ public class WlyyUserDetails implements Serializable {
        this.streetName = streetName;
    }
    public String getIhealthOpenid() {
        return ihealthOpenid;
    }
    public void setIhealthOpenid(String ihealthOpenid) {
        this.ihealthOpenid = ihealthOpenid;
    }
    public Date getIhealthOpenidTime() {
        return ihealthOpenidTime;
    }
    public void setIhealthOpenidTime(Date ihealthOpenidTime) {
        this.ihealthOpenidTime = ihealthOpenidTime;
    }
    public String getId() {
        return id;
    }

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

@ -63,7 +63,7 @@ public class WlyyTokenGranter implements TokenGranter {
                        requestFactory
                ));
        tokenGranters.put(WlyyImplicitTokenGranter.GRANT_TYPE,
            tokenGranters.put(WlyyImplicitTokenGranter.GRANT_TYPE,
                new WlyyImplicitTokenGranter(
                        tokenServices,
                        clientDetailsService,

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

@ -1,6 +1,7 @@
server:
  port: 10260
spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
@ -22,22 +23,23 @@ user:
  reflashFailedCountTime: 5 #将失败次数重置为0
  tryLoginTimes: 5 #失败重试次数
---
spring:
  profiles: jwdev
  ##发现服务
  datasource:
    url: jdbc:mysql://172.26.0.114/base?useUnicode:true&characterEncoding=utf-8&autoReconnect=true
    username: root
    password: jkzlehr
    username: ssgg
    password: ssgg@jkzl2019
  redis:
    host: 172.26.0.253 # Redis server host.
    port: 6379 # Redis server port.
#    password: jkzl_ehr
# i健康用户信息接口,开放出来给互联网医院登录同步用户信息用
iHealth:
  user-info-uri: http://ehr.yihu.com/wlyy/iHealth/userInfo
zhongshanHospital:
  user-info-uri: http://laptop-u738dn2p:10023/mqsdk/getUserInfoByOpenid
---
spring:
  profiles: jwtest
@ -48,9 +50,13 @@ spring:
  redis:
    host: 172.26.0.253 # Redis server host.
    port: 6379 # Redis server port.
  ##发现服务
## i健康用户信息接口,开放出来给互联网医院登录同步用户信息用
iHealth:
  user-info-uri: http://ehr.yihu.com/wlyy/iHealth/userInfo
zhongshanHospital:
  user-info-uri: http://laptop-u738dn2p:10023/mqsdk/getUserInfoByOpenid
---
spring:
  profiles: jwprod
@ -62,5 +68,9 @@ spring:
    host: 192.0.33.26 # Redis server host.
    port: 6390 # Redis server port.
    password: Kb6wKDQP1W4
  ##发现服务
iHealth:
  user-info-uri: http://ehr.yihu.com/wlyy/iHealth/userInfo
  user-info-uri: http://ehr.yihu.com/wlyy/iHealth/userInfo
zhongshanHospital:
  user-info-uri: http://laptop-u738dn2p:10023/mqsdk/getUserInfoByOpenid

+ 6 - 41
server/svr-authentication/src/main/resources/bootstrap.yml

@ -12,54 +12,19 @@ spring:
  profiles: jwdev
  cloud:
    config:
      discovery:
        enabled: true
        service-id: svr-configuration
##发现服务
eureka:
  client:
    healthcheck:
      enabled: true #监控检查
    serviceUrl:
      defaultZone: http://jw:jkzl@172.26.0.107:8761/eureka/
  instance:
    prefer-ip-address: false
    instance-id: ${spring.cloud.client.ipAddress}:${server.port}
      uri: ${wlyy.spring.config.uri:http://172.26.0.107:1221}
      label: ${wlyy.spring.config.label:jwdev}
---
spring:
  profiles: jwtest
  cloud:
    config:
      discovery:
        enabled: true
        service-id: svr-configuration
##发现服务
eureka:
  client:
    healthcheck:
      enabled: true #监控检查
    serviceUrl:
      defaultZone: http://jw:jkzl@172.26.0.107:8761/eureka/
  instance:
    prefer-ip-address: false
    instance-id: ${spring.cloud.client.ipAddress}:${server.port}
      uri: ${wlyy.spring.config.uri:http://172.26.0.107:1221}
      label: ${wlyy.spring.config.label:jwdev}
---
spring:
  profiles: jwprod
  cloud:
    config:
      discovery:
        enabled: true
        service-id: svr-configuration
##发现服务
eureka:
  client:
    healthcheck:
      enabled: true #监控检查
    serviceUrl:
      defaultZone: http://jw:jkzl@192.0.33.26:8761/eureka/
  instance:
    prefer-ip-address: false
    instance-id: ${spring.cloud.client.ipAddress}:${server.port}
      uri: ${wlyy.spring.config.uri:http://192.0.33.26:1221}
      label: ${wlyy.spring.config.label:master}

+ 3 - 3
server/svr-configuration/src/main/resources/bootstrap.yml

@ -29,16 +29,16 @@ spring:
---
spring:
  profiles: prod
  profiles: jwprod
##git配置
  cloud:
    config:
      failFast: true #启动快速失败 即链接不到配置服务就启动失败
      server:
        git:
          uri: ${wlyy.spring.config.git.uri:http://192.168.120.153:3000/Amoy2/wlyy2.0.config.git}
          uri: ${wlyy.spring.config.git.uri:http://192.0.33.26:3000/jkzl/wlyy2.0.config.git}
          basedir: /usr/local/wlyy2.0-config
        default-label: ${wlyy.spring.config.git.label:prod}
        default-label: ${wlyy.spring.config.git.label:master}
---
spring:

+ 1 - 1
svr/svr-base/src/main/resources/bootstrap.yml

@ -29,7 +29,7 @@ spring:
  cloud:
    config:
      uri: ${wlyy.spring.config.uri:http://192.0.33.26:1221}
      label: ${wlyy.spring.config.label:prod}
      label: ${wlyy.spring.config.label:master}
---
spring:

+ 1 - 1
svr/svr-internet-hospital-entrance/src/main/resources/bootstrap.yml

@ -29,7 +29,7 @@ spring:
  cloud:
    config:
      uri: ${wlyy.spring.config.uri:http://192.0.33.26:1221}
      label: ${wlyy.spring.config.label:prod}
      label: ${wlyy.spring.config.label:master}
---
spring:

+ 0 - 10
svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/consult/DoctorConsultEndpoint.java

@ -1,7 +1,5 @@
package com.yihu.jw.hospital.endpoint.consult;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.entity.base.im.ConsultTeamDo;
import com.yihu.jw.hospital.prescription.service.PrescriptionService;
@ -13,17 +11,9 @@ import com.yihu.jw.rm.hospital.BaseHospitalRequestMapping;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
/**
 * @author huangwenjie
 */

+ 1 - 1
svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/consult/PatientConsultEndpoint.java

@ -211,7 +211,7 @@ public class PatientConsultEndpoint extends EnvelopRestEndpoint {
		System.out.println("symptoms="+symptoms);
		
		if (type == null) {
			type = 13;
			type = 1;
		}
//		if (type != 1 && type != 2) {
//			return error(-1, "无效请求!");

+ 5 - 9
svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/expressage/ExpressageEndpoint.java

@ -131,10 +131,6 @@ public class ExpressageEndpoint extends EnvelopRestEndpoint {
                    return success("顺丰快递下单成功!");
                }else{
                    //如果该处方的快递单号未生成,则继续下单
                    //由于下单前已经判断过是否派送,这里不再重复判断----huangwenjie-2017.08.04
                    //先判断地址是否可派送boolean delivery = sfexpressService.getSFOrderFilterService(sfexpress_obj.getProvinceName()+sfexpress_obj.getCityName()+sfexpress_obj.getTownName()+sfexpress_obj.getAddress());
                    //根据业务订单号判断是否已经下单成功
                    boolean go_on = sfexpressService.sfOrderSearchService(sfexpress_obj);
@ -145,7 +141,7 @@ public class ExpressageEndpoint extends EnvelopRestEndpoint {
                        //保存快递单号和增加处方物流记录为配送
                        sfexpressService.updatePrescriptionExpressage(sfexpress_obj);
                    }
                    return success("顺丰快递下单成功!");
                    return success(sfexpress_obj);
                }
            }
        }catch (Exception e){
@ -160,9 +156,9 @@ public class ExpressageEndpoint extends EnvelopRestEndpoint {
    public Envelop SFGetOrderInfo(
            @ApiParam(name="outpatientId", value="门诊编号") @RequestParam(value = "outpatientId",required = true) String outpatientId){
        try {
            List<WlyyPrescriptionExpressageDO> expressageDOList = sfexpressService.findByField("outpaitentId",outpatientId);
            List<WlyyPrescriptionExpressageDO> expressageDOList = sfexpressService.findByField("outpatientId",outpatientId);
            if(CollectionUtils.isEmpty(expressageDOList)){
                return failed( "查询失败,");
                return failed( "当前门诊不存在快递信息");
            }
            WlyyPrescriptionExpressageDO sfexpress_obj = expressageDOList.get(0);
            return success(sfexpress_obj);
@ -176,9 +172,9 @@ public class ExpressageEndpoint extends EnvelopRestEndpoint {
    @ApiOperation("通过门诊编号查询顺丰快递是否下单成功")
    public Envelop SFOrderSearchService(
            @ApiParam(name="outpatientId", value="门诊编号") @RequestParam(value = "outpatientId",required = true) String outpatientId){
        List<WlyyPrescriptionExpressageDO> expressageDOList = sfexpressService.findByField("outpaitentId",outpatientId);
        List<WlyyPrescriptionExpressageDO> expressageDOList = sfexpressService.findByField("outpatientId",outpatientId);
        if(CollectionUtils.isEmpty(expressageDOList)){
            return failed( "查询失败,");
            return failed( "当前门诊没有顺丰快递信息");
        }
        try {
            WlyyPrescriptionExpressageDO sfexpress_obj = expressageDOList.get(0);

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

@ -29,7 +29,7 @@ spring:
  cloud:
    config:
      uri: ${wlyy.spring.config.uri:http://192.0.33.26:1221}
      label: ${wlyy.spring.config.label:prod}
      label: ${wlyy.spring.config.label:master}
---
spring:

BIN
svr/svr-internet-hospital/src/main/resources/image/d-male.png


BIN
svr/svr-internet-hospital/src/main/resources/image/p-female.png


+ 37 - 0
svr/svr-iot/src/main/java/com/yihu/iot/service/analyzer/WlyyIotTzDict.java

@ -0,0 +1,37 @@
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_tz_dict")
public class WlyyIotTzDict extends UuidIdentityEntity implements Serializable {
    @Column(name = "code")
    private String code;
    @Column(name = "name")
    private String name;
    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;
    }
}

+ 10 - 0
svr/svr-iot/src/main/java/com/yihu/iot/service/analyzer/WlyyIotTzDictDao.java

@ -0,0 +1,10 @@
package com.yihu.iot.service.analyzer;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
public interface WlyyIotTzDictDao extends PagingAndSortingRepository<WlyyIotTzDict, String>, JpaSpecificationExecutor<WlyyIotTzDict>  {
}

+ 6 - 6
svr/svr-patient/src/main/java/com/yihu/jw/patient/service/personal_Info/PatientService.java

@ -99,8 +99,8 @@ public class PatientService extends BasePatientService<BasePatientDO, BasePatien
                patient.setPassword(MD5.md5Hex(password + "{" + patient.getSalt() + "}"));
            }
            if (!"undefined".equals(openid) && StringUtils.isNotBlank(openid)) {
                patient.setOpenid(openid);
                patient.setOpenidTime(new Date());
//                patient.setOpenid(openid);
//                patient.setOpenidTime(new Date());
            }
            patient.setMobile(mobile);
            patient.setLocked(0);
@ -304,10 +304,10 @@ public class PatientService extends BasePatientService<BasePatientDO, BasePatien
    }
    @Transactional(rollbackFor = Exception.class)
    public int updateOpenId(String id, String openId) {
        return basePatientDao.updateOpenId(id, openId);
    }
//    @Transactional(rollbackFor = Exception.class)
//    public int updateOpenId(String id, String openId) {
//        return basePatientDao.updateOpenId(id, openId);
//    }
    /**

+ 1 - 1
svr/svr-wlyy-specialist/src/main/resources/bootstrap.yml

@ -1,6 +1,6 @@
spring:
  application:
    name: svr-wlyy-specialist-lyx
    name: svr-wlyy-specialist
  cloud:
    config:
      failFast: true