Commit 6383de33 authored by jiawei's avatar jiawei

展板新添加两个字段 name_pin_yin name_first_pin_yin 用于模糊搜索

/cmRestApi/exhibitionBoard/search=======》》》模糊搜索查询 支持 展板拼音、首字母拼音、编号serial_no
parent 0f18777f
...@@ -128,6 +128,13 @@ ...@@ -128,6 +128,13 @@
<version>5.0.0</version> <version>5.0.0</version>
</dependency> </dependency>
<!-- 中文拼音支持 -->
<dependency>
<groupId>com.belerweb</groupId>
<artifactId>pinyin4j</artifactId>
<version>2.5.1</version>
</dependency>
<!-- Swagger2 Document --> <!-- Swagger2 Document -->
<dependency> <dependency>
<groupId>io.springfox</groupId> <groupId>io.springfox</groupId>
......
package cn.chnmuseum.party.common.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;
/**
* 获取中文拼音工具类
*
* @author jiawei
*/
public class PinYinUtil {
/**
* 获取中文对应的拼音
*
* @param chinese 中文
* @param firstWord 是否只取首字母
* @param appendNonChinese 中文之间出现字母是是否加入返回的拼音串
* @return 中文对应的拼音
*/
public static String getPinYin(String chinese, Boolean firstWord, Boolean appendNonChinese) {
//汉语拼音输出格式
HanyuPinyinOutputFormat pinyinOutputFormat = new HanyuPinyinOutputFormat();
//大小写设置 大写
pinyinOutputFormat.setCaseType(HanyuPinyinCaseType.UPPERCASE);
//音标设置 无音标
pinyinOutputFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
//特殊音标ü设置 用V表示
pinyinOutputFormat.setVCharType(HanyuPinyinVCharType.WITH_V);
char[] charArray = chinese.trim().toCharArray();
StringBuilder stringBuilder = new StringBuilder();
for (char c : charArray) {
//匹配如果是汉字
if (Character.toString(c).matches("[\\u4E00-\\u9FA5]+")) {
String[] pinyinStringArray;
try {
pinyinStringArray = PinyinHelper.toHanyuPinyinStringArray(c, pinyinOutputFormat);
} catch (BadHanyuPinyinOutputFormatCombination badHanyuPinyinOutputFormatCombination) {
badHanyuPinyinOutputFormatCombination.printStackTrace();
return null;
}
if (firstWord != null && Boolean.TRUE.equals(firstWord)) {
//取拼音首字母
stringBuilder.append(pinyinStringArray[0].charAt(0));
} else {
//取全拼音
stringBuilder.append(pinyinStringArray[0]);
}
} else {
//出现不是中文时,拼接到拼音
if (appendNonChinese != null && Boolean.TRUE.equals(appendNonChinese)) {
stringBuilder.append(c);
}
}
}
return stringBuilder.toString();
}
}
...@@ -33,7 +33,11 @@ public interface LearningContentBoardMapper extends BaseMapper<LearningContentBo ...@@ -33,7 +33,11 @@ public interface LearningContentBoardMapper extends BaseMapper<LearningContentBo
+ "WHERE lcb.exhibition_board_id = eb.id " + "WHERE lcb.exhibition_board_id = eb.id "
+ "and eb.is_published = 1 and is_deleted = 0 " + "and eb.is_published = 1 and is_deleted = 0 "
+ "<if test='learningContentId != null'>and lcb.learning_content_id = #{learningContentId} </if>" + "<if test='learningContentId != null'>and lcb.learning_content_id = #{learningContentId} </if>"
+ "<if test='nameOrCode != null'>and eb.name like CONCAT('%', #{nameOrCode}, '%') </if>" + "<if test='nameOrCode != null'>"
+"AND ( eb.name LIKE CONCAT('%', #{nameOrCode}, '%') OR eb.name_pin_yin LIKE CONCAT('%', #{nameOrCode}, '%') " +
"OR eb.name_first_pin_yin LIKE CONCAT('%', #{nameOrCode}, '%') " +
"OR eb.serial_no LIKE CONCAT('%', #{nameOrCode}, '%'))"
+ "</if>"
+ "order by lcb.sortorder desc" + "order by lcb.sortorder desc"
+ "</script>" + "</script>"
) )
......
...@@ -47,6 +47,20 @@ public class ExhibitionBoard implements Serializable { ...@@ -47,6 +47,20 @@ public class ExhibitionBoard implements Serializable {
@Length(max = 20, message = "展板名称字数不能超过20") @Length(max = 20, message = "展板名称字数不能超过20")
private String name; private String name;
/**
* 展板名称全拼音
*/
@ApiModelProperty(hidden = true)
@TableField("name_pin_yin")
private String namePinYin;
/**
* 展板名称拼音首字母
*/
@ApiModelProperty(hidden = true)
@TableField("name_first_pin_yin")
private String nameFirstPinYin;
@ApiModelProperty("展板内容编号") @ApiModelProperty("展板内容编号")
@TableField(value = "serial_no") @TableField(value = "serial_no")
private String serialNo; private String serialNo;
......
...@@ -4,6 +4,7 @@ import cn.chnmuseum.party.common.enums.*; ...@@ -4,6 +4,7 @@ import cn.chnmuseum.party.common.enums.*;
import cn.chnmuseum.party.common.log.MethodLog; import cn.chnmuseum.party.common.log.MethodLog;
import cn.chnmuseum.party.common.log.OperModule; import cn.chnmuseum.party.common.log.OperModule;
import cn.chnmuseum.party.common.log.OperType; import cn.chnmuseum.party.common.log.OperType;
import cn.chnmuseum.party.common.util.PinYinUtil;
import cn.chnmuseum.party.common.validator.groups.Add; import cn.chnmuseum.party.common.validator.groups.Add;
import cn.chnmuseum.party.common.validator.groups.Update; import cn.chnmuseum.party.common.validator.groups.Update;
import cn.chnmuseum.party.common.vo.GenericPageParam; import cn.chnmuseum.party.common.vo.GenericPageParam;
...@@ -80,6 +81,8 @@ public class ExhibitionBoardController extends BaseController { ...@@ -80,6 +81,8 @@ public class ExhibitionBoardController extends BaseController {
exhibitionBoard.setAuditStatus(AuditStatusEnum.TBC.name()); exhibitionBoard.setAuditStatus(AuditStatusEnum.TBC.name());
exhibitionBoard.setPublished(false); exhibitionBoard.setPublished(false);
exhibitionBoard.setDeleted(false); exhibitionBoard.setDeleted(false);
//填充拼音
fillPinYin(exhibitionBoard);
// 保存业务节点信息 // 保存业务节点信息
boolean result = exhibitionBoardService.save(exhibitionBoard); boolean result = exhibitionBoardService.save(exhibitionBoard);
// 返回操作结果 // 返回操作结果
...@@ -117,6 +120,20 @@ public class ExhibitionBoardController extends BaseController { ...@@ -117,6 +120,20 @@ public class ExhibitionBoardController extends BaseController {
} }
} }
/**
* 展板加上中文拼音,用于拼音或拼音首字母搜索
*
* @param exhibitionBoard
*/
private void fillPinYin(ExhibitionBoard exhibitionBoard) {
String name = exhibitionBoard.getName();
if (StringUtils.isBlank(name)) {
return;
}
exhibitionBoard.setNamePinYin(PinYinUtil.getPinYin(name, Boolean.FALSE, Boolean.FALSE));
exhibitionBoard.setNameFirstPinYin(PinYinUtil.getPinYin(name, Boolean.TRUE, Boolean.FALSE));
}
@PutMapping("/update") @PutMapping("/update")
@RequiresAuthentication //@RequiresPermissions("exhibition:board:update") @RequiresAuthentication //@RequiresPermissions("exhibition:board:update")
@ApiOperation(value = "修改展板信息", notes = "修改展板信息") @ApiOperation(value = "修改展板信息", notes = "修改展板信息")
...@@ -156,6 +173,8 @@ public class ExhibitionBoardController extends BaseController { ...@@ -156,6 +173,8 @@ public class ExhibitionBoardController extends BaseController {
final ExhibitionBoard one = this.exhibitionBoardService.getById(exhibitionBoard.getId()); final ExhibitionBoard one = this.exhibitionBoardService.getById(exhibitionBoard.getId());
one.setAuditStatus(AuditStatusEnum.TBC.name()); one.setAuditStatus(AuditStatusEnum.TBC.name());
//填充拼音
fillPinYin(one);
this.exhibitionBoardService.updateById(one); this.exhibitionBoardService.updateById(one);
final TUser user = getcurUser(); final TUser user = getcurUser();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment