فهرست منبع

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

Trick 6 سال پیش
والد
کامیت
5eee58dd1d
21فایلهای تغییر یافته به همراه314 افزوده شده و 625 حذف شده
  1. 5 1
      business/base-service/src/main/java/com/yihu/jw/message/dao/MessageDao.java
  2. 13 3
      business/base-service/src/main/java/com/yihu/jw/message/service/MessageService.java
  3. 0 46
      business/base-service/src/main/java/com/yihu/jw/security/dao/TokenDao.java
  4. 0 136
      business/base-service/src/main/java/com/yihu/jw/security/service/TokenService.java
  5. 0 121
      business/base-service/src/main/java/com/yihu/jw/utils/PinYinUtil.java
  6. 0 19
      business/base-service/src/main/java/com/yihu/jw/utils/SystemData.java
  7. 19 4
      common/common-entity/src/main/java/com/yihu/jw/entity/base/patient/PatientMedicareCardDO.java
  8. 0 29
      common/common-entity/src/main/java/com/yihu/jw/entity/base/security/RSA.java
  9. 0 81
      common/common-entity/src/main/java/com/yihu/jw/entity/base/security/Token.java
  10. 2 0
      common/common-request-mapping/src/main/java/com/yihu/jw/rm/base/BaseRequestMapping.java
  11. 8 15
      common/common-rest-model/src/main/java/com/yihu/jw/restmodel/base/patient/PatientMedicareCardVO.java
  12. 2 0
      svr/svr-patient/src/main/java/com/yihu/jw/patient/dao/myFamily/PatientFamilyMemberDao.java
  13. 0 14
      svr/svr-patient/src/main/java/com/yihu/jw/patient/dao/security/RSADao.java
  14. 4 2
      svr/svr-patient/src/main/java/com/yihu/jw/patient/endpoint/myFamily/MyFamilyEndpoint.java
  15. 18 13
      svr/svr-patient/src/main/java/com/yihu/jw/patient/endpoint/personal_info/PatientMedicareCardEndpoint.java
  16. 1 1
      svr/svr-patient/src/main/java/com/yihu/jw/patient/service/message/MyDoctorListService.java
  17. 7 0
      svr/svr-patient/src/main/java/com/yihu/jw/patient/service/message/MyMessageService.java
  18. 28 23
      svr/svr-patient/src/main/java/com/yihu/jw/patient/service/myFamily/MyFamilyService.java
  19. 3 0
      svr/svr-patient/src/main/java/com/yihu/jw/patient/service/myFamily/PatientFamilyMemberService.java
  20. 56 27
      svr/svr-patient/src/main/java/com/yihu/jw/patient/service/personal_Info/PatientMedicareCardService.java
  21. 148 90
      svr/svr-patient/src/main/java/com/yihu/jw/patient/util/PinYinUtil.java

+ 5 - 1
business/base-service/src/main/java/com/yihu/jw/message/dao/MessageDao.java

@ -17,9 +17,13 @@ public interface MessageDao extends PagingAndSortingRepository<BaseMessageDO, St
    @Query("select m from BaseMessageDO m where m.platform=?1 and m.receiver=?2  and m.del=1 and m.msgTypeCode like ?3  order by m.readState desc")
    List<BaseMessageDO> messageList(Integer platform, String code,String msgTypeCode);
    @Query("select count(m.id) from BaseMessageDO m where m.platform=?1 and m.receiver=?2  and m.del=1 and m.msgTypeCode like ?3  and m.readState=1")
    @Query("select count(m.id) from BaseMessageDO m where m.platform=?1 and m.receiver=?2  and m.del=1 and m.msgTypeCode like ?3  and m.readState=0")
    Integer countMessage(Integer platform, String code,String msgTypeCode);
    BaseMessageDO findById(Integer id);
    @Modifying
    @Query("update BaseMessageDO t set t.readState = ?1 where t.id=?2 ")
    int updateStatusById(Integer readState,Integer id);
}

+ 13 - 3
business/base-service/src/main/java/com/yihu/jw/message/service/MessageService.java

@ -139,7 +139,8 @@ public class MessageService extends BaseJpaService<BaseMessageDO, MessageDao> {
                " AND b.platform = '"+platform+"' " +
                " AND b.receiver = '"+code+"' " +
                " AND b.del = 1 " +
                " AND b.read_state = "+readState;
                " AND b.read_state = "+readState+
                " AND b.msg_type_code like '%03%'";
        return jdbcTemplate.queryForList(sql);
    }
@ -155,9 +156,10 @@ public class MessageService extends BaseJpaService<BaseMessageDO, MessageDao> {
                "  GROUP BY " +
                "   m.sender, " +
                "   m.sender_name " ;
        Integer count  = jdbcTemplate.queryForObject(sql,Integer.class);
        List<Map<String, Object>> list  = jdbcTemplate.queryForList(sql);
        Integer count = list.size();
        if(count<=(originalPageSize-2)){
            return page-1;
            return page;
        }else{
            Integer s = (count-(originalPageSize-2))/originalPageSize;
            Integer y = (count-(originalPageSize-2))%originalPageSize;
@ -173,4 +175,12 @@ public class MessageService extends BaseJpaService<BaseMessageDO, MessageDao> {
        return messageDao.findById(id);
    }
    public void updateStatusById(Integer readState,Integer id) throws Exception{
        int i = messageDao.updateStatusById(readState,id);
        if(i<0){
            throw new Exception("update data failur !");
        }
    }
}

+ 0 - 46
business/base-service/src/main/java/com/yihu/jw/security/dao/TokenDao.java

@ -1,46 +0,0 @@
package com.yihu.jw.security.dao;
import com.yihu.jw.entity.base.security.Token;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
public interface TokenDao extends PagingAndSortingRepository<Token, String> {
	
	@Modifying
	@Query("delete Token a where a.user = ?1")
	int deleteByUser(String user);
	@Modifying
	@Query("delete Token a where a.user = ?1 and platform=?2")
	int deleteByUserAndPlatform(String user, Integer platform);
	
	@Modifying
	@Query("delete Token a where a.token = ?1")
	int deleteByToken(String token);
	
//	@Query("select a from Token a where a.user = ?1 and a.platform = ?2 and a.del = '1'")
//	Token findByUser(String user, int platform);
	
//	@Query("select a from Token a where a.user = ?1 and a.del = '1'")
//	Token findByUser(String user);
	
//	@Query("select count(1) from Token a where a.user = ?1 and a.del = '1'")
//	int countByUser(String user);
	
	@Query("select a from Token a where a.token = ?1 and a.del = '1'")
	Token findByToken(String token);
	
	@Query("select a from Token a where a.user = ?1 and a.platform = ?2 and a.del = '1'")
	Token findByPatient(String patient, int platform);
	
	@Modifying
	@Query("delete Token a where a.user = ?1 and a.platform = 3 and a.del = '1'")
	int deleteWxTokenByPatient(String patient);
	@Query("select a from Token a where a.imei = ?1 and a.platform = 3")
	Page<Token> findByOpenid(String openid, Pageable pageable);
}

+ 0 - 136
business/base-service/src/main/java/com/yihu/jw/security/service/TokenService.java

@ -1,136 +0,0 @@
package com.yihu.jw.security.service;
import com.yihu.jw.entity.base.security.Token;
import com.yihu.jw.security.dao.TokenDao;
import com.yihu.jw.util.date.DateUtil;
import com.yihu.jw.util.security.MD5;
import com.yihu.jw.utils.SystemData;
import com.yihu.mysql.query.BaseJpaService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.UUID;
@Component
@Transactional(rollbackFor = Exception.class)
public class TokenService extends BaseJpaService<Token, TokenDao> {
	@Autowired
	public TokenDao tokenDao;
	/**
	 * 生成token
	 * @param user 用户标识
	 * @param imei 手机IMEI码
	 * @param platform 1患者,2医生,3患者微信公众号,4pc端医生
	 * @return
	 * @throws Exception
	 */
	public Token newToken(String user, String imei, int platform) throws Exception {
		Date czrq = new Date();
		String tokenStr = platform + imei + System.currentTimeMillis();
		// MD5加密
		tokenStr = MD5.GetMD5Code(tokenStr);
//		Token token = tokenDao.findByPatient(user, platform);
//		if (token == null) {
//			token = new Token();
//		}
		Token token = new Token();
		token.setDel("1");
		token.setPlatform(platform);
		token.setImei(imei);
		// 30天的有限期
		token.setTimeout(DateUtil.strToDate(DateUtil.getNextDay(DateUtil.getStringDate(DateUtil.YYYY_MM_DD), 30), DateUtil.YYYY_MM_DD));
		token.setToken(tokenStr);
		token.setUser(user);
		token.setCzrq(czrq);
		// 先删除防止重复
		tokenDao.deleteByUserAndPlatform(user,platform);
		// 添加新的token
		token = tokenDao.save(token);
		if (token == null) {
			throw new Exception("Token生成失败");
		}
		// 更新token缓存
		if (platform == 3) {
			SystemData.patientTokens.put(user, token);
		} else if (platform == 2) {
			SystemData.doctorTokens.put(user, token);
		}else if(platform == 4){
			SystemData.doctorPCTokens.put(user,token);
		}else if(platform == 5){
			SystemData.doctorWXTokens.put(user,token);
		}
		return token;
	}
	public Token newTxToken(String user, String openid) throws Exception {
		Date czrq = new Date();
		String tokenStr = "";
		if(!StringUtils.isBlank(openid)){
			tokenStr = 3 + openid + System.currentTimeMillis();
		}else{
			tokenStr = 3 +""+ System.currentTimeMillis();
		}
		// MD5加密
		tokenStr = MD5.GetMD5Code(tokenStr);
		Token token = new Token();
		token.setDel("1");
		token.setPlatform(3);
		if(StringUtils.isBlank(openid)){
			token.setImei(UUID.randomUUID().toString().replace("-",""));
		}else{
			token.setImei(openid);
		}
		// 360天的有限期
		token.setTimeout(DateUtil.strToDate(DateUtil.getNextDay(DateUtil.getStringDate(DateUtil.YYYY_MM_DD), 360), DateUtil.YYYY_MM_DD));
		token.setToken(tokenStr);
		token.setUser(user);
		token.setCzrq(czrq);
		// 先删除,防止重复
		tokenDao.deleteByUser(user);
		// 添加新的token
		token = tokenDao.save(token);
		if (token == null) {
			throw new Exception("Token生成失败");
		}
		// 更新token缓存
		SystemData.patientTokens.put(user, token);
		return token;
	}
	/**
	 * 删除token
	 * @param uid 用户code
	 * @return
	 * @throws Exception
	 */
	public void delToken(int platform, String uid) throws Exception {
		// 删除老的token
		tokenDao.deleteByUser(uid);
		// 更新token缓存
		if (platform == 3) {
			SystemData.patientTokens.remove(uid);
		} else if (platform == 2) {
			SystemData.doctorTokens.remove(uid);
		}
	}
	/**
	 * 查询患者的微信token标识
	 * @param patient
	 */
	public Token findWxToken(String patient) {
		return tokenDao.findByPatient(patient, 3);
	}
	/**
	 * 查询doctor的微信token标识
	 * @param user
	 */
	public Token findDoctorToken(String user) {
		return tokenDao.findByPatient(user, 4);
	}
}

+ 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;
            }
    }
}

+ 0 - 19
business/base-service/src/main/java/com/yihu/jw/utils/SystemData.java

@ -1,19 +0,0 @@
package com.yihu.jw.utils;
import com.yihu.jw.entity.base.security.Token;
import java.util.HashMap;
import java.util.Map;
public class SystemData {
	// 医生app验证信息
	public static Map<String, Token> doctorTokens = new HashMap<String, Token>();  // 2
	// 医生pc端验证信息 取药系统 对外系统
	public static Map<String, Token> doctorPCTokens = new HashMap<String, Token>(); // 4
	// 患者验证信息
	public static Map<String, Token> patientTokens = new HashMap<String, Token>(); // 3
	// 医生验证信息
	public static Map<String, Token> doctorWXTokens = new HashMap<String, Token>(); // 5
}

+ 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;

+ 0 - 29
common/common-entity/src/main/java/com/yihu/jw/entity/base/security/RSA.java

@ -1,29 +0,0 @@
package com.yihu.jw.entity.base.security;
import com.yihu.jw.entity.UuidIdentityEntity;
import javax.persistence.Entity;
import javax.persistence.Lob;
import javax.persistence.Table;
/**
 * 非对象算法加密信息
 * @author George
 *
 */
@Entity
@Table(name = "dm_rsa")
public class RSA extends UuidIdentityEntity {
	private static final long serialVersionUID = 7832717679571844202L;
	
