diff --git a/openhis-server-new/core-admin/src/main/java/com/core/web/controller/system/SysDictDataController.java b/openhis-server-new/core-admin/src/main/java/com/core/web/controller/system/SysDictDataController.java index e97c4ec7..40728ed6 100644 --- a/openhis-server-new/core-admin/src/main/java/com/core/web/controller/system/SysDictDataController.java +++ b/openhis-server-new/core-admin/src/main/java/com/core/web/controller/system/SysDictDataController.java @@ -62,11 +62,12 @@ public class SysDictDataController extends BaseController { } /** - * 根据字典类型查询字典数据信息 + * 根据字典类型查询字典数据信息(支持拼音搜索) */ @GetMapping(value = "/type/{dictType}") - public AjaxResult dictType(@PathVariable String dictType) { - List data = dictTypeService.selectDictDataByType(dictType); + public AjaxResult dictType(@PathVariable String dictType, + @RequestParam(value = "searchKey", required = false) String searchKey) { + List data = dictTypeService.selectDictDataByType(dictType, searchKey); if (StringUtils.isNull(data)) { data = new ArrayList(); } diff --git a/openhis-server-new/core-common/src/main/java/com/core/common/core/domain/entity/SysDictData.java b/openhis-server-new/core-common/src/main/java/com/core/common/core/domain/entity/SysDictData.java index 91696f1f..82eacaff 100644 --- a/openhis-server-new/core-common/src/main/java/com/core/common/core/domain/entity/SysDictData.java +++ b/openhis-server-new/core-common/src/main/java/com/core/common/core/domain/entity/SysDictData.java @@ -53,6 +53,9 @@ public class SysDictData extends BaseEntity { @Excel(name = "状态", readConverterExp = "0=正常,1=停用") private String status; + /** 拼音首字母 */ + private String pyStr; + public Long getDictCode() { return dictCode; } @@ -136,13 +139,21 @@ public class SysDictData extends BaseEntity { this.status = status; } + public String getPyStr() { + return pyStr; + } + + public void setPyStr(String pyStr) { + this.pyStr = pyStr; + } + @Override public String toString() { return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE).append("dictCode", getDictCode()) .append("dictSort", getDictSort()).append("dictLabel", getDictLabel()).append("dictValue", getDictValue()) .append("dictType", getDictType()).append("cssClass", getCssClass()).append("listClass", getListClass()) - .append("isDefault", getIsDefault()).append("status", getStatus()).append("createBy", getCreateBy()) - .append("createTime", getCreateTime()).append("updateBy", getUpdateBy()) + .append("isDefault", getIsDefault()).append("status", getStatus()).append("pyStr", getPyStr()) + .append("createBy", getCreateBy()).append("createTime", getCreateTime()).append("updateBy", getUpdateBy()) .append("updateTime", getUpdateTime()).append("remark", getRemark()).toString(); } } diff --git a/openhis-server-new/core-system/src/main/java/com/core/system/mapper/SysDictDataMapper.java b/openhis-server-new/core-system/src/main/java/com/core/system/mapper/SysDictDataMapper.java index 0ec663dc..79a92898 100644 --- a/openhis-server-new/core-system/src/main/java/com/core/system/mapper/SysDictDataMapper.java +++ b/openhis-server-new/core-system/src/main/java/com/core/system/mapper/SysDictDataMapper.java @@ -28,6 +28,18 @@ public interface SysDictDataMapper { */ public List selectDictDataByType(String dictType); + + + /** + * 根据字典类型和搜索关键字查询字典数据(支持拼音搜索) + * + * @param dictType 字典类型 + * @param searchKey 搜索关键字(支持名称和拼音首字母搜索) + * @return 字典数据集合信息 + */ + public List selectDictDataByTypeWithSearch(@Param("dictType") String dictType, @Param("searchKey") String searchKey); + + /** * 根据字典类型和字典键值查询字典数据信息 * diff --git a/openhis-server-new/core-system/src/main/java/com/core/system/service/ISysDictTypeService.java b/openhis-server-new/core-system/src/main/java/com/core/system/service/ISysDictTypeService.java index 2a94ce5a..ff6e9ab2 100644 --- a/openhis-server-new/core-system/src/main/java/com/core/system/service/ISysDictTypeService.java +++ b/openhis-server-new/core-system/src/main/java/com/core/system/service/ISysDictTypeService.java @@ -34,6 +34,15 @@ public interface ISysDictTypeService { */ public List selectDictDataByType(String dictType); + /** + * 根据字典类型和搜索关键字查询字典数据(支持拼音搜索) + * + * @param dictType 字典类型 + * @param searchKey 搜索关键字(支持名称和拼音首字母搜索),可为null + * @return 字典数据集合信息 + */ + public List selectDictDataByType(String dictType, String searchKey); + /** * 根据字典类型ID查询信息 * diff --git a/openhis-server-new/core-system/src/main/java/com/core/system/service/impl/SysDictDataServiceImpl.java b/openhis-server-new/core-system/src/main/java/com/core/system/service/impl/SysDictDataServiceImpl.java index 9750497a..6683d60b 100644 --- a/openhis-server-new/core-system/src/main/java/com/core/system/service/impl/SysDictDataServiceImpl.java +++ b/openhis-server-new/core-system/src/main/java/com/core/system/service/impl/SysDictDataServiceImpl.java @@ -8,6 +8,7 @@ import org.springframework.stereotype.Service; import com.core.common.core.domain.entity.SysDictData; import com.core.common.utils.DictUtils; import com.core.system.mapper.SysDictDataMapper; +import com.core.common.utils.ChineseConvertUtils; import com.core.system.service.ISysDictDataService; /** @@ -88,6 +89,10 @@ public class SysDictDataServiceImpl implements ISysDictDataService { */ @Override public int insertDictData(SysDictData data) { + // 自动计算拼音首字母 + if (data.getDictLabel() != null && !data.getDictLabel().isEmpty()) { + data.setPyStr(ChineseConvertUtils.toPinyinFirstLetter(data.getDictLabel())); + } int row = dictDataMapper.insertDictData(data); if (row > 0) { List dictDatas = dictDataMapper.selectDictDataByType(data.getDictType()); @@ -104,6 +109,10 @@ public class SysDictDataServiceImpl implements ISysDictDataService { */ @Override public int updateDictData(SysDictData data) { + // 如果字典标签有变化,重新计算拼音首字母 + if (data.getDictLabel() != null && !data.getDictLabel().isEmpty()) { + data.setPyStr(ChineseConvertUtils.toPinyinFirstLetter(data.getDictLabel())); + } int row = dictDataMapper.updateDictData(data); if (row > 0) { List dictDatas = dictDataMapper.selectDictDataByType(data.getDictType()); diff --git a/openhis-server-new/core-system/src/main/java/com/core/system/service/impl/SysDictTypeServiceImpl.java b/openhis-server-new/core-system/src/main/java/com/core/system/service/impl/SysDictTypeServiceImpl.java index 1eb7e860..874e7ea7 100644 --- a/openhis-server-new/core-system/src/main/java/com/core/system/service/impl/SysDictTypeServiceImpl.java +++ b/openhis-server-new/core-system/src/main/java/com/core/system/service/impl/SysDictTypeServiceImpl.java @@ -71,6 +71,24 @@ public class SysDictTypeServiceImpl implements ISysDictTypeService { */ @Override public List selectDictDataByType(String dictType) { + return selectDictDataByType(dictType, null); + } + + /** + * 根据字典类型和搜索关键字查询字典数据(支持拼音搜索) + * + * @param dictType 字典类型 + * @param searchKey 搜索关键字(支持名称和拼音首字母搜索),可为null + * @return 字典数据集合信息 + */ + public List selectDictDataByType(String dictType, String searchKey) { + // 如果有搜索关键字,使用带搜索的SQL查询 + if (StringUtils.isNotEmpty(searchKey) && !searchKey.trim().isEmpty()) { + String trimmedKey = searchKey.trim(); + return dictDataMapper.selectDictDataByTypeWithSearch(dictType, trimmedKey); + } + + // 否则使用原有方法(带缓存) List dictDatas = DictUtils.getDictCache(dictType); if (StringUtils.isNotEmpty(dictDatas)) { return dictDatas; diff --git a/openhis-server-new/core-system/src/main/resources/mapper/system/SysDictDataMapper.xml b/openhis-server-new/core-system/src/main/resources/mapper/system/SysDictDataMapper.xml index e37fb0c0..7952add6 100644 --- a/openhis-server-new/core-system/src/main/resources/mapper/system/SysDictDataMapper.xml +++ b/openhis-server-new/core-system/src/main/resources/mapper/system/SysDictDataMapper.xml @@ -14,6 +14,7 @@ + @@ -30,6 +31,7 @@ list_class, is_default, status, + py_str, create_by, create_time, remark @@ -56,6 +58,19 @@ where status = '0' and dict_type = #{dictType} order by dict_sort asc + +