diff --git a/jero-boot/jero-boot-module-system/pom.xml b/jero-boot/jero-boot-module-system/pom.xml index c00599e8f..902831bae 100644 --- a/jero-boot/jero-boot-module-system/pom.xml +++ b/jero-boot/jero-boot-module-system/pom.xml @@ -50,7 +50,13 @@ - + + com.belerweb + pinyin4j + 2.5.1 + compile + + \ No newline at end of file diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/SysDictController.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/SysDictController.java index 585aa4081..6d06a5737 100644 --- a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/SysDictController.java +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/SysDictController.java @@ -344,12 +344,17 @@ public class SysDictController { Result result = new Result(); try { if(StringUtils.isEmpty(sysDict.getDictName())){ - sysDict.setDictCode(sysDict.getDictName()); - }else { - sysDict.setCreateTime(new Date()); - sysDict.setDelFlag(CommonConstant.DEL_FLAG_0); + String pinYin = sysDictService.getAllPinyin(sysDict.getDictName()); + sysDict.setDictCode(pinYin); - sysDictService.save(sysDict); + }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(); @@ -362,6 +367,7 @@ public class SysDictController { return result; } + /** * @功能:编辑 * @param sysDict @@ -377,7 +383,7 @@ public class SysDictController { result.error500("未找到对应实体"); }else { if (org.apache.commons.lang3.StringUtils.isNotBlank(String.valueOf(sysDict.getIsReadOnly()))) { - if (sysDict.getIsReadOnly() == 1) { + if (FixedFieldEnum.FIXED_FIELD_ENUM.getValue().equals(sysDict.getIsReadOnly())) { result.error500("固定字段,不可删除"); }else{ sysDict.setUpdateTime(new Date()); @@ -420,6 +426,37 @@ public class SysDictController { } return result; } + + /** + * @功能:删除 + * @param id + * @return + */ + @ApiOperation(value = "字典控制器-逻辑删除字典", notes = "字典控制器-逻辑删除字典") + @RequiresRoles({"admin"}) + @DeleteMapping(value = "/logicDelete") + @CacheEvict(value=CacheConstant.SYS_DICT_CACHE, allEntries=true) + public Result logicDelete(@RequestParam(name="id",required=true) String id) { + + Result result = new Result(); + 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(); + } + } + }catch (Exception e) { + log.error(e.getMessage(),e); + result.error500("删除失败"); + } + return result; + } /** * @功能:批量删除 * @param ids diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/SysDictItemController.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/SysDictItemController.java index 127cd74a8..97f0c4fb7 100644 --- a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/SysDictItemController.java +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/SysDictItemController.java @@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.jero.common.api.vo.Result; import com.jero.common.constant.CacheConstant; +import com.jero.common.constant.CommonConstant; import com.jero.common.system.query.QueryGenerator; import com.jero.modules.enums.FixedFieldEnum; import com.jero.modules.system.entity.SysDictItem; @@ -73,6 +74,7 @@ public class SysDictItemController { Result result = new Result(); try { sysDictItem.setCreateTime(new Date()); + sysDictItem.setDelFlag(CommonConstant.DEL_FLAG_0); sysDictItemService.save(sysDictItem); result.success("保存成功!"); } catch (Exception e) { @@ -143,6 +145,34 @@ public class SysDictItemController { return result; } + /** + * @功能:逻辑删除字典数据 + * @param id + * @return + */ + //@RequiresRoles({"admin"}) + @RequiresPermissions("sys:dict:list") + @RequestMapping(value = "/logicDelete", method = RequestMethod.DELETE) + @CacheEvict(value=CacheConstant.SYS_DICT_CACHE, allEntries=true) + public Result logicDelete(@RequestParam(name="id",required=true) String id) { + Result result = new Result(); + SysDictItem joinSystem = sysDictItemService.getById(id); + if (joinSystem == null) { + result.error500("未找到对应实体"); + }else { + if (org.apache.commons.lang3.StringUtils.isNotBlank(String.valueOf(joinSystem.getIsReadOnly()))) { + if (FixedFieldEnum.FIXED_FIELD_ENUM.getValue().equals(joinSystem.getIsReadOnly())) { + result.error500("固定字段,不可删除"); + } + else { + joinSystem.setDelFlag(CommonConstant.DEL_FLAG_1); + result.success("删除成功!"); + } + } + } + return result; + } + /** * @功能:批量删除字典数据 * @param ids diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysDict.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysDict.java index d1d3dfa8a..b89bac4fb 100644 --- a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysDict.java +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysDict.java @@ -91,8 +91,9 @@ public class SysDict implements Serializable { /** * 是否为标签内容-数据字典(1是 0否) */ - @Excel(name = "是否为标签内容-数据字典(1是 0否)", width = 15, dictTable = "onl_cgform_field",dicText = "is_tag_dict", dicCode = "is_tag_dict") + @Excel(name = "是否为标签内容-数据字典(1是 0否)", width = 15, dicText = "is_tag_dict", dicCode = "is_tag_dict") @Dict(dictTable = "onl_cgform_field", dicText = "is_tag_dict", dicCode = "is_tag_dict") + @ApiModelProperty(value = "是否为标签内容-数据字典(1是 0否)") private java.lang.Integer isTagDict; /** diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysDictItem.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysDictItem.java index 8e568e8bc..77d098f5e 100644 --- a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysDictItem.java +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysDictItem.java @@ -3,6 +3,7 @@ package com.jero.modules.system.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; import com.jero.common.aspect.annotation.Dict; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -47,7 +48,7 @@ public class SysDictItem implements Serializable { private String itemText; /** - * 字典项值 + * 字典项值-英文名 */ @Excel(name = "字典项值", width = 30) private String itemValue; @@ -82,7 +83,9 @@ public class SysDictItem implements Serializable { private Date updateTime; /**是否为标签内容-数据字典(1是 0否)*/ - @Excel(name = "是否为标签内容", width = 15) + @Excel(name = "是否为标签内容-数据字典(1是 0否)", width = 15, dicText = "is_tag_dict", dicCode = "is_tag_dict") + @Dict(dictTable = "onl_cgform_field", dicText = "is_tag_dict", dicCode = "is_tag_dict") + @ApiModelProperty(value = "是否为标签内容-数据字典(1是 0否)") private java.lang.Integer isTagDict; /**是否是只读(2字段固定,内部可配1固定字段 0非固定字段)*/ @@ -97,4 +100,7 @@ public class SysDictItem implements Serializable { @Dict(dicCode = "attribute_type") private java.lang.String attributeType; + /**逻辑删除标识*/ + @TableLogic + public Integer delFlag; } diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/ISysDictService.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/ISysDictService.java index 8735f66d0..dfef477b9 100644 --- a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/ISysDictService.java +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/ISysDictService.java @@ -157,4 +157,7 @@ public interface ISysDictService extends IService { * @return */ Integer queryExitData(SysDict sysDict); + + + String getAllPinyin(String dictName); } diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysDictItemServiceImpl.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysDictItemServiceImpl.java index b1e9a426f..3597c2798 100644 --- a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysDictItemServiceImpl.java +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysDictItemServiceImpl.java @@ -1,9 +1,9 @@ package com.jero.modules.system.service.impl; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.jero.modules.system.entity.SysDictItem; import com.jero.modules.system.mapper.SysDictItemMapper; import com.jero.modules.system.service.ISysDictItemService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysDictServiceImpl.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysDictServiceImpl.java index 47c5339a5..59cd37496 100644 --- a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysDictServiceImpl.java +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysDictServiceImpl.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import lombok.extern.slf4j.Slf4j; import com.jero.common.constant.CacheConstant; import com.jero.common.constant.CommonConstant; import com.jero.common.system.vo.DictModel; @@ -17,6 +16,13 @@ import com.jero.modules.system.mapper.SysDictItemMapper; 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; @@ -341,10 +347,66 @@ public class SysDictServiceImpl extends ServiceImpl impl @Override public Integer queryExitData(SysDict sysDict) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - if (StringUtils.isNotBlank(sysDict.getDictName())) {// && StringUtils.isNotBlank(onlCgformTag.getDbFieldName())) { + if (StringUtils.isNotBlank(sysDict.getDictName())) { queryWrapper.eq(SysDict::getDictName, sysDict.getDictName()).and(wq -> wq.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_NUMBER:1-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(); + } + + + + } diff --git a/jero-boot/jero-boot-modules/pom.xml b/jero-boot/jero-boot-modules/pom.xml index 531616feb..df7d93333 100644 --- a/jero-boot/jero-boot-modules/pom.xml +++ b/jero-boot/jero-boot-modules/pom.xml @@ -107,6 +107,11 @@ org.springframework.cloud spring-cloud-starter-openfeign + + com.belerweb + pinyin4j + 2.5.1 +