	private byte[] data;
	@Lob
	public byte[] getData() {
	    return data;
	}
	
	public void setData(byte[] data){
		this.data = data;
	}
}

+ 0 - 81
common/common-entity/src/main/java/com/yihu/jw/entity/base/security/Token.java

@ -1,81 +0,0 @@
package com.yihu.jw.entity.base.security;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yihu.jw.entity.UuidIdentityEntity;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.util.Date;
@Entity
@Table(name = "wlyy_token")
public class Token extends UuidIdentityEntity {
	private static final long serialVersionUID = -3297644428262254694L;
	private String user;
	private Integer platform;   // 1患者端,2医生端app,3微信公众号wechat,4医生端pc
	private Date timeout;
	private String imei;
	private String token;
	private Date czrq;
	private String del;
	public String getUser() {
		return user;
	}
	public void setUser(String user) {
		this.user = user;
	}
	public Integer getPlatform() {
		return platform;
	}
	public void setPlatform(Integer platform) {
		this.platform = platform;
	}
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
	public Date getTimeout() {
		return timeout;
	}
	public void setTimeout(Date timeout) {
		this.timeout = timeout;
	}
	public String getImei() {
		return imei;
	}
	public void setImei(String imei) {
		this.imei = imei;
	}
	public String getToken() {
		return token;
	}
	public void setToken(String token) {
		this.token = token;
	}
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
	public Date getCzrq() {
		return czrq;
	}
	public void setCzrq(Date czrq) {
		this.czrq = czrq;
	}
	public String getDel() {
		return del;
	}
	public void setDel(String del) {
		this.del = del;
	}
}

+ 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";
    }

+ 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;
    }
}

+ 2 - 0
svr/svr-patient/src/main/java/com/yihu/jw/patient/dao/myFamily/PatientFamilyMemberDao.java

@ -38,4 +38,6 @@ public interface PatientFamilyMemberDao extends PagingAndSortingRepository<BaseP
    @Modifying
    @Query("update BasePatientFamilyMemberDO m set m.del = ?1 where m.id=?2 ")
    int updateDelById(Integer del,String id);
    BasePatientFamilyMemberDO findByPatientAndFamilyMemberAndDel(String patient,String familyMember,Integer del);
}

+ 0 - 14
svr/svr-patient/src/main/java/com/yihu/jw/patient/dao/security/RSADao.java

@ -1,14 +0,0 @@
/*******************************************************************************
 * Copyright (c) 2005, 2014 springside.github.io
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 *******************************************************************************/
package com.yihu.jw.patient.dao.security;
import com.yihu.jw.entity.base.security.RSA;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
public interface RSADao extends PagingAndSortingRepository<RSA, String>, JpaSpecificationExecutor<String> {
	
}

+ 4 - 2
svr/svr-patient/src/main/java/com/yihu/jw/patient/endpoint/myFamily/MyFamilyEndpoint.java

