diff --git a/epmet-module/data-statistical/data-statistical-server/pom.xml b/epmet-module/data-statistical/data-statistical-server/pom.xml
index aca19d6a19..61af3816fc 100644
--- a/epmet-module/data-statistical/data-statistical-server/pom.xml
+++ b/epmet-module/data-statistical/data-statistical-server/pom.xml
@@ -93,6 +93,11 @@
easyexcel
2.2.6
+
+ io.github.wnjustdoit
+ pinyin4j
+ 2.6.0
+
diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/screen/IndexGroupEntity.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/screen/IndexGroupEntity.java
index 24df1ef18a..dcd8c63648 100644
--- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/screen/IndexGroupEntity.java
+++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/screen/IndexGroupEntity.java
@@ -45,6 +45,11 @@ public class IndexGroupEntity extends BaseEpmetEntity {
*/
private String indexId;
+ /**
+ * 指标code
+ */
+ private String indexCode;
+
/**
* 是否启用:启用:enable 禁用:disabled
*/
diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/screen/IndexGroupTemplateEntity.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/screen/IndexGroupTemplateEntity.java
index 3348ebdeda..6a6408f7a1 100644
--- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/screen/IndexGroupTemplateEntity.java
+++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/screen/IndexGroupTemplateEntity.java
@@ -40,6 +40,11 @@ public class IndexGroupTemplateEntity extends BaseEpmetEntity {
*/
private String indexId;
+ /**
+ * 指标code
+ */
+ private String indexCode;
+
/**
* 是否启用:启用:enable 禁用:disabled
*/
diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/model/IndexExcelDataListener.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/model/IndexExcelDataListener.java
index 76f0897890..931b9afd55 100644
--- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/model/IndexExcelDataListener.java
+++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/model/IndexExcelDataListener.java
@@ -10,6 +10,7 @@ import com.epmet.entity.screen.IndexGroupTemplateEntity;
import com.epmet.service.screen.IndexDictService;
import com.epmet.service.screen.IndexGroupDetailTemplateService;
import com.epmet.service.screen.IndexGroupTemplateService;
+import com.epmet.util.Pinyin4jUtil;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -118,6 +119,7 @@ public class IndexExcelDataListener extends AnalysisEventListener {
group1.setIndexId(indexDictEntity.getId());
group1.setParentIndexGroupId("0");
group1.setId(level1GroupId);
+ group1.setIndexCode(Pinyin4jUtil.getFirstSpellPinYin(indexDictEntity.getIndexName(),true));
indexGroupMap.put(index.getLevel1Index(), group1);
}
@@ -132,6 +134,7 @@ public class IndexExcelDataListener extends AnalysisEventListener {
group2.setIndexId(indexDictEntity.getId());
group2.setParentIndexGroupId(level1GroupId);
group2.setId(level2GroupId);
+ group2.setIndexCode(Pinyin4jUtil.getFirstSpellPinYin(indexDictEntity.getIndexName(),true));
indexGroupMap.put(level4Index, group2);
//构建 分组明细
templateEntity = indexGroupDetailMap.get(level4Index);
@@ -156,6 +159,7 @@ public class IndexExcelDataListener extends AnalysisEventListener {
group1.setIndexId(indexDictEntity.getId());
group1.setParentIndexGroupId("0");
group1.setId(level1GroupId);
+ group1.setIndexCode(Pinyin4jUtil.getFirstSpellPinYin(indexDictEntity.getIndexName(),true));
indexGroupMap.put(index.getLevel1Index(), group1);
}
@@ -170,6 +174,7 @@ public class IndexExcelDataListener extends AnalysisEventListener {
group2.setIndexId(indexDictEntity.getId());
group2.setParentIndexGroupId(level1GroupId);
group2.setId(level2GroupId);
+ group2.setIndexCode(Pinyin4jUtil.getFirstSpellPinYin(indexDictEntity.getIndexName(),true));
indexGroupMap.put(level2Index, group2);
//构建 分组明细
templateEntity = indexGroupDetailMap.get(level2Index);
diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/util/Pinyin4jUtil.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/util/Pinyin4jUtil.java
new file mode 100644
index 0000000000..5ea9d4b828
--- /dev/null
+++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/util/Pinyin4jUtil.java
@@ -0,0 +1,170 @@
+package com.epmet.util;
+
+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 java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+
+/**
+ * @author liujianjun
+ */
+public class Pinyin4jUtil {
+ private static Map duoyinMap;
+ static {
+ duoyinMap = new HashMap<>();
+ duoyinMap.put('区',new String[]{"qu"});
+ duoyinMap.put('系',new String[]{"xi"});
+ }
+
+ /**
+ * getFirstSpellPinYin:(多音字的时候获取第一个).
+ *
+ * @param src 传入的拼音字符串,以逗号隔开
+ * @param isFullSpell 是否全拼,true:全拼,false:第一个汉字全拼(其它汉字取首字母)
+ * @return 第一个拼音
+ */
+ public static String getFirstSpellPinYin(String src, boolean isFullSpell) {
+ String targetStr = Pinyin4jUtil.makeStringByStringSet(Pinyin4jUtil.getPinyin(src, isFullSpell));
+ System.out.println(targetStr);
+ String[] split = targetStr.split(",");
+ if (split.length > 1) {
+ targetStr = split[0];
+ }
+ return targetStr;
+ }
+
+ /**
+ * makeStringByStringSet:(拼音字符串集合转换字符串(逗号分隔)).
+ *
+ * @param stringSet 拼音集合
+ * @return 带逗号字符串
+ */
+ public static String makeStringByStringSet(Set stringSet) {
+ StringBuilder str = new StringBuilder();
+ int i = 0;
+ if (stringSet.size() > 0) {
+ for (String s : stringSet) {
+ if (i == stringSet.size() - 1) {
+ str.append(s);
+ } else {
+ str.append(s + ",");
+ }
+ i++;
+ }
+ }
+ return str.toString().toLowerCase();
+ }
+
+ /**
+ * getPinyin:(获取汉字拼音).
+ *
+ * @param src 汉字
+ * @param isFullSpell 是否全拼,如果为true:全拼,false:首字全拼
+ * @return
+ */
+ public static Set getPinyin(String src, boolean isFullSpell) {
+ if (src != null && !src.trim().equalsIgnoreCase("")) {
+ char[] srcChar;
+ srcChar = src.toCharArray();
+ // 汉语拼音格式输出类
+ HanyuPinyinOutputFormat hanYuPinOutputFormat = new HanyuPinyinOutputFormat();
+
+ // 输出设置,大小写,音标方式等
+ hanYuPinOutputFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
+ hanYuPinOutputFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
+ hanYuPinOutputFormat.setVCharType(HanyuPinyinVCharType.WITH_V);
+
+ String[][] temp = new String[src.length()][];
+ for (int i = 0; i < srcChar.length; i++) {
+ char c = srcChar[i];
+ if (String.valueOf(c).matches("[\\u4E00-\\u9FA5]+")) {//中文
+ try {
+ String[] py = duoyinMap.get(c);
+ if (py != null){
+ temp[i] = py;
+ }else{
+ temp[i] = PinyinHelper.toHanyuPinyinStringArray(srcChar[i], hanYuPinOutputFormat);
+ }
+
+ if (!isFullSpell) {
+ if (i == 0) {
+ temp[i] = temp[i];
+ } else {
+ String[] tTemps = new String[temp[i].length];
+ for (int j = 0; j < temp[i].length; j++) {
+ char t = temp[i][j].charAt(0);
+ tTemps[j] = Character.toString(t);
+ }
+ temp[i] = tTemps;
+ }
+ }
+ } catch (BadHanyuPinyinOutputFormatCombination e) {
+ e.printStackTrace();
+ }
+ } else if (((int) c >= 65 && (int) c <= 90)
+ || ((int) c >= 97 && (int) c <= 122)) {//英文
+ temp[i] = new String[]{String.valueOf(srcChar[i])};
+ } else {
+ temp[i] = new String[]{""};
+ }
+ }
+ String[] pingyinArray = exchange(temp);
+ Set pinyinSet = new HashSet();
+ for (int i = 0; i < pingyinArray.length; i++) {
+ pinyinSet.add(pingyinArray[i]);
+ }
+ return pinyinSet;
+ }
+ return null;
+ }
+
+ /**
+ * 递归
+ *
+ * @param strJaggedArray
+ * @return
+ */
+ public static String[] exchange(String[][] strJaggedArray) {
+ String[][] temp = doExchange(strJaggedArray);
+ return temp[0];
+ }
+
+ /**
+ * 递归
+ *
+ * @param strJaggedArray
+ * @return
+ */
+ private static String[][] doExchange(String[][] strJaggedArray) {
+ int len = strJaggedArray.length;
+ if (len >= 2) {
+ int len1 = strJaggedArray[0].length;
+ int len2 = strJaggedArray[1].length;
+ int newlen = len1 * len2;
+ String[] temp = new String[newlen];
+ int Index = 0;
+ for (int i = 0; i < len1; i++) {
+ for (int j = 0; j < len2; j++) {
+ temp[Index] = strJaggedArray[0][i] + strJaggedArray[1][j];
+ Index++;
+ }
+ }
+ String[][] newArray = new String[len - 1][];
+ for (int i = 2; i < len; i++) {
+ newArray[i - 1] = strJaggedArray[i];
+ }
+ newArray[0] = temp;
+ return doExchange(newArray);
+ } else {
+ return strJaggedArray;
+ }
+ }
+}
diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/bootstrap.yml b/epmet-module/data-statistical/data-statistical-server/src/main/resources/bootstrap.yml
index 709e17ab36..ce995b962e 100644
--- a/epmet-module/data-statistical/data-statistical-server/src/main/resources/bootstrap.yml
+++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/bootstrap.yml
@@ -174,3 +174,7 @@ thread:
queueCapacity: @thread.pool.queue-capacity@
keepAlive: @thread.pool.keep-alive@
+dingTalk:
+ robot:
+ webHook: @dingTalk.robot.webHook@
+ secret: @dingTalk.robot.secret@
diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/screen/IndexGroupTemplateDao.xml b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/screen/IndexGroupTemplateDao.xml
index 6adfa4474b..29ff0c7e17 100644
--- a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/screen/IndexGroupTemplateDao.xml
+++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/screen/IndexGroupTemplateDao.xml
@@ -7,7 +7,7 @@
\ No newline at end of file