Procházet zdrojové kódy

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

Conflicts:
	svr/svr-patient/src/main/java/com/yihu/jw/patient/service/myFamily/MyFamilyService.java
liuwenbin před 6 roky
rodič
revize
9c4e192211
30 změnil soubory, kde provedl 706 přidání a 378 odebrání
  1. 15 0
      business/base-service/src/main/java/com/yihu/jw/label/PatientLabelDao.java
  2. 0 121
      business/base-service/src/main/java/com/yihu/jw/utils/PinYinUtil.java
  3. 13 0
      business/base-service/src/main/java/com/yihu/jw/wechat/dao/WxUrlConfigDao.java
  4. 65 0
      business/base-service/src/main/java/com/yihu/jw/wechat/service/WxUrlConfigService.java
  5. 78 0
      common/common-entity/src/main/java/com/yihu/jw/entity/base/label/PatientLabelDO.java
  6. 19 4
      common/common-entity/src/main/java/com/yihu/jw/entity/base/patient/PatientMedicareCardDO.java
  7. 33 0
      common/common-entity/src/main/java/com/yihu/jw/entity/base/wx/WxUrlConfigDO.java
  8. 2 0
      common/common-request-mapping/src/main/java/com/yihu/jw/rm/base/BaseRequestMapping.java
  9. 9 1
      common/common-request-mapping/src/main/java/com/yihu/jw/rm/patient/PatientRequestMapping.java
  10. 74 0
      common/common-rest-model/src/main/java/com/yihu/jw/restmodel/base/label/BasePatientLabelVO.java
  11. 8 15
      common/common-rest-model/src/main/java/com/yihu/jw/restmodel/base/patient/PatientMedicareCardVO.java
  12. 10 0
      common/common-rest-model/src/main/java/com/yihu/jw/restmodel/patient/signPackage/ServicePackageVO.java
  13. 1 2
      gateway/ag-basic/src/main/java/com/yihu/jw/gateway/filter/BasicZuulFilter.java
  14. 2 2
      gateway/ag-basic/src/main/resources/application.yml
  15. 1 1
      gateway/ag-basic/src/main/resources/bootstrap.yml
  16. 1 1
      server/svr-authentication/src/main/resources/bootstrap.yml
  17. 0 31
      svr/svr-base/src/main/java/com/yihu/jw/base/dao/wx/WechatDao.java
  18. 0 17
      svr/svr-base/src/main/java/com/yihu/jw/base/dao/wx/WxAccessTokenDao.java
  19. 0 19
      svr/svr-base/src/main/java/com/yihu/jw/base/dao/wx/WxTemplateConfigDao.java
  20. 0 26
      svr/svr-base/src/main/java/com/yihu/jw/base/dao/wx/WxTemplateDao.java
  21. 18 0
      svr/svr-patient/src/main/java/com/yihu/jw/patient/endpoint/config/UrlconfigEndPoint.java
  22. 18 13
      svr/svr-patient/src/main/java/com/yihu/jw/patient/endpoint/personal_info/PatientMedicareCardEndpoint.java
  23. 40 1
      svr/svr-patient/src/main/java/com/yihu/jw/patient/endpoint/servicepackage/PackageServiceEndpoint.java
  24. 21 2
      svr/svr-patient/src/main/java/com/yihu/jw/patient/endpoint/wechat/WechatInfoEndPoint.java
  25. 1 1
      svr/svr-patient/src/main/java/com/yihu/jw/patient/service/message/MyDoctorListService.java
  26. 2 2
      svr/svr-patient/src/main/java/com/yihu/jw/patient/service/myFamily/MyFamilyService.java
  27. 56 27
      svr/svr-patient/src/main/java/com/yihu/jw/patient/service/personal_Info/PatientMedicareCardService.java
  28. 70 1
      svr/svr-patient/src/main/java/com/yihu/jw/patient/service/servicepackage/PackageService.java
  29. 148 90
      svr/svr-patient/src/main/java/com/yihu/jw/patient/util/PinYinUtil.java
  30. 1 1
      svr/svr-patient/src/main/resources/bootstrap.yml

+ 15 - 0
business/base-service/src/main/java/com/yihu/jw/label/PatientLabelDao.java

@ -0,0 +1,15 @@
package com.yihu.jw.label;
import com.yihu.jw.entity.base.label.PatientLabelDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
/**
 * Created by Trick on 2018/12/7.
 */
public interface PatientLabelDao extends PagingAndSortingRepository<PatientLabelDO, String>, JpaSpecificationExecutor<PatientLabelDO> {
    public List<PatientLabelDO> findByLabelTypeAndStatus(String labelType,Integer status);
}

+ 0 - 121
business/base-service/src/main/java/com/yihu/jw/utils/PinYinUtil.java

@ -1,121 +0,0 @@
package com.yihu.jw.utils;
import net.sourceforge.pinyin4j.PinyinHelper;
import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
public class PinYinUtil {
	/** 
     * 获取汉字串拼音首字母,英文字符不变 
     * @param chinese 汉字串 
     * @return 汉语拼音首字母 
     */ 
    public static String getFirstSpell(String chinese) { 
        StringBuffer pybf = new StringBuffer();
        char[] arr = chinese.toCharArray();
        HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
        defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
        defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
            for (int i = 0; i < arr.length; i++) {
                    if (arr[i] > 128) {
                            try {
                                    String[] temp = PinyinHelper.toHanyuPinyinStringArray(arr[i], defaultFormat);
                                    if (temp != null) {
                                            pybf.append(temp[0].charAt(0));
                                    }
                            } catch (BadHanyuPinyinOutputFormatCombination e) {
                                    e.printStackTrace();
                            }
                    } else {
                            pybf.append(arr[i]);
                    }
            }
            return pybf.toString().replaceAll("\\W", "").trim();
    } 
    /** 
     * 获取汉字串拼音,英文字符不变 
     * @param chinese 汉字串 
     * @return 汉语拼音 
     */ 
    public static String getFullSpell(String chinese) { 
            StringBuffer pybf = new StringBuffer(); 
            char[] arr = chinese.toCharArray(); 
            HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat(); 
            defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE); 
            defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE); 
            for (int i = 0; i < arr.length; i++) { 
                    if (arr[i] > 128) { 
                            try { 
                                    pybf.append(PinyinHelper.toHanyuPinyinStringArray(arr[i], defaultFormat)[0]); 
                            } catch (BadHanyuPinyinOutputFormatCombination e) { 
                                    e.printStackTrace(); 
                            } 
                    } else { 
                            pybf.append(arr[i]); 
                    } 
            } 
            return pybf.toString(); 
    }
    /**
     * 字符串按拼音排序
     * @param list
     * @return
     */
    public static Map<String,List<Object>> pingYinSortByString(List<String> list){
            Map<String,List<Object>>  map =  new LinkedHashMap<>();
            String[] alphatables = {"a", "b", "c", "d", "e", "f", "g", "h", "i",
                    "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"};
            for (String alpha : alphatables){
                    for(String one:list){
                            String firstSpell = PinYinUtil.getFirstSpell(one).substring(0,1);
                            if (alpha.equals(firstSpell)){
                                    List<Object> resultList = null;
                                    if(map.get(alpha)==null){
                                            resultList = new ArrayList();
                                    }else{
                                            resultList = map.get(alpha);
                                    }
                                    resultList.add(one);
                                    map.put(alpha,resultList);
                            }
                    }
            }
            return map;
    }
    /**
    * 字符串按拼音排序
    * @param
    * @return
    */
    public static Map<String,Object> pingYinSort(List<Map<String,Object>> result){
            Map<String,Object>  map =  new LinkedHashMap <>();
            String[] alphatables = {"a", "b", "c", "d", "e", "f", "g", "h", "i",
                    "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"};
            if (result.size() > 0) {
                    for (String alpha : alphatables){
                            List<Map<String,Object>> resultList = new ArrayList<>();
                            for (Map<String,Object> one : result){
                                    String name = String.valueOf(one.get("name"));
                                    String firstSpell = PinYinUtil.getFirstSpell(name).substring(0,1);
                                    if (alpha.equals(firstSpell)){
                                            resultList.add(one);
                                            map.put(alpha,resultList);
                                    }
                            }
                    }
                    return map;
            } else {
                    return map;
            }
    }
}

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

@ -0,0 +1,13 @@
package com.yihu.jw.wechat.dao;
import com.yihu.jw.entity.base.wx.WxUrlConfigDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
/**
 * Created by Trick on 2018/12/10.
 */
public interface WxUrlConfigDao extends PagingAndSortingRepository<WxUrlConfigDO, String>, JpaSpecificationExecutor<WxUrlConfigDO> {
    WxUrlConfigDO findByUrl(String url);
}

+ 65 - 0
business/base-service/src/main/java/com/yihu/jw/wechat/service/WxUrlConfigService.java

@ -0,0 +1,65 @@
package com.yihu.jw.wechat.service;
import com.yihu.jw.entity.base.saas.SaasDO;
import com.yihu.jw.entity.base.wx.WxUrlConfigDO;
import com.yihu.jw.entity.base.wx.WxWechatDO;
import com.yihu.jw.restmodel.base.wx.WxContants;
import com.yihu.jw.restmodel.base.wx.WxSaasVO;
import com.yihu.jw.restmodel.base.wx.WxWechatVO;
import com.yihu.jw.wechat.dao.WechatDao;
import com.yihu.jw.wechat.dao.WxUrlConfigDao;
import org.apache.commons.collections.map.HashedMap;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
/**
 * Created by Trick on 2018/12/10.
 */
@Service
public class WxUrlConfigService {
    @Autowired
    private WxUrlConfigDao wxUrlConfigDao;
    @Autowired
    private WechatDao wechatDao;
    @Autowired
    private JdbcTemplate jdbcTemplate;
    public Map<String,Object> getWxWechatConfig(String url){
        WxUrlConfigDO wxUrlConfigDO = wxUrlConfigDao.findByUrl(url);
        if(wxUrlConfigDO!=null){
            WxWechatDO wxWechatDO = wechatDao.findById(wxUrlConfigDO.getWxId());
            List<WxSaasVO> saasVOs = getWxSaasVOs(wxWechatDO.getId());
            Map<String,Object> map = new HashedMap();
            map.put("wxId",wxUrlConfigDO.getWxId());
            map.put("wxAppId",wxWechatDO.getAppId());
            map.put("publicType",wxWechatDO.getPublicType());
            map.put("saasVOs",saasVOs);
            return map;
        }else{
            return null;
        }
    }
    public List<WxSaasVO> getWxSaasVOs(String id){
        String sql ="SELECT " +
                " bs.`name` AS saasName, " +
                " bs.id AS saasid" +
                " FROM " +
                " wx_wechat_saas s " +
                " JOIN base_saas bs ON bs.id = s.saas_id " +
                " WHERE " +
                " s.wechat_id = '"+id+"'";
        List<WxSaasVO> list = jdbcTemplate.query(sql, new BeanPropertyRowMapper(WxSaasVO.class));
        return list;
    }
}

+ 78 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/base/label/PatientLabelDO.java

@ -0,0 +1,78 @@
package com.yihu.jw.entity.base.label;
import com.yihu.jw.entity.UuidIdentityEntityWithOperator;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
 * Created by Trick on 2018/12/7.
 */
@Entity
@Table(name = "base_patient_label")
public class PatientLabelDO extends UuidIdentityEntityWithOperator implements java.io.Serializable{
    private String labelCode;//标签标识',
    private String labelName;//标签名称',
    private String labelType;//标签类型(1:卫计委三大分组 2:健康状况 3:疾病类型 4:自定义标签5.周月标签 6.老年人标识 7.专病类型,8.健康情况)',
    private Integer isSystem;//是否系统标签(0:否 1是)',
    private String teamCode;//团队code',
    private Integer sort;//排序',
    private Integer status;//状态(0:无效 1:有效)',
    public String getLabelCode() {
        return labelCode;
    }
    public void setLabelCode(String labelCode) {
        this.labelCode = labelCode;
    }
    public String getLabelName() {
        return labelName;
    }
    public void setLabelName(String labelName) {
        this.labelName = labelName;
    }
    public String getLabelType() {
        return labelType;
    }
    public void setLabelType(String labelType) {
        this.labelType = labelType;
    }
    public Integer getIsSystem() {
        return isSystem;
    }
    public void setIsSystem(Integer isSystem) {
        this.isSystem = isSystem;
    }
    public String getTeamCode() {
        return teamCode;
    }
    public void setTeamCode(String teamCode) {
        this.teamCode = teamCode;
    }
    public Integer getSort() {
        return sort;
    }
    public void setSort(Integer sort) {
        this.sort = sort;
    }
    public Integer getStatus() {
        return status;
    }
    public void setStatus(Integer status) {
        this.status = status;
    }
}

+ 19 - 4
common/common-entity/src/main/java/com/yihu/jw/entity/base/patient/PatientMedicareCardDO.java