@ -131,9 +131,11 @@ public class MyFamilyEndpoint extends EnvelopRestEndpoint {
            @ApiParam(name = "status", value = "3、通过,4、拒绝", required = true)
            @RequestParam(value = "status",required = true) Integer status,
            @ApiParam(name = "isAuthorize", value = "0:未授权,1:已授权", required = true)
            @RequestParam(value = "isAuthorize",required = true) Integer isAuthorize) throws Exception {
            @RequestParam(value = "isAuthorize",required = true) Integer isAuthorize,
            @ApiParam(name = "messageId", value = "messageId", required = true)
            @RequestParam(value = "messageId",required = true) Integer messageId) throws Exception {
        try{
            return success(myFamilyService.confirmApply(patientApplyLogId,status,isAuthorize));
            return success(myFamilyService.confirmApply(patientApplyLogId,status,isAuthorize,messageId));
        }catch (Exception e){
            e.printStackTrace();
            return failed(e.getMessage());

+ 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);
    }
}

+ 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;

+ 7 - 0
svr/svr-patient/src/main/java/com/yihu/jw/patient/service/message/MyMessageService.java

@ -3,6 +3,7 @@ package com.yihu.jw.patient.service.message;
import com.yihu.jw.message.service.MessageService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Map;
@ -18,4 +19,10 @@ public class MyMessageService {
    public List<Map<String,Object>> messageList(String code,Integer page,Integer pageSize){//1微信端/患者端,2医生APP端
        return messageService.messageList(1,code,page,pageSize);
    }
    @Transactional(rollbackFor = Exception.class)
    public void updateStatusById(Integer readState,Integer id) throws Exception{
        messageService.updateStatusById(readState,id);
    }
}

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

@ -137,9 +137,10 @@ public class MyFamilyService {
            messageDO.setSenderPhoto(patientDO.getPhoto());
            messageDO.setTitle("家人绑定");
            messageDO.setMsgDigest("");
            messageDO.setMsgContent("");
            String msgContent = familyPatient.getName()+",您好!"+patientDO.getName()+"向您发起添加家人申请,添加成功后,对方可使用您的账号,为您处理各类健康服务。";
            messageDO.setMsgContent(msgContent);
            messageDO.setMsgTypeCode("010801");
            messageDO.setMsgTypeName("");
            messageDO.setMsgTypeName("系统消息-添加家人申请");
            messageDO.setPlatform(platform);
            messageDO.setReadState(0);
            messageDO.setReadonly(0);
@ -242,7 +243,7 @@ public class MyFamilyService {
     * @param status 1、添加家人(默认),2、邀请登录,3、通过,4、拒绝
     */
    @Transactional(rollbackFor = Exception.class)
    public Map<String,Object> confirmApply(Integer patientApplyLogId,Integer status,Integer isAuthorize)throws Exception{
    public Map<String,Object> confirmApply(Integer patientApplyLogId,Integer status,Integer isAuthorize,Integer messageId)throws Exception{
        Map<String,Object> map = new HashedMap();
        PatientApplyLog patientApplyLog = patientApplyLogService.findById(patientApplyLogId);
        BasePatientDO apply = patientService.findByIdAndDel(patientApplyLog.getCreateUser());
@ -253,23 +254,27 @@ public class MyFamilyService {
        patientApplyLog.setStatus(status);
        patientApplyLog.setConfirmTime(new Date());
        patientApplyLogService.save(patientApplyLog);
        if(status==3){
            BasePatientFamilyMemberDO patientFamilyMember = new BasePatientFamilyMemberDO();
            patientFamilyMember.setPatient(patientApplyLog.getCreateUser());
            patientFamilyMember.setFamilyMember(patientApplyLog.getFamilyMemberCode());
            patientFamilyMember.setFamilyRelation(patientApplyLog.getFamilyBindRole());
            patientFamilyMember.setIsAuthorize(0);
            patientFamilyMember.setDel(1);
            patientFamilyMemberService.save(patientFamilyMember);
            BasePatientFamilyMemberDO patientFamilyMember2 = new BasePatientFamilyMemberDO();
            patientFamilyMember2.setPatient(patientApplyLog.getFamilyMemberCode());
            patientFamilyMember2.setFamilyMember(patientApplyLog.getCreateUser());
            BasePatientDO createUser = patientService.findByIdAndDel(patientApplyLog.getCreateUser());
            patientFamilyMember2.setFamilyRelation(familyRelationTrans(patientApplyLog.getFamilyBindRole(),createUser.getSex()));
            patientFamilyMember2.setIsAuthorize(isAuthorize);
            patientFamilyMember2.setDel(1);
            patientFamilyMemberService.save(patientFamilyMember2);
        if(status==3||status==4){
            BasePatientFamilyMemberDO patientFamilyMemberDO = patientFamilyMemberService.findByPatientAndFamilyMemberAndDel(patientApplyLog.getCreateUser(),patientApplyLog.getFamilyMemberCode());
            if(status==3&&patientFamilyMemberDO==null){
                BasePatientFamilyMemberDO patientFamilyMember = new BasePatientFamilyMemberDO();
                patientFamilyMember.setPatient(patientApplyLog.getCreateUser());
                patientFamilyMember.setFamilyMember(patientApplyLog.getFamilyMemberCode());
                patientFamilyMember.setFamilyRelation(patientApplyLog.getFamilyBindRole());
                patientFamilyMember.setIsAuthorize(0);
                patientFamilyMember.setDel(1);
                patientFamilyMemberService.save(patientFamilyMember);
                BasePatientFamilyMemberDO patientFamilyMember2 = new BasePatientFamilyMemberDO();
                patientFamilyMember2.setPatient(patientApplyLog.getFamilyMemberCode());
                patientFamilyMember2.setFamilyMember(patientApplyLog.getFamilyMemberName());
                BasePatientDO createUser = patientService.findByIdAndDel(patientApplyLog.getCreateUser());
                patientFamilyMember2.setFamilyRelation(familyRelationTrans(patientApplyLog.getFamilyBindRole(),createUser.getSex()));
                patientFamilyMember2.setIsAuthorize(isAuthorize);
                patientFamilyMember2.setDel(1);
                patientFamilyMemberService.save(patientFamilyMember2);
            }
            messageService.updateStatusById(1,messageId);
        }
        return map;
    }
@ -368,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());//社保卡号
@ -394,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(),patient,"1");
            PatientMedicareCardDO patientMedicareCard = patientMedicareCardService.findByTypeAndPatientCodeAndDel(PatientMedicareCardDO.Type.MedicareCard.getType(),patient,"1");
            if(patientMedicareCardDO!=null){
                map2.put("principalNum",patientMedicareCard.getCode());//社保卡号
@ -509,7 +514,7 @@ public class MyFamilyService {
            BasePatientDO patientDO = patientService.findByIdAndDel(patient);//被绑定人
            BasePatientDO createPatient = patientService.findByIdAndDel(createUser);//绑定人
            Integer converRole = familyRelationTrans(bindRole,createPatient.getSex());//转换后的角色
            map.put("messageId",Integer.valueOf(one.get("id")+""));
            map.put("patientApplyLogId",relationData);
            map.put("patientPhoto",patientDO.getPhoto());
            map.put("applyPatientPhoto",createPatient.getPhoto());

+ 3 - 0
svr/svr-patient/src/main/java/com/yihu/jw/patient/service/myFamily/PatientFamilyMemberService.java

@ -60,4 +60,7 @@ public class PatientFamilyMemberService extends BaseJpaService<BasePatientFamily
        return patientFamilyMemberDao.updateAuthorizeById(isAuthorize,id);
    }
    public BasePatientFamilyMemberDO findByPatientAndFamilyMemberAndDel(String patient,String familyMember){
        return patientFamilyMemberDao.findByPatientAndFamilyMemberAndDel(patient,familyMember,1);
    }
}

+ 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;
    }
}

+ 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;
    }
}