SystemDictEntryService.java 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. package com.yihu.ehr.basic.dict.service;
  2. import com.yihu.ehr.basic.dict.dao.SystemDictEntryRepository;
  3. import com.yihu.ehr.entity.dict.DictEntryKey;
  4. import com.yihu.ehr.entity.dict.SystemDictEntry;
  5. import com.yihu.ehr.query.BaseJpaService;
  6. import org.hibernate.SQLQuery;
  7. import org.springframework.beans.factory.annotation.Autowired;
  8. import org.springframework.data.domain.Page;
  9. import org.springframework.data.domain.PageRequest;
  10. import org.springframework.stereotype.Service;
  11. import org.springframework.transaction.annotation.Transactional;
  12. import java.util.List;
  13. /**
  14. * 字典项服务。
  15. *
  16. * @author Sand
  17. * @version 1.0
  18. * @created 2016.02.14 14:49
  19. */
  20. @Service
  21. @Transactional
  22. public class SystemDictEntryService extends BaseJpaService<SystemDictEntry, SystemDictEntryRepository> {
  23. @Autowired
  24. private SystemDictEntryRepository systemDictEntryRepository;
  25. /**
  26. * 下一字典项排序号。
  27. *
  28. * @param dictId
  29. * @return
  30. */
  31. public int getNextSN(long dictId) {
  32. SystemDictEntryRepository repo = (SystemDictEntryRepository) getJpaRepository();
  33. Integer nextSort = repo.getNextEntrySN(dictId);
  34. return null == nextSort ? 1 : nextSort + 1;
  35. }
  36. /**
  37. * 获取所有字典项。对于大字典,若不分页效率可能会很低。
  38. *
  39. * @param dictId 字典ID
  40. * @param page 分页,-1 表示查找全部
  41. * @param size 页大小, page 为 -1 时忽略此参数
  42. * @return
  43. */
  44. public Page<SystemDictEntry> getDictEntries(long dictId, int page, int size) {
  45. SystemDictEntryRepository repo = (SystemDictEntryRepository) getJpaRepository();
  46. return repo.findByDictId(dictId, page == -1 ? null : new PageRequest(page, size));
  47. }
  48. /**
  49. * 获取简易字典项列表.
  50. *
  51. * @param dictId
  52. * @param codes 字典项代码列表,为空返回所有字典项. 但对于大字典效率会很低.
  53. * @return
  54. */
  55. public List<SystemDictEntry> getDictEntries(long dictId, String[] codes) {
  56. SystemDictEntryRepository repo = (SystemDictEntryRepository) getJpaRepository();
  57. if (codes == null) {
  58. return repo.findByDictId(dictId);
  59. } else {
  60. return repo.findByDictIdAndCodes(dictId, codes);
  61. }
  62. }
  63. /**
  64. * 获取字典项。
  65. *
  66. * @param dictId
  67. * @param code
  68. * @return
  69. */
  70. public SystemDictEntry getDictEntry(long dictId, String code) {
  71. SystemDictEntryRepository repo = (SystemDictEntryRepository) getJpaRepository();
  72. return repo.findOne(new DictEntryKey(code, dictId));
  73. }
  74. public SystemDictEntry getDictEntryByValueAndDictId(String value, long dictId) {
  75. List<SystemDictEntry> systemDictEntryList = systemDictEntryRepository.findByDictIdAndValue(dictId, value);
  76. if (null != systemDictEntryList && systemDictEntryList.size() > 0) {
  77. return systemDictEntryList.get(0);
  78. }
  79. return null;
  80. }
  81. /**
  82. * 按字典ID与字典项值查找字典项.
  83. *
  84. * @param dictId
  85. * @param value
  86. * @param page
  87. * @param size
  88. * @return
  89. */
  90. public Page<SystemDictEntry> findByDictIdAndValueLike(long dictId, String value, int page, int size) {
  91. SystemDictEntryRepository repo = (SystemDictEntryRepository) getJpaRepository();
  92. return repo.findByDictIdAndValueLike(dictId, value, new PageRequest(page, size));
  93. }
  94. /**
  95. * 按字典ID查找字典项.
  96. *
  97. * @param dictId
  98. * @param page
  99. * @param size
  100. * @return
  101. */
  102. public Page<SystemDictEntry> findByDictId(long dictId, int page, int size) {
  103. SystemDictEntryRepository repo = (SystemDictEntryRepository) getJpaRepository();
  104. return repo.findByDictId(dictId, new PageRequest(page, size));
  105. }
  106. public boolean isDictContainEntry(long dictId, String code) {
  107. SystemDictEntryRepository repo = (SystemDictEntryRepository) getJpaRepository();
  108. SystemDictEntry systemDictEntry = repo.findOne(new DictEntryKey(code, dictId));
  109. return systemDictEntry != null;
  110. }
  111. public SystemDictEntry saveDictEntry(SystemDictEntry systemDictEntry) {
  112. SystemDictEntryRepository repo = (SystemDictEntryRepository) getJpaRepository();
  113. return repo.save(systemDictEntry);
  114. }
  115. public void createDictEntry(SystemDictEntry systemDictEntry) {
  116. SystemDictEntryRepository repo = (SystemDictEntryRepository) getJpaRepository();
  117. repo.save(systemDictEntry);
  118. }
  119. public void deleteDictEntry(long dictId, String code) {
  120. SystemDictEntryRepository repo = (SystemDictEntryRepository) getJpaRepository();
  121. repo.delete(new DictEntryKey(code, dictId));
  122. }
  123. /**
  124. * 根据字典id获取字典项编码和值
  125. */
  126. public List getDictEntryCodeAndValueByDictId(String dict_id) {
  127. String sql = "SELECT code,value FROM system_dict_entries where dict_id=:dict_id";
  128. SQLQuery sqlQuery = currentSession().createSQLQuery(sql);
  129. sqlQuery.setParameter("dict_id", dict_id);
  130. return sqlQuery.list();
  131. }
  132. }