标签内容-逻辑删除+code设为拼音

This commit is contained in:
xiejunyu
2022-03-02 16:09:12 +08:00
parent 97f21abbf1
commit 7f8b13478b
6 changed files with 178 additions and 103 deletions
@@ -22,6 +22,7 @@ import com.jero.modules.system.model.TreeSelectModel;
import com.jero.modules.system.service.ISysDictItemService;
import com.jero.modules.system.service.ISysDictService;
import com.jero.modules.system.vo.SysDictPage;
import com.jero.modules.utils.HanYuPinYinUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
@@ -356,23 +357,21 @@ public class SysDictController {
public Result<SysDict> add(@RequestBody SysDict sysDict) {
Result<SysDict> result = new Result<SysDict>();
try {
if(StringUtils.isEmpty(sysDict.getDictName())){
String pinYin = sysDictService.getAllPinyin(sysDict.getDictName());
Integer count = sysDictService.queryExitData(sysDict);
System.out.println("count="+count);
if (count > 0) {
sysDict.setDelFlag(CommonConstant.DEL_FLAG_0);
System.out.println();
} else {
String pinYin = HanYuPinYinUtil.changeToNumberPinYin(sysDict.getDictName());
sysDict.setDictCode(pinYin);
}else {
Integer count = sysDictService.queryExitData(sysDict);
if (count > 0) {
sysDict.setDelFlag(CommonConstant.DEL_FLAG_0);
} else {
sysDict.setCreateTime(new Date());
sysDictService.save(sysDict);
}
result.success("保存成功!");
//添加成功后需要刷新缓存
sysDictService.refreshCache();
sysDict.setCreateTime(new Date());
sysDict.setDelFlag(CommonConstant.DEL_FLAG_0);
sysDictService.save(sysDict);
}
result.success("保存成功!");
//添加成功后需要刷新缓存
sysDictService.refreshCache();
} catch (Exception e) {
log.error(e.getMessage(),e);
result.error500("操作失败");
@@ -380,7 +379,6 @@ public class SysDictController {
return result;
}
/**
* @功能:编辑
* @param sysDict
@@ -395,11 +393,13 @@ public class SysDictController {
if (sysdict == null) {
result.error500("未找到对应实体");
}else {
if (org.apache.commons.lang3.StringUtils.isNotBlank(String.valueOf(sysDict.getIsReadOnly()))) {
if (StringUtils.isNotBlank(String.valueOf(sysDict.getIsReadOnly()))) {
if (FixedFieldEnum.FIXED_FIELD_ENUM.getValue().equals(sysDict.getIsReadOnly())) {
result.error500("固定字段,不可删除");
result.error500("固定字段,不可修改");
}else{
sysDict.setUpdateTime(new Date());
String pinYin = HanYuPinYinUtil.changeToNumberPinYin(sysDict.getDictName());
sysDict.setDictCode(pinYin);
boolean ok = sysDictService.updateById(sysDict);
if (ok) {
result.success("编辑成功!");
@@ -441,7 +441,7 @@ public class SysDictController {
}
/**
* @功能:删除
* @功能:逻辑删除
* @param id
* @return
*/
@@ -454,15 +454,11 @@ public class SysDictController {
Result<SysDict> result = new Result<SysDict>();
try{
SysDict sysDict = sysDictService.queryById(id);
if (StringUtils.isNotBlank(String.valueOf(sysDict.getIsReadOnly()))) {
if (FixedFieldEnum.FIXED_FIELD_ENUM.getValue().equals(sysDict.getIsReadOnly())) {
result.error500("固定字段,不可删除");
} else {
sysDict.setDelFlag(CommonConstant.DEL_FLAG_1);
result.success("删除成功!");
//添加成功后需要刷新缓存
sysDictService.refreshCache();
}
if (FixedFieldEnum.FIXED_FIELD_ENUM.getValue().equals(sysDict.getIsReadOnly())) {
result.error500("固定字段,不可删除");
} else {
sysDictService.updateDictDelFlag(CommonConstant.DEL_FLAG_1,id);
result.success("删除成功!");
}
}catch (Exception e) {
log.error(e.getMessage(),e);
@@ -159,6 +159,4 @@ public interface ISysDictService extends IService<SysDict> {
*/
Integer queryExitData(SysDict sysDict);
String getAllPinyin(String dictName);
}
@@ -18,12 +18,6 @@ import com.jero.modules.system.mapper.SysDictMapper;
import com.jero.modules.system.model.TreeSelectModel;
import com.jero.modules.system.service.ISysDictService;
import lombok.extern.slf4j.Slf4j;
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 org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.Cacheable;
@@ -367,7 +361,7 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> impl
}
/**
* 根据标签名称,标签类型一致还原数据
* 根据标签名称,字典Code值,标签类型一致还原数据
*
* @return
*/
@@ -375,65 +369,11 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> impl
public Integer queryExitData(SysDict sysDict) {
LambdaQueryWrapper<SysDict> queryWrapper = new LambdaQueryWrapper<>();
if (StringUtils.isNotBlank(sysDict.getDictName())) {
queryWrapper.eq(SysDict::getDictName, sysDict.getDictName()).and(wq -> wq.eq(SysDict::getAttributeType, sysDict.getAttributeType()));
queryWrapper.eq(SysDict::getDictName, sysDict.getDictName()).eq(SysDict::getDictCode,sysDict.getDictCode()).eq(SysDict::getAttributeType, sysDict.getAttributeType());
}
Integer count = sysDictMapper.selectCount(queryWrapper);
return count;
}
/**
* 将Code值设为字典名称的中文拼音
*/
public String getAllPinyin(String hanzi) {
//输出格式设置
HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
/**
* 输出大小写设置
*
* LOWERCASE:输出小写
* UPPERCASE:输出大写
*/
format.setCaseType(HanyuPinyinCaseType.LOWERCASE);
/**
* 输出音标设置
*
* WITH_TONE_MARK:直接用音标符(必须设置WITH_U_UNICODE,否则会抛出异常)
* WITH_TONE_NUMBER1-4数字表示音标
* WITHOUT_TONE:没有音标
*/
format.setToneType(HanyuPinyinToneType.WITH_TONE_MARK);
/**
* 特殊音标ü设置
*
* 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();
}
}
@@ -0,0 +1,145 @@
package com.jero.modules.utils;
import com.github.stuxuhai.jpinyin.ChineseHelper;
import com.github.stuxuhai.jpinyin.PinyinFormat;
import com.github.stuxuhai.jpinyin.PinyinHelper;
public class HanYuPinYinUtil {
/**
* 转换为有声调的拼音字符串
* @param pinYinStr 汉字
* @return 有声调的拼音字符串
*/
public String changeToMarkPinYin(String pinYinStr){
String tempStr = null;
try
{
tempStr = PinyinHelper.convertToPinyinString(pinYinStr, " ", PinyinFormat.WITH_TONE_MARK);
} catch (Exception e)
{
e.printStackTrace();
}
return tempStr;
}
/**
* 转换为数字声调字符串
* @param pinYinStr 需转换的汉字
* @return 转换完成的拼音字符串
*/
public static String changeToNumberPinYin(String pinYinStr){
String tempStr = null;
try
{
tempStr = PinyinHelper.convertToPinyinString(pinYinStr, " ", PinyinFormat.WITH_TONE_NUMBER);
} catch (Exception e)
{
e.printStackTrace();
}
return tempStr;
}
/**
* 转换为不带音调的拼音字符串
* @param pinYinStr 需转换的汉字
* @return 拼音字符串
*/
public static String changeToTonePinYin(String pinYinStr){
String tempStr = null;
try{
tempStr = PinyinHelper.convertToPinyinString(pinYinStr, " ", PinyinFormat.WITHOUT_TONE);
} catch (Exception e)
{
e.printStackTrace();
}
return tempStr;
}
/**
* 转换为每个汉字对应拼音首字母字符串
* @param pinYinStr 需转换的汉字
* @return 拼音字符串
*/
public String changeToGetShortPinYin(String pinYinStr){
String tempStr = null;
try
{
tempStr = PinyinHelper.getShortPinyin(pinYinStr);
} catch (Exception e)
{
e.printStackTrace();
}
return tempStr;
}
/**
* 检查汉字是否为多音字
* @param pinYinStr 需检查的汉字
* @return true 多音字,false 不是多音字
*/
public boolean checkPinYin(char pinYinStr){
boolean check = false;
try
{
check = PinyinHelper.hasMultiPinyin(pinYinStr);
} catch (Exception e) {
e.printStackTrace();
}
return check;
}
/**
* 简体转换为繁体
* @param pinYinStr
* @return
*/
public String changeToTraditional(String pinYinStr){
String tempStr = null;
try
{
tempStr = ChineseHelper.convertToTraditionalChinese(pinYinStr);
} catch (Exception e)
{
e.printStackTrace();
}
return tempStr;
}
/**
* 繁体转换为简体
* @param pinYinSt
* @return
*/
public String changeToSimplified(String pinYinSt){
String tempStr = null;
try
{
tempStr = ChineseHelper.convertToSimplifiedChinese(pinYinSt);
} catch (Exception e)
{
e.printStackTrace();
}
return tempStr;
}
}