浏览代码

新增拼音姓名转换

刘韬 2 年之前
父节点
当前提交
9f3ffd9b09

+ 1 - 0
DataFusion/.classpath

@@ -25,5 +25,6 @@
 	<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/okio-2.2.2.jar"/>
 	<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/sqljdbc42.jar"/>
 	<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/jfinal-4.8-bin-with-src.jar"/>
+	<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/pinyin4j-2.5.0.jar"/>
 	<classpathentry kind="output" path="WebRoot/WEB-INF/classes"/>
 </classpath>

二进制
DataFusion/WebRoot/WEB-INF/lib/pinyin4j-2.5.0.jar


+ 4 - 3
DataFusion/src/com/zskk/config/ZskkConfig.java

@@ -18,6 +18,7 @@ import com.jfinal.template.Engine;
 import com.zskk.control.ViewController;
 import com.zskk.service.ServiceFactory;
 import com.zskk.task.DataTask;
+import com.zskk.task.UpdateTask;
 
 public class ZskkConfig extends JFinalConfig {
 
@@ -72,9 +73,9 @@ public class ZskkConfig extends JFinalConfig {
 		arpConnected.setDialect(new SqlServerDialect());
 		me.add(arpConnected);
 
-//		Cron4jPlugin cpData = new Cron4jPlugin();
-//		cpData.addTask("*/5 * * * *", new DataTask());
-//		me.add(cpData);
+		Cron4jPlugin cpData = new Cron4jPlugin();
+		cpData.addTask("*/5 * * * *", new UpdateTask());
+		me.add(cpData);
 	}
 
 	@Override

+ 62 - 5
DataFusion/src/com/zskk/service/DataService.java

@@ -9,6 +9,12 @@ import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.jfinal.kit.PropKit;
 
+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.HanyuPinyinVCharType;
+import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
 import okhttp3.FormBody;
 import okhttp3.MediaType;
 import okhttp3.OkHttpClient;
@@ -120,12 +126,63 @@ public class DataService {
 			return null;
 		}
 	}
-    
+    public static String getAllPinyin(String hanzi) {
+        //输出格式设置
+        HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
+        /**
+         * 输出大小写设置
+         *
+         * LOWERCASE:输出小写
+         * UPPERCASE:输出大写
+         */
+        format.setCaseType(HanyuPinyinCaseType.UPPERCASE);
+ 
+        /**
+         * 输出音标设置
+         *
+         * WITH_TONE_MARK:直接用音标符(必须设置WITH_U_UNICODE,否则会抛出异常)
+         * WITH_TONE_NUMBER:1-4数字表示音标
+         * WITHOUT_TONE:没有音标
+         */
+        format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
+ 
+        /**
+         * 特殊音标ü设置
+         *
+         * WITH_V:用v表示ü
+         * WITH_U_AND_COLON:用"u:"表示ü
+         * WITH_U_UNICODE:直接用ü
+         */
+        format.setVCharType(HanyuPinyinVCharType.WITH_U_UNICODE);
+ 
+        char[] hanYuArr = hanzi.trim().toCharArray();
+        StringBuilder pinYin = new StringBuilder();
+ 
+        try {
+            for (int i = 0, len = hanYuArr.length; i < len; i++) {
+                //匹配是否是汉字
+                if (Character.toString(hanYuArr[i]).matches("[\\u4E00-\\u9FA5]+")) {
+                    //如果是多音字,返回多个拼音,这里只取第一个
+                    String[] pys = PinyinHelper.toHanyuPinyinStringArray(hanYuArr[i], format);
+                    pinYin.append(pys[0]).append(" ");
+                } else {
+                    pinYin.append(hanYuArr[i]).append(" ");
+                }
+            }
+        } catch (BadHanyuPinyinOutputFormatCombination badHanyuPinyinOutputFormatCombination) {
+            badHanyuPinyinOutputFormatCombination.printStackTrace();
+        }
+        return pinYin.toString();
+    }
+
     public static void main(String[] args) {
-    	Map <String,String> map = new HashMap<String,String>();
-    	map.put("institution_id", "47600001");
-    	map.put("num", "10");
-		postWithParameters(GET_EXAM_URL, map);
+//    	Map <String,String> map = new HashMap<String,String>();
+//    	map.put("institution_id", "47600001");
+//    	map.put("num", "10");
+//		postWithParameters(GET_EXAM_URL, map);
+    	String pinYin = getAllPinyin("秋水共长天一色");
+        System.out.println("秋水共长天一色全拼:"+pinYin);
+      
 	}
 
 }

+ 10 - 8
DataFusion/src/com/zskk/task/UpdateTask.java

@@ -24,7 +24,7 @@ public class UpdateTask implements ITask {
         for (Object object : jsonArray) {
         	try {
 			JSONObject jsonObject = JSON.parseObject(object.toString());
-			Record record = Db.use("connected").findFirst("select * from examinfo where studyuid=?", jsonObject.getString("studyuid"));
+			Record record = Db.use("connected").findFirst("select * from v_Yyx where accnum=?", jsonObject.getString("accession_num"));
 			if (record == null) {
 				continue;
 			}
@@ -32,22 +32,24 @@ public class UpdateTask implements ITask {
 			params.put("exam_id", jsonObject.getString("id"));
 			//exams表
 			//申请科室
-			params.put("application_department", record.getStr("department") == null ? "" : record.getStr("department"));
+			params.put("application_department", "");
 			//申请医生
-			params.put("application_doctor", record.getStr("clinicaldoctor") == null ? "" : record.getStr("clinicaldoctor"));
+			params.put("application_doctor", "");
 			//临床诊断
-			params.put("clin_diag", record.getStr("diagnosis") == null ? "" : record.getStr("diagnosis"));
+			params.put("clin_diag", "");
 			//症状
-			params.put("clin_symp", record.getStr("symptom") == null ? "" : record.getStr("symptom"));
+			params.put("clin_symp", "");
 			//patient_infos表
 			//患者姓名
-			params.put("name", record.getStr("patientname"));
+			params.put("name", record.getStr("name"));
 			//患者手机号
-			params.put("phone", record.getStr("phone") == null ? "" : record.getStr("phone"));
+			params.put("phone", "");
 			//患者身份证号
-			params.put("card_num", record.getStr("idcard") == null ? "" : record.getStr("idcard"));
+			params.put("card_num", "");
 			//门诊号住院号
 			params.put("hopitalized_no", "");
+			params.put("exam_project", record.getStr("project"));
+
 			ThreadPoolService tService = ServiceFactory.getService(ThreadPoolService.class);
 			tService.execute(() -> {
 				dService.updatePatientInfo(params);