浏览代码

Merge branch 'dev' of yeshijie/wlyy2.0 into dev

叶仕杰 4 年之前
父节点
当前提交
f11e82a7d0

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

@ -1,7 +1,6 @@
package com.yihu.jw.hospital.prescription.service;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONPObject;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.jw.dict.dao.DictDeptDescDao;
import com.yihu.jw.dict.dao.DictHospitalDeptDao;
@ -81,6 +80,7 @@ import com.yihu.jw.util.http.HttpClientUtil;
import com.yihu.jw.util.wechat.WeixinMessagePushUtils;
import com.yihu.jw.utils.CheckSumBuilder;
import com.yihu.jw.utils.GenerateUserSig;
import com.yihu.jw.utils.PinYinUtils;
import com.yihu.jw.utils.Pkis.PKIService_PortType;
import com.yihu.jw.utils.Pkis.PKIService_ServiceLocator;
import com.yihu.jw.utils.WebserviceUtil;
@ -93,6 +93,7 @@ import com.yihu.jw.wechat.service.BaseSensitiveFilterWordsService;
import com.yihu.jw.wechat.service.WxAccessTokenService;
import com.yihu.jw.yx.dao.YxTokenMappingDao;
import com.yihu.mysql.query.BaseJpaService;
import com.yihu.utils.pinyin.PinyinUtil;
import com.yihu.utils.security.MD5;
import com.ylzinfo.ehc.EhcHandler;
import com.ylzinfo.ehc.common.utils.DateUtils;
@ -10760,6 +10761,19 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
            sql+="select  t.street_name as \"streetName\" from base_address_mapping t  where t.town_name ='"+parentName+"' and street_name <> '' and street_name is not null";
        }
        List<Map<String,Object>> list = hibenateUtils.createSQLQuery(sql);
        list.stream().forEach(one->{
            String firstSpell = null;
            if ("1".equalsIgnoreCase(addressFlag)){
                firstSpell = PinYinUtils.getFirstSpell(one.get("provinceName").toString());
            }else if("2".equalsIgnoreCase(addressFlag)){
                firstSpell = PinYinUtils.getFirstSpell(one.get("cityName").toString());
            }else if("3".equalsIgnoreCase(addressFlag)){
                firstSpell = PinYinUtils.getFirstSpell(one.get("townName").toString());
            }else if("4".equalsIgnoreCase(addressFlag)){
                firstSpell = PinYinUtils.getFirstSpell(one.get("streetName").toString());
            }
            one.put("firstSpell",firstSpell);
        });
        return list;
    }

+ 69 - 0
business/base-service/src/main/java/com/yihu/jw/utils/PinYinUtils.java

@ -5,12 +5,21 @@ import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType;
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
import org.apache.commons.lang3.StringUtils;
import org.springframework.util.Assert;
import java.util.HashMap;
import java.util.Map;
/**
 * @author huangwenjie
 * @date 2020/3/13 09:32
 */
public class PinYinUtils {
	public static final Map<String, String> multiToneMap = new HashMap<>();
	 //将中文转换为英文
	public static String getEname(String name) throws  Exception
    {
@ -55,6 +64,66 @@ public class PinYinUtils {
		
		return newstr.toString();
	}
	/**
	 * 获取汉字串拼音首字母,英文字符不变
	 *
	 * @param chinese 汉字串
	 * @return 汉语拼音首字母
	 */
	public static String getFirstSpell(String chinese) {
		StringBuffer pybf = new StringBuffer();
		char[] arr = chinese.toCharArray();
		HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
		defaultFormat.setCaseType(HanyuPinyinCaseType.UPPERCASE);
		defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
		//只取第一个汉字的拼音
		if (arr[0] > 128) {
			try {
				String[] temp = PinyinHelper.toHanyuPinyinStringArray(arr[0], defaultFormat);
				// 长度大于1,表明是多音字,往后多取一个字或两个字,取词组,取匹配多音字属性文件确定最终读音
				if (temp != null && temp.length > 1 && !temp[0].equalsIgnoreCase(temp[1])) {
					String finalLetter = chinese;
					if(StringUtils.isEmpty(finalLetter)){
						System.out.print(arr[0]);
						System.out.print(arr[1]+":[");
						for(int i=0; i< temp.length-1; i++)
							System.out.print(temp[i]+", ");
						System.out.println(temp[temp.length-1]+"]");
						pybf.append(temp[0].charAt(0));
					}else{
						pybf.append(finalLetter.charAt(0));
					}
				} else {
					pybf.append(temp[0].charAt(0));
				}
			} catch (BadHanyuPinyinOutputFormatCombination e) {
				e.printStackTrace();
			}
		} else {
			pybf.append(arr[0]);
		}
		return pybf.toString().replaceAll("\\W", "").trim();
	}
	/**
	 * 获取医院多音字的读音,取词组,最多取三个
	 *
	 * @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;
	}
	public static void main(String[] args)  throws  Exception{
		System.out.println(getUpEname("李宇春"));
		

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

@ -62,6 +62,8 @@ public class WlyyUserDetailsService extends JdbcDaoSupport implements UserDetail
    private static final String PATIENT_INSERT_WEHCAT = "insert into base_patient_wechat (id,wechat_id,patient_id,openid,create_time) values(?,?,?,?,?)";
    private static final String UPDATE_PATIENT_CARD_TYPE = "update base_patient set card_type = ? where id = ?";
    private static final String BespeakRegist = "bespeakRegist:";
@ -477,6 +479,13 @@ public class WlyyUserDetailsService extends JdbcDaoSupport implements UserDetail
                    basePatientFamilyMemberDO.setFamilyMember(patientDO.getId());
                    familyMemberDao.save(basePatientFamilyMemberDO);
                }
            }else{
                this.getJdbcTemplate().update(UPDATE_PATIENT_CARD_TYPE,
                        new Object[]{
                                data[2],
                                users.get(0).getId()
                        }
                );
            }
        }
        return users;