@ -29,13 +29,28 @@ public class PatientMedicareCardDO extends IntegerIdentityEntity {
            this.type = type;
            this.desc = desc;
        }
    }
       public String getType() {
           return type;
       }
       public void setType(String type) {
           this.type = type;
       }
       public String getDesc() {
           return desc;
       }
       public void setDesc(String desc) {
           this.desc = desc;
       }
   }
   public enum Type {
        MedicareCard("A_01", "医保卡"),
        SocialSecurityCard("A_02", "电子社保卡"),
        PatientIDCard("A_03", "电子就诊卡");
        MedicareCard("A_01", "医(社)保卡"),
        PatientIDCard("A_02", "电子就诊卡");
        private String type;
        private String desc;

+ 33 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/base/wx/WxUrlConfigDO.java

@ -0,0 +1,33 @@
package com.yihu.jw.entity.base.wx;
import com.yihu.jw.entity.IntegerIdentityEntity;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
 * Created by Trick on 2018/12/10.
 */
@Entity
@Table(name = "wx_url_config")
public class WxUrlConfigDO extends IntegerIdentityEntity {
    private String url;
    private String wxId;
    public String getUrl() {
        return url;
    }
    public void setUrl(String url) {
        this.url = url;
    }
    public String getWxId() {
        return wxId;
    }
    public void setWxId(String wxId) {
        this.wxId = wxId;
    }
}

+ 2 - 0
common/common-request-mapping/src/main/java/com/yihu/jw/rm/base/BaseRequestMapping.java

@ -488,6 +488,8 @@ public class BaseRequestMapping {
        public static final String bindPatientIDCard  = "/bindPatientIDCard";
        public static final String bindSocialSecurityCard  = "/bindSocialSecurityCard";
        public static final String unBindCard  = "/unBindCard";
        public static final String cardList  = "/cardList";
        public static final String cardOrgList  = "/cardOrgList";
    }

+ 9 - 1
common/common-request-mapping/src/main/java/com/yihu/jw/rm/patient/PatientRequestMapping.java

@ -17,15 +17,20 @@ public class PatientRequestMapping {
        public static final String LIST = "/list";
    }
    public static class open extends Basic{
        public static final String openUrl = "/open";
        public static final String findwxConfig ="/findwxConfig";
    }
    public abstract static class Wechat extends Basic{
        public static final String wxBase =  "/wxBase";
        public static final String api_success ="success";
        public static final String api_error ="error";
        public static final String getSign ="/getSign";
        public static final String getWxWechatConfig ="/getWxWechatConfig";
    }
    /**
     * signPackage
     */
@ -42,6 +47,9 @@ public class PatientRequestMapping {
        public static final String findOrgByCode  = "/findOrgByCode";
        public static final String findPatientSignExist  = "/findPatientSignExist";
        public static final String findPatientSignPackage  = "/findPatientSignPackage";
        public static final String findLabelByLabelType  = "/findLabelByLabelType";
        public static final String findSingleSignPackageById  = "/findSingleSignPackageById";
        public static final String signPackageAndFamily  = "/signPackageAndFamily";
    }
    /**
     * myFamily

+ 74 - 0
common/common-rest-model/src/main/java/com/yihu/jw/restmodel/base/label/BasePatientLabelVO.java

@ -0,0 +1,74 @@
package com.yihu.jw.restmodel.base.label;
import io.swagger.annotations.ApiModel;
/**
 * Created by Trick on 2018/12/7.
 */
@ApiModel(value = "居民标签", description = "居民标签")
public class BasePatientLabelVO {
    private String labelCode;//标签标识',
    private String labelName;//标签名称',
    private String labelType;//标签类型(1:卫计委三大分组 2:健康状况 3:疾病类型 4:自定义标签5.周月标签 6.老年人标识 7.专病类型,8.健康情况)',
    private Integer isSystem;//是否系统标签(0:否 1是)',
    private String teamCode;//团队code',
    private Integer sort;//排序',
    private Integer status;//状态(0:无效 1:有效)',
    public String getLabelCode() {
        return labelCode;
    }
    public void setLabelCode(String labelCode) {
        this.labelCode = labelCode;
    }
    public String getLabelName() {
        return labelName;
    }
    public void setLabelName(String labelName) {
        this.labelName = labelName;
    }
    public String getLabelType() {
        return labelType;
    }
    public void setLabelType(String labelType) {
        this.labelType = labelType;
    }
    public Integer getIsSystem() {
        return isSystem;
    }
    public void setIsSystem(Integer isSystem) {
        this.isSystem = isSystem;
    }
    public String getTeamCode() {
        return teamCode;
    }
    public void setTeamCode(String teamCode) {
        this.teamCode = teamCode;
    }
    public Integer getSort() {
        return sort;
    }
    public void setSort(Integer sort) {
        this.sort = sort;
    }
    public Integer getStatus() {
        return status;
    }
    public void setStatus(Integer status) {
        this.status = status;
    }
}

+ 8 - 15
common/common-rest-model/src/main/java/com/yihu/jw/restmodel/base/patient/PatientMedicareCardVO.java

@ -36,7 +36,7 @@ public class PatientMedicareCardVO extends IntegerIdentityVO{
    /**
	 * 卡的小类:医疗卡包含 A_01 医保卡,A_02 电子社保卡 A_03 电子就诊卡等等,,,
	 */
	@ApiModelProperty(value = "卡的小类:医疗卡包含 A_01 医保卡,A_02 电子社保卡 A_03 电子就诊卡等等,,,", example = "模块1")
	@ApiModelProperty(value = "卡的小类:医疗卡包含 A_01 医(社)保卡, A_02 电子就诊卡等等,,,", example = "模块1")
    private String type;
    /**
@ -45,13 +45,6 @@ public class PatientMedicareCardVO extends IntegerIdentityVO{
	@ApiModelProperty(value = "居民标识", example = "模块1")
    private String patientCode;
    /**
	 * 医疗保险号
	 */
	@ApiModelProperty(value = "医疗保险号", example = "模块1")
    private String medicareNumber;
    /**
	 * 绑定密码
	 */
@ -112,13 +105,6 @@ public class PatientMedicareCardVO extends IntegerIdentityVO{
        this.patientCode = patientCode;
    }
    public String getMedicareNumber() {
        return medicareNumber;
    }
    public void setMedicareNumber(String medicareNumber) {
        this.medicareNumber = medicareNumber;
    }
    public String getPassword() {
        return password;
    }
@ -148,4 +134,11 @@ public class PatientMedicareCardVO extends IntegerIdentityVO{
    }
    public String getOrgCode() {
        return orgCode;
    }
    public void setOrgCode(String orgCode) {
        this.orgCode = orgCode;
    }
}

+ 10 - 0
common/common-rest-model/src/main/java/com/yihu/jw/restmodel/patient/signPackage/ServicePackageVO.java

@ -32,6 +32,8 @@ public class ServicePackageVO {
    private List<SerivePackageItemVO> items;//服务项描述
    private Integer signType;//判断当前居民是否签约:1为签约,2为未签约
    public String getId() {
        return id;
    }
@ -191,4 +193,12 @@ public class ServicePackageVO {
    public void setEndTime(Date endTime) {
        this.endTime = endTime;
    }
    public Integer getSignType() {
        return signType;
    }
    public void setSignType(Integer signType) {
        this.signType = signType;
    }
}

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

@ -63,8 +63,7 @@ public class BasicZuulFilter extends ZuulFilter {
        //内部微服务有不需要认证的地址请在URL上追加/open/来进行过滤,如/api/v1.0/open/**,不要在此继续追加!!!
        if (url.contains("/auth/")//验证服务
                || url.contains("/wechat")//微信
                || url.contains("/open/")
                || url.contains("/patient/")) {//开发接口
                || url.contains("/open/")) {//开发接口
            return true;
        }
        return this.authenticate(ctx, request, url);

+ 2 - 2
gateway/ag-basic/src/main/resources/application.yml

@ -45,13 +45,13 @@ zuul:
      serviceId: svr-base
    svr-authentication:
      path: /cityihealth/auth/**
      serviceId: svr-authentication
      serviceId: svr-authentication-lwb
    svr-healthy-house:
      path: /cityihealth/healthyHouse/**
      serviceId: svr-healthy-house
    svr-patient:
      path: /cityihealth/patient/**
      serviceId: svr-patient
      serviceId: svr-patient-lwb
---
spring:

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

@ -1,6 +1,6 @@
spring:
  application:
    name: ag-basic
    name: ag-basic-lwb
  cloud:
    config:
      failFast: true

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

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

+ 0 - 31
svr/svr-base/src/main/java/com/yihu/jw/base/dao/wx/WechatDao.java

@ -1,31 +0,0 @@
//package com.yihu.jw.base.dao.wx;
//
//import com.yihu.jw.entity.base.wx.WxWechatDO;
//import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
//import org.springframework.data.jpa.repository.Query;
//import org.springframework.data.repository.PagingAndSortingRepository;
//
//import java.util.List;
//
///**
// * Created by Administrator on 2017/5/20 0020.
// */
//public interface WechatDao extends PagingAndSortingRepository<WxWechatDO, String>, JpaSpecificationExecutor<WxWechatDO> {
//
//    @Query("from WxWechatDO w where w.appId = ?1 and w.status!=-1")
//    WxWechatDO findByAppId(String appId);
//
//    @Query("from WxWechatDO w where w.appId = ?1 and w.id!= ?2 and w.status!=-1")
//    WxWechatDO findByAppIdExcludeId(String appId, String id);
//
//    @Query("from WxWechatDO w where w.id = ?1 and w.status!=-1")
//    WxWechatDO findById(String id);
//
//    @Query("from WxWechatDO w where w.status!=-1")
//    List<WxWechatDO> findAll();
//
//    @Query("from WxWechatDO w where w.appOriginId = ?1 and w.status!=-1")
//    WxWechatDO findByAppOriginId(String appOriginId);
//
//    List<WxWechatDO> findByName(String name);
//}

+ 0 - 17
svr/svr-base/src/main/java/com/yihu/jw/base/dao/wx/WxAccessTokenDao.java

@ -1,17 +0,0 @@
//package com.yihu.jw.base.dao.wx;
//
//import com.yihu.jw.entity.base.wx.WxAccessTokenDO;
//import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
//import org.springframework.data.jpa.repository.Query;
//import org.springframework.data.repository.PagingAndSortingRepository;
//
//import java.util.List;
//
///**
// * Created by Administrator on 2017/5/18 0018.
// */
//public interface WxAccessTokenDao extends PagingAndSortingRepository<WxAccessTokenDO, String>, JpaSpecificationExecutor<WxAccessTokenDO> {
//
//    @Query("from WxAccessTokenDO w where w.wechatId =?1 order by w.addTimestamp desc")
//    List<WxAccessTokenDO> getWxAccessTokenById(String wechatId);
//}

+ 0 - 19
svr/svr-base/src/main/java/com/yihu/jw/base/dao/wx/WxTemplateConfigDao.java

@ -1,19 +0,0 @@
//package com.yihu.jw.base.dao.wx;
//
//
//import com.yihu.jw.entity.base.wx.WxTemplateConfigDO;
//import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
//import org.springframework.data.repository.PagingAndSortingRepository;
//
//import java.util.List;
//
///**
// * Created by Trick on 2018/8/21.
// */
//public interface WxTemplateConfigDao extends PagingAndSortingRepository<WxTemplateConfigDO, String>, JpaSpecificationExecutor<WxTemplateConfigDO> {
//
//    WxTemplateConfigDO findByWechatIdAndTemplateNameAndSceneAndStatus(String wechatId, String templateName, String scene,Integer status);
//    WxTemplateConfigDO findByWechatIdAndTemplateNameAndScene(String wechatId, String templateName, String scene);
//    List<WxTemplateConfigDO> findByWechatIdAndScene(String wechatId,String scene);
//
//}

+ 0 - 26
svr/svr-base/src/main/java/com/yihu/jw/base/dao/wx/WxTemplateDao.java

@ -1,26 +0,0 @@
//package com.yihu.jw.base.dao.wx;//package com.yihu.jw.business.wx.dao;
//
//import com.yihu.jw.entity.base.wx.WxTemplateDO;
//import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
//import org.springframework.data.jpa.repository.Query;
//import org.springframework.data.repository.PagingAndSortingRepository;
//
//import java.util.List;
//
///**
// * Created by Administrator on 2017/5/20 0020.
// */
//public interface WxTemplateDao extends PagingAndSortingRepository<WxTemplateDO, String>, JpaSpecificationExecutor<WxTemplateDO> {
//
//
//    @Query("from WxTemplateDO w where w.id = ?1 and w.status =1")
//    WxTemplateDO findById(String id);
//
//    @Query("from WxTemplateDO w where w.wechatId = ?1 and w.status =1")
//    List<WxTemplateDO> findByWxId(String wechatId);
//
//    List<WxTemplateDO> findByTemplateIdAndWechatIdAndStatus(String templateId,String wechatId,Integer status);
//
//    List<WxTemplateDO> findByTemplateNameAndWechatIdAndStatus(String templateId,String wechatId,Integer status);
//
//}

+ 18 - 0
svr/svr-patient/src/main/java/com/yihu/jw/patient/endpoint/config/UrlconfigEndPoint.java

@ -0,0 +1,18 @@
package com.yihu.jw.patient.endpoint.config;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import com.yihu.jw.rm.base.BaseRequestMapping;
import com.yihu.jw.rm.patient.PatientRequestMapping;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
 * Created by Trick on 2018/12/10.
 */
@RestController
@RequestMapping(PatientRequestMapping.open.openUrl)
@Api(tags = "开发接口", description = "开发接口")
public class UrlconfigEndPoint extends EnvelopRestEndpoint {
}

+ 18 - 13
svr/svr-patient/src/main/java/com/yihu/jw/patient/endpoint/personal_info/PatientMedicareCardEndpoint.java

@ -1,5 +1,6 @@
package com.yihu.jw.patient.endpoint.personal_info;
import com.alibaba.fastjson.JSONArray;
import com.yihu.jw.entity.base.patient.PatientMedicareCardDO;
import com.yihu.jw.patient.service.personal_Info.PatientMedicareCardService;
import com.yihu.jw.restmodel.base.patient.PatientMedicareCardVO;
@ -41,9 +42,8 @@ public class PatientMedicareCardEndpoint extends EnvelopRestEndpoint {
    public Envelop bindMedicareCard(
            @ApiParam(name = "id", value = "居民id", required = true) @RequestParam String id,
            @ApiParam(name = "idcard", value = "居民身份证号", required = true) @RequestParam String idcard,
            @ApiParam(name = "cardNumber", value = "医保卡号", required = true) @RequestParam String cardNumber,
     @ApiParam(name = "pssword", value = "密码", required = true) @RequestParam String pssword) throws Exception {
        patientMedicareCardService.bindMedicareCard(id,idcard,cardNumber,pssword);
            @ApiParam(name = "cardNumber", value = "医保卡号", required = true) @RequestParam String cardNumber) throws Exception {
        patientMedicareCardService.bindMedicareCard(id,idcard,cardNumber);
        return success("success");
    }
@ -68,16 +68,6 @@ public class PatientMedicareCardEndpoint extends EnvelopRestEndpoint {
        return success("success");
    }
    @PostMapping(value = BaseRequestMapping.PatientMedicareCard.bindSocialSecurityCard)
    @ApiOperation(value = "绑定电子社保卡")
    public Envelop bindSocialSecurityCard(
            @ApiParam(name = "id", value = "居民id", required = true) @RequestParam String id,
            @ApiParam(name = "idcard", value = "居民身份证号", required = true) @RequestParam String idcard) throws Exception {
        patientMedicareCardService.bindSocialSecurityCard(id,idcard);
        return success("success");
    }
    @PostMapping(value = BaseRequestMapping.PatientMedicareCard.unBindCard)
    @ApiOperation(value = "解除绑定卡")
    public Envelop unBindCard(
@ -128,5 +118,20 @@ public class PatientMedicareCardEndpoint extends EnvelopRestEndpoint {
        return success(patientMedicareCards, PatientMedicareCardVO.class);
    }
    @GetMapping(value = BaseRequestMapping.PatientMedicareCard.cardList)
    @ApiOperation(value = "获取卡列表")
    public ListEnvelop cardlist(@ApiParam(name = "id", value = "居民id")
                                @RequestParam(value = "id", required = false) String id) throws Exception {
        List cards = patientMedicareCardService.queryCardList(id);
        return success(cards);
    }
    @GetMapping(value = BaseRequestMapping.PatientMedicareCard.cardOrgList)
    @ApiOperation(value = "获取可绑定卡的医院字母A-Z排序")
    public ListEnvelop cardOrglist(@ApiParam(name = "id", value = "居民id")
                                   @RequestParam(value = "id", required = false) String saasid) throws Exception {
        List cards = patientMedicareCardService.queryCardOrgSortedList(saasid);
        return success(cards);
    }
}

+ 40 - 1
svr/svr-patient/src/main/java/com/yihu/jw/patient/endpoint/servicepackage/PackageServiceEndpoint.java

@ -2,6 +2,7 @@ package com.yihu.jw.patient.endpoint.servicepackage;
import com.yihu.jw.entity.base.dict.DictHospitalDeptDO;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
import com.yihu.jw.entity.base.label.PatientLabelDO;
import com.yihu.jw.entity.base.org.BaseOrgDO;
import com.yihu.jw.entity.base.servicePackage.ServicePackageDO;
import com.yihu.jw.entity.base.servicePackage.ServicePackageItemDO;
@ -9,8 +10,10 @@ import com.yihu.jw.entity.base.servicePackage.ServicePackageSignRecordDO;
import com.yihu.jw.patient.service.servicepackage.PackageService;
import com.yihu.jw.restmodel.base.dict.DictHospitalDeptVO;
import com.yihu.jw.restmodel.base.doctor.BaseDoctorSimpleVO;
import com.yihu.jw.restmodel.base.label.BasePatientLabelVO;
import com.yihu.jw.restmodel.base.org.BaseOrgVO;
import com.yihu.jw.restmodel.patient.signPackage.SerivePackageItemVO;
import com.yihu.jw.restmodel.patient.signPackage.ServicePackageRecordVO;
import com.yihu.jw.restmodel.patient.signPackage.ServicePackageVO;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.MixEnvelop;
@ -25,6 +28,7 @@ import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
 * Created by Trick on 2018/11/27.
@ -45,11 +49,13 @@ public class PackageServiceEndpoint extends EnvelopRestEndpoint {
                                         @RequestParam(value = "labelCode", required = false)String labelCode,
                                         @ApiParam(name = "labelType", value = "标签类型")
                                         @RequestParam(value = "labelType", required = false)String labelType,
                                         @ApiParam(name = "patient", value = "居民code(判断居民是否签约,非必传)")
                                         @RequestParam(value = "patient", required = false)String patient,
                                         @ApiParam(name = "page", value = "第几页")
                                         @RequestParam(value = "page", required = true)Integer page,
                                         @ApiParam(name = "size", value = "每页大小")
                                         @RequestParam(value = "size", required = true)Integer size) {
        return packageService.findPackageService(city,labelCode,labelType,page,size);
        return packageService.findPackageService(city,labelCode,labelType,patient,page,size);
    }
@ -101,6 +107,24 @@ public class PackageServiceEndpoint extends EnvelopRestEndpoint {
        return packageService.signPackage(recordDO);
    }
    @PostMapping(value = PatientRequestMapping.SignPackage.signPackageAndFamily)
    @ApiOperation(value = "绑定家人,签约服务包", notes = "绑定家人,签约服务包")
    public Envelop signPackageAndFamily(@ApiParam(name = "recordJson", value = "签约实体")
                                        @RequestParam(value = "recordJson", required = true)String recordJson,
                                        @ApiParam(name = "patient", value = "申请绑定的居民code")
                                        @RequestParam(value = "patient", required = true)String patient,
                                        @ApiParam(name = "familyMobile", value = "家人的手机号码")
                                        @RequestParam(value = "familyMobile", required = true)String familyMobile,
                                        @ApiParam(name = "platform", value = "消息平台,1微信端/患者端,2医生APP端")
                                        @RequestParam(value = "platform", required = true)Integer platform,
                                        @ApiParam(name = "familyBindRole", value = "1\"配偶\",2\"父亲\",3\"母亲\",4\"公公\",5\"婆婆\",6\"岳父\",7\"岳母\",8\"女婿\",9\"儿媳\",10\"子女\"")
                                        @RequestParam(value = "familyBindRole", required = true)Integer familyBindRole,
                                        @ApiParam(name = "isAdult", value = "0未成年人 1成年人")
                                        @RequestParam(value = "isAdult", required = true)Integer isAdult) throws Exception {
        ServicePackageSignRecordDO recordDO = toEntity(recordJson, ServicePackageSignRecordDO.class);
        return packageService.signPackageAndFamily(recordDO,patient,familyMobile,platform,familyBindRole,isAdult);
    }
    @GetMapping(value = PatientRequestMapping.SignPackage.findDoctorById)
    @ApiOperation(value = "获取医生基础信息", notes = "获取医生基础信息")
    public ObjEnvelop<BaseDoctorSimpleVO> findDoctorById(@ApiParam(name = "doctorCode", value = "医生code")
@ -146,5 +170,20 @@ public class PackageServiceEndpoint extends EnvelopRestEndpoint {
        return packageService.findPatientSignPackage( label, labelType, patient, operator, familyModel, status, isHos,  page, size);
    }
    @GetMapping(value = PatientRequestMapping.SignPackage.findLabelByLabelType)
    @ApiOperation(value = "获取标签", notes = "获取标签")
    public MixEnvelop<BasePatientLabelVO,BasePatientLabelVO> findLabelByLabelType(@ApiParam(name = "labelType", value = "标签类型") @RequestParam(value = "labelType", required = false)String labelType) {
        List<PatientLabelDO> list = packageService.findLabelByLabelType(labelType);
        List<BasePatientLabelVO> basePatientLabelVOs = new ArrayList<>();
        convertToModels(list,basePatientLabelVOs,BasePatientLabelVO.class);
        return MixEnvelop.getSuccess(PatientRequestMapping.SignPackage.api_success,basePatientLabelVOs);
    }
    @GetMapping(value = PatientRequestMapping.SignPackage.findSingleSignPackageById)
    @ApiOperation(value = "根据签约id获取签约详情", notes = "根据签约id获取签约详情")
    public ObjEnvelop<ServicePackageRecordVO> findSingleSignPackageById(@ApiParam(name = "signId", value = "签约id") @RequestParam(value = "signId", required = false)String signId) {
        return success(PatientRequestMapping.SignPackage.api_success,packageService.findSingleSignPackageById(signId));
    }
//=================================
}

+ 21 - 2
svr/svr-patient/src/main/java/com/yihu/jw/patient/endpoint/wechat/WechatInfoEndPoint.java

@ -1,14 +1,18 @@
package com.yihu.jw.patient.endpoint.wechat;
import com.sun.net.httpserver.Authenticator;
import com.yihu.jw.entity.base.wx.JsApiTicket;
import com.yihu.jw.entity.base.wx.WxWechatDO;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.ObjEnvelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import com.yihu.jw.rm.patient.PatientRequestMapping;
import com.yihu.jw.util.wechat.wxhttp.HttpUtil;
import com.yihu.jw.wechat.service.WechatInfoService;
import com.yihu.jw.wechat.service.WxAccessTokenService;
import com.yihu.jw.wechat.service.WxUrlConfigService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiParam;
import org.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -17,6 +21,7 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import java.security.MessageDigest;
@ -40,15 +45,29 @@ public class WechatInfoEndPoint extends EnvelopRestEndpoint {
    private WechatInfoService wechatInfoService;
    @Value("${wechat.id}")
    private String wxId;
    @Autowired
    private WxUrlConfigService wxUrlConfigService;
    @RequestMapping(value =  PatientRequestMapping.Wechat.getWxWechatConfig, method = RequestMethod.GET)
    @ResponseBody
    public ObjEnvelop<Map<String,Object>> getWxWechatConfig(@ApiParam(name = "url", value = "域名地址")
                                                                @RequestParam(value = "url", required = true)String url){
        return success(PatientRequestMapping.Wechat.api_success,wxUrlConfigService.getWxWechatConfig(url));
    }
    /**
     * 获取签名signature
     *
     * @param pageUrl 需要签名的页面全地址(?后的也需要除了#后的不需要)
     * @return
     */
    @RequestMapping(value = "getSign", method = RequestMethod.POST)
    @RequestMapping(value = PatientRequestMapping.Wechat.getSign, method = RequestMethod.POST)
    @ResponseBody
    public Envelop getSign(String pageUrl,String wxId) {
    public Envelop getSign(@ApiParam(name = "pageUrl", value = "授权页面")
                           @RequestParam(value = "pageUrl", required = true)String pageUrl,
                           @ApiParam(name = "wxId", value = "微信id")
                           @RequestParam(value = "wxId", required = true)String wxId) {
        String ticket = getJsapi_ticketByToken(wxId);
            Map<Object, Object> map = new HashMap<Object, Object>();

+ 1 - 1
svr/svr-patient/src/main/java/com/yihu/jw/patient/service/message/MyDoctorListService.java

@ -1,6 +1,6 @@
package com.yihu.jw.patient.service.message;
import com.yihu.jw.utils.PinYinUtil;
import com.yihu.jw.patient.util.PinYinUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;

+ 2 - 2
svr/svr-patient/src/main/java/com/yihu/jw/patient/service/myFamily/MyFamilyService.java

@ -373,7 +373,7 @@ public class MyFamilyService {
        map.put("name",basePatientDO.getName());//姓名
        map.put("cardTypeName","身份证");
        map.put("idcard",basePatientDO.getIdcard());//身份证
        PatientMedicareCardDO patientMedicareCardDO = patientMedicareCardService.findByTypeAndPatientCodeAndDel(PatientMedicareCardDO.Type.SocialSecurityCard.getType(),patient,"1");
        PatientMedicareCardDO patientMedicareCardDO = patientMedicareCardService.findByTypeAndPatientCodeAndDel(PatientMedicareCardDO.Type.MedicareCard.getType(),patient,"1");
        if(patientMedicareCardDO!=null){
            map.put("principalNum",patientMedicareCardDO.getCode());//社保卡号
@ -399,7 +399,7 @@ public class MyFamilyService {
            map2.put("name",basePatientDO.getName());//姓名
            map2.put("cardTypeName","身份证");
            map2.put("idcard",basePatientDO.getIdcard());//身份证
            PatientMedicareCardDO patientMedicareCard = patientMedicareCardService.findByTypeAndPatientCodeAndDel(PatientMedicareCardDO.Type.SocialSecurityCard.getType(),basePatientDO.getId(),"1");
            PatientMedicareCardDO patientMedicareCard = patientMedicareCardService.findByTypeAndPatientCodeAndDel(PatientMedicareCardDO.Type.MedicareCard.getType(),basePatientDO.getId(),"1");
            if(patientMedicareCardDO!=null){
                map2.put("principalNum",patientMedicareCard.getCode());//社保卡号

+ 56 - 27
svr/svr-patient/src/main/java/com/yihu/jw/patient/service/personal_Info/PatientMedicareCardService.java

@ -5,7 +5,8 @@ import com.yihu.jw.exception.business.patient.PatientCardNotFoundException;
import com.yihu.jw.exception.business.patient.PatientNotFoundException;
import com.yihu.jw.patient.dao.BasePatientMedicareCardDao;
import com.yihu.jw.patient.service.BasePatientMedicardCardService;
import com.yihu.jw.util.security.MD5;
import com.yihu.jw.patient.util.JavaBeanUtils;
import com.yihu.jw.patient.util.PinYinUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
@ -14,6 +15,7 @@ import org.springframework.util.Assert;
import org.springframework.util.CollectionUtils;
import javax.validation.constraints.NotNull;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@ -43,15 +45,13 @@ public class PatientMedicareCardService extends BasePatientMedicardCardService<P
     * @param medicareCardNumber
     */
    @Transactional(rollbackFor = Exception.class)
    public void bindMedicareCard(String patientCode, String idcard,String medicareCardNumber,String password) {
    public void bindMedicareCard(String patientCode, String idcard,String medicareCardNumber) {
        Assert.notNull(patientCode,"居民code不可为空!");
        Assert.notNull(idcard,"身份证号不可为空!");
        Assert.notNull(medicareCardNumber,"医保卡号不可为空!");
        Assert.notNull(password,"密码不可为空!");
        Assert.notNull(medicareCardNumber,"医(社)保卡号不可为空!");
        PatientMedicareCardDO card = makeCardInfo(patientCode,idcard,medicareCardNumber);
        card.setParentType(PatientMedicareCardDO.ParentType.CareCard.name());
        card.setType(PatientMedicareCardDO.Type.MedicareCard.name());
        card.setPassword(MD5.GetMD5Code(password));
        card.setParentType(PatientMedicareCardDO.ParentType.CareCard.getType());
        card.setType(PatientMedicareCardDO.Type.MedicareCard.getType());
        this.save(card);
    }
@ -79,30 +79,13 @@ public class PatientMedicareCardService extends BasePatientMedicardCardService<P
        Assert.notNull(idcard,"身份证号不可为空!");
        Assert.notNull(medicareCardNumber,"就诊卡号不可为空!");
        PatientMedicareCardDO card = makeCardInfo(patientCode,idcard,medicareCardNumber);
        card.setParentType(PatientMedicareCardDO.ParentType.CareCard.name());
        card.setType(PatientMedicareCardDO.Type.MedicareCard.name());
        card.setOrgCode(PatientMedicareCardDO.Type.PatientIDCard.name());
        card.setParentType(PatientMedicareCardDO.ParentType.CareCard.getType());
        card.setType(PatientMedicareCardDO.Type.PatientIDCard.getType());
        card.setOrgCode(orgCode);
        card.setRemark(remark);
        this.save(card);
    }
    /**
     * 绑定电子社保卡
     *
     * @param patientCode
     * @param cardNumber
     */
    @Transactional(rollbackFor = Exception.class)
    public void bindSocialSecurityCard(String patientCode, String cardNumber) {
        Assert.notNull(patientCode,"id不可为空!");
        Assert.notNull(cardNumber,"社保卡号不可为空!");
        PatientMedicareCardDO card = new PatientMedicareCardDO();
        card.setPatientCode(patientCode);
        card.setCode(cardNumber);
        card.setParentType(PatientMedicareCardDO.ParentType.CareCard.name());
        card.setType(PatientMedicareCardDO.Type.SocialSecurityCard.name());
        this.save(card);
    }
    /**
     * 解除卡的绑定
@ -146,4 +129,50 @@ public class PatientMedicareCardService extends BasePatientMedicardCardService<P
        }
       return cards;
    }
    /**
     * 查询居民的卡包的卡列表
     * @param patientCode
     * @return
     */
    public List queryCardList(String patientCode){
        List result = new ArrayList<>();
        String sql = "SELECT" +
                " card.id as id," +
                " card.code as cardNumber," +
                " org.name," +
                " card.parent_type as parentType," +
                " card.type as type " +
                " FROM" +
                " patient_medicare_card card " +
                " LEFT JOIN base_org org ON card.org_code = org.`code` " +
                " WHERE" +
                " card.patient_code = '"+ patientCode + "'";
        List<Map<String,Object>> cardlist = jdbcTemplate.queryForList(sql);
        try {
            result = JavaBeanUtils.getInstance().mapListJson(cardlist);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return result;
    }
    public List queryCardOrgSortedList(String saasid) throws Exception {
        Assert.notNull(saasid,"租户id不可为空!");
        List result = new ArrayList();
        String sql = "SELECT " +
                " org.code, " +
                " org.name " +
                " FROM " +
                " base_org org " +
                " LEFT JOIN base_org_saas bos ON org.code = bos.org_code " +
                " WHERE " +
                " bos.saasid = '"+ saasid + "'";
        List<Map<String,Object>> orglist = jdbcTemplate.queryForList(sql);
        Map<String,Object> map = PinYinUtil.pingYinSort(orglist);
        List tempList = new ArrayList();
        tempList.add(map);
        result = JavaBeanUtils.getInstance().mapListJson(tempList);
        return result;
    }
}

+ 70 - 1
svr/svr-patient/src/main/java/com/yihu/jw/patient/service/servicepackage/PackageService.java

@ -4,10 +4,12 @@ import com.yihu.jw.dict.dao.DictHospitalDeptDao;
import com.yihu.jw.doctor.dao.BaseDoctorDao;
import com.yihu.jw.entity.base.dict.DictHospitalDeptDO;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
import com.yihu.jw.entity.base.label.PatientLabelDO;
import com.yihu.jw.entity.base.org.BaseOrgDO;
import com.yihu.jw.entity.base.servicePackage.ServicePackageDO;
import com.yihu.jw.entity.base.servicePackage.ServicePackageItemDO;
import com.yihu.jw.entity.base.servicePackage.ServicePackageSignRecordDO;
import com.yihu.jw.label.PatientLabelDao;
import com.yihu.jw.org.dao.BaseOrgDao;
import com.yihu.jw.patient.dao.servicepackage.ServicePackageDao;
import com.yihu.jw.patient.dao.servicepackage.ServicePackageItemDao;
@ -64,7 +66,10 @@ public class PackageService {
    @Autowired
    private MyFamilyService myFamilyService;
    public MixEnvelop findPackageService(String city,String labelCode,String labelType,Integer page,Integer size){
    @Autowired
    private PatientLabelDao patientLabelDao;
    public MixEnvelop findPackageService(String city,String labelCode,String labelType,String patient,Integer page,Integer size){
        String totalSql ="SELECT " +
                " count(1) as total " +
@ -117,6 +122,20 @@ public class PackageService {
        sql +=  "ORDER BY p.sort ASC LIMIT " + (page - 1) * size + "," + size + "";
        List<ServicePackageVO> list = jdbcTemplate.query(sql, new BeanPropertyRowMapper(ServicePackageVO.class));
        //判断是否签约
        if(StringUtils.isNotBlank(patient)){
            if(list!=null&&list.size()>0){
                for(ServicePackageVO servicePackageVO:list){
                    if(findPatientSignExist(patient,servicePackageVO.getId())){
                        servicePackageVO.setSignType(1);
                    }else {
                        servicePackageVO.setSignType(0);
                    }
                }
            }
        }
        return MixEnvelop.getSuccessListWithPage(PatientRequestMapping.SignPackage.api_success, list, page, size, count);
    }
@ -231,6 +250,16 @@ public class PackageService {
        return Envelop.getSuccess(PatientRequestMapping.SignPackage.api_success);
    }
    public Envelop signPackageAndFamily(ServicePackageSignRecordDO recordDO,String patient, String familyMobile, Integer platform, Integer familyBindRole, Integer isAdult) throws Exception{
        //1.绑定家人
        myFamilyService.signBindFamily(patient,familyMobile,platform,familyBindRole,isAdult);
        //2.服务签约
        servicePackageSignRecordDao.save(recordDO);
        return Envelop.getSuccess(PatientRequestMapping.SignPackage.api_success);
    }
    public BaseDoctorDO findDoctorById(String doctorCode){
        return baseDoctorDao.findOne(doctorCode);
    }
@ -374,4 +403,44 @@ public class PackageService {
        return MixEnvelop.getSuccessListWithPage(PatientRequestMapping.SignPackage.api_success, list, page, size, count);
    }
    public ServicePackageRecordVO findSingleSignPackageById(String signId){
        String sql="SELECT " +
                " r.id, " +
                " r.saas_id AS saasId," +
                " p.id AS servicePackageId, " +
                " p.name AS servicePackageName, " +
                " r.patient," +
                " r.name," +
                " r.idcard," +
                " r.sign_doctor AS signDoctor, " +
                " r.sign_doctor_name AS signDoctorName, " +
                " r.ssc," +
                " r.hospital," +
                " r.hospital_name AS hospitalName," +
                " r.admin_team_code AS adminTeamCode," +
                " r.price," +
                " r.start_time AS startTime," +
                " r.end_time AS endTime," +
                " r.status," +
                " r.doctor_team_code AS doctorTeamCode," +
                " r.operator," +
                " r.create_time AS createTime," +
                " r.sort," +
                " p.introduce, " +
                " p.end_introduce AS endIntroduce " +
                " FROM " +
                " base_service_package_sign_record r  " +
                " JOIN base_service_package p ON r.service_package_id = p.id " +
                " WHERE r.id='"+signId+"'";
        List<ServicePackageRecordVO> list = jdbcTemplate.query(sql, new BeanPropertyRowMapper(ServicePackageRecordVO.class));
        if(list!=null&&list.size()>0){
            return list.get(0);
        }
        return null;
    }
    public List<PatientLabelDO> findLabelByLabelType(String labelType){
       return patientLabelDao.findByLabelTypeAndStatus(labelType,1);
    }
}

+ 148 - 90
svr/svr-patient/src/main/java/com/yihu/jw/patient/util/PinYinUtil.java

@ -6,118 +6,176 @@ import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
import org.apache.commons.lang3.StringUtils;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.springframework.util.Assert;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class PinYinUtil {
	/** 
     * 获取汉字串拼音首字母,英文字符不变 
     * @param chinese 汉字串 
     * @return 汉语拼音首字母 
     */ 
    public static String getFirstSpell(String chinese) { 
    public static final Map<String, String> multiToneMap = new HashMap<>();
    static {
        Resource resource = new ClassPathResource("multitone.properties");
        BufferedReader br = null;
        try {
            br = new BufferedReader(new InputStreamReader(resource.getInputStream(), "GBK"));
            String line = null;
            while (null != (line = br.readLine())) {
                if (!StringUtils.startsWith(line, "#")) {
                    String oneLine = line;
                    String[] lineArr = oneLine.split("=");
                    for (String key : lineArr[1].split("/")) {
                        multiToneMap.put(key, lineArr[0]);
                    }
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public static void main(String[] args) {
        System.out.println(StringUtils.startsWith("######### S ##########", "#"));
        System.out.println(multiToneMap);
    }
    /**
     * 获取汉字串拼音首字母,英文字符不变
     *
     * @param chinese 汉字串
     * @return 汉语拼音首字母
     */
    public static String getFirstSpell(String chinese) {
        StringBuffer pybf = new StringBuffer();
        char[] arr = chinese.toCharArray();
        HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
        defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
        defaultFormat.setCaseType(HanyuPinyinCaseType.UPPERCASE);
        defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
            for (int i = 0; i < arr.length; i++) {
                    if (arr[i] > 128) {
                            try {
                                    String[] temp = PinyinHelper.toHanyuPinyinStringArray(arr[i], defaultFormat);
                                    if (temp != null) {
                                            pybf.append(temp[0].charAt(0));
                                    }
                            } catch (BadHanyuPinyinOutputFormatCombination e) {
                                    e.printStackTrace();
                            }
                    } else {
                            pybf.append(arr[i]);
                    }
        //只取第一个汉字的拼音
        if (arr[0] > 128) {
            try {
                String[] temp = PinyinHelper.toHanyuPinyinStringArray(arr[0], defaultFormat);
                // 长度大于1,表明是多音字,往后多取一个字或两个字,取词组,取匹配多音字属性文件确定最终读音
                if (temp != null && temp.length > 1) {
                    pybf.append(getOrgNameMultiTone(chinese).charAt(0));
                } else {
                    pybf.append(temp[0].charAt(0));
                }
            } catch (BadHanyuPinyinOutputFormatCombination e) {
                e.printStackTrace();
            }
            return pybf.toString().replaceAll("\\W", "").trim();
    } 
        } else {
            pybf.append(arr[0]);
        }
        return pybf.toString().replaceAll("\\W", "").trim();
    }
    /** 
     * 获取汉字串拼音,英文字符不变 
     * @param chinese 汉字串 
     * @return 汉语拼音 
     */ 
    public static String getFullSpell(String chinese) { 
            StringBuffer pybf = new StringBuffer(); 
            char[] arr = chinese.toCharArray(); 
            HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat(); 
            defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE); 
            defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE); 
            for (int i = 0; i < arr.length; i++) { 
                    if (arr[i] > 128) { 
                            try { 
                                    pybf.append(PinyinHelper.toHanyuPinyinStringArray(arr[i], defaultFormat)[0]); 
                            } catch (BadHanyuPinyinOutputFormatCombination e) { 
                                    e.printStackTrace(); 
                            } 
                    } else { 
                            pybf.append(arr[i]); 
                    } 
            } 
            return pybf.toString(); 
    /**
     * 获取汉字串拼音,英文字符不变
     *
     * @param chinese 汉字串
     * @return 汉语拼音
     */
    public static String getFullSpell(String chinese) {
        StringBuffer pybf = new StringBuffer();
        char[] arr = chinese.toCharArray();
        HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
        defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
        defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] > 128) {
                try {
                    pybf.append(PinyinHelper.toHanyuPinyinStringArray(arr[i], defaultFormat)[0]);
                } catch (BadHanyuPinyinOutputFormatCombination e) {
                    e.printStackTrace();
                }
            } else {
                pybf.append(arr[i]);
            }
        }
        return pybf.toString();
    }
    /**
     * 字符串按拼音排序
     * @param list
     *
     * @param
     * @return
     */
    public static Map<String,List<Object>> pingYinSort(List<String> list){
            Map<String,List<Object>>  map =  new LinkedHashMap<>();
            String[] alphatables = {"a", "b", "c", "d", "e", "f", "g", "h", "i",
                    "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"};
            for (String alpha : alphatables){
                    for(String one:list){
                            String firstSpell = PinYinUtil.getFirstSpell(one).substring(0,1);
                            if (alpha.equals(firstSpell)){
                                    List<Object> resultList = null;
                                    if(map.get(alpha)==null){
                                            resultList = new ArrayList();
                                    }else{
                                            resultList = map.get(alpha);
                                    }
                                    resultList.add(one);
                                    map.put(alpha,resultList);
                            }
    public static Map<String, Object> pingYinSort(Map<String, Map<String, Object>> result) {
        Map<String, Object> map = new LinkedHashMap<>();
        String[] alphatables = {"A", "B", "C", "D", "E", "F", "G", "H", "I",
                "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"};
        if (result.size() > 0) {
            List<Map<String, Object>> list = Lists.newArrayList(result.values());
            for (String alpha : alphatables) {
                List<Map<String, Object>> resultList = new ArrayList<>();
                for (Map<String, Object> one : list) {
                    String name = String.valueOf(one.get("name"));
                    String firstSpell = PinYinUtil.getFirstSpell(name).substring(0, 1);
                    if (alpha.equals(firstSpell)) {
                        resultList.add(one);
                        map.put(alpha, resultList);
                    }
                }
            }
            return map;
        } else {
            return map;
        }
    }
    /**
    * 字符串按拼音排序
    * @param
    * @return
    */
    public static Map<String,Object> pingYinSort(Map<String, Map<String,Object>> result){
            Map<String,Object>  map =  new LinkedHashMap <>();
            String[] alphatables = {"a", "b", "c", "d", "e", "f", "g", "h", "i",
                    "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"};
            if (result.size() > 0) {
                    List<Map<String,Object>> list = Lists.newArrayList(result.values());
                    for (String alpha : alphatables){
                            List<Map<String,Object>> resultList = new ArrayList<>();
                            for (Map<String,Object> one : list){
                                    String name = String.valueOf(one.get("name"));
                                    String firstSpell = PinYinUtil.getFirstSpell(name).substring(0,1);
                                    if (alpha.equals(firstSpell)){
                                            resultList.add(one);
                                            map.put(alpha,resultList);
                                    }
                            }
     * 字符串按拼音排序
     *
     * @param
     * @return
     */
    public static Map<String, Object> pingYinSort(List<Map<String, Object>> result) {
        Map<String, Object> map = new LinkedHashMap<>();
        String[] alphatables = {"A", "B", "C", "D", "E", "F", "G", "H", "I",
                "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"};
        if (result.size() > 0) {
            for (String alpha : alphatables) {
                List<Map<String, Object>> resultList = new ArrayList<>();
                for (Map<String, Object> one : result) {
                    String name = String.valueOf(one.get("name"));
                    String firstSpell = getFirstSpell(name).substring(0, 1);
                    if (alpha.equals(firstSpell)) {
                        resultList.add(one);
                        map.put(alpha, resultList);
                    }
                    return map;
            } else {
                    return map;
                }
            }
            return map;
        }
        return map;
    }
    /**
     * 获取医院多音字的读音,取词组,最多取三个
     *
     * @param chinesePhrase 中文词组
     * @return
     */
    public static String getOrgNameMultiTone(String chinesePhrase) {
        Assert.notNull(chinesePhrase, "中文词组不可为空");
        if (multiToneMap.containsKey(chinesePhrase.substring(0, 1))) {
            return multiToneMap.get(chinesePhrase.substring(0, 1));
        } else if (multiToneMap.containsKey(chinesePhrase.substring(0, 2))) {
            return multiToneMap.get(chinesePhrase.substring(0, 2));
        } else if (multiToneMap.containsKey(chinesePhrase.substring(0, 3))) {
            return multiToneMap.get(chinesePhrase.substring(0, 3));
        }
        return null;
    }
}

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

@ -1,6 +1,6 @@
spring:
  application:
    name: svr-patient
    name: svr-patient-lwb
  cloud:
    config:
      failFast: true