AddressService.java 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. package com.yihu.ehr.basic.address.service;
  2. import com.yihu.ehr.basic.address.dao.AddressRepository;
  3. import com.yihu.ehr.entity.address.Address;
  4. import com.yihu.ehr.query.BaseJpaService;
  5. import org.hibernate.Query;
  6. import org.hibernate.Session;
  7. import org.springframework.beans.factory.annotation.Autowired;
  8. import org.springframework.stereotype.Service;
  9. import org.springframework.transaction.annotation.Transactional;
  10. import org.springframework.util.StringUtils;
  11. import javax.persistence.EntityManager;
  12. import javax.persistence.PersistenceContext;
  13. import java.util.List;
  14. /**
  15. * 地址管理。对于相同地址,仅保存一份。
  16. * @author zqb
  17. * @version 1.0
  18. * @created 30-六月-2015 19:17:43
  19. */
  20. @Transactional
  21. @Service
  22. public class AddressService extends BaseJpaService<Address,AddressRepository>{
  23. @PersistenceContext
  24. protected EntityManager entityManager;
  25. @Autowired
  26. private AddressRepository geographyRepository;
  27. /**
  28. * 地址检查并保存
  29. * 返回新地址id
  30. * @param geography
  31. */
  32. public String saveAddress(Address geography) {
  33. return geographyRepository.save(geography).getId();
  34. }
  35. public boolean isNullAddress(Address geography) {
  36. return
  37. StringUtils.isEmpty(geography.getProvince())
  38. && StringUtils.isEmpty(geography.getCity())
  39. && StringUtils.isEmpty(geography.getDistrict())
  40. && StringUtils.isEmpty(geography.getTown())
  41. && StringUtils.isEmpty(geography.getCountry())
  42. && StringUtils.isEmpty(geography.getStreet());
  43. }
  44. public Address getAddressById(String Id) {
  45. return geographyRepository.findOne(Id);
  46. }
  47. public String getCanonicalAddress(Address address) {
  48. String addressStr = "";
  49. String province = address.getProvince();
  50. String city = address.getCity();
  51. String district = address.getDistrict();
  52. String town = address.getTown();
  53. String street = address.getStreet();
  54. String extra = address.getExtra();
  55. if (!StringUtils.isEmpty(province)){
  56. addressStr += province;
  57. if (!"".equals(city)) {
  58. if (!province.equals(city)){
  59. addressStr += city;
  60. }
  61. }
  62. }
  63. if (!StringUtils.isEmpty(district)){
  64. addressStr += district;
  65. }
  66. if (!StringUtils.isEmpty(town)){
  67. addressStr += town;
  68. }
  69. if (!StringUtils.isEmpty(street)){
  70. addressStr += street;
  71. }
  72. if (!StringUtils.isEmpty(extra)){
  73. addressStr += extra;
  74. }
  75. return addressStr;
  76. }
  77. public List<String> search(String province, String city, String district) {
  78. Session session = entityManager.unwrap(org.hibernate.Session.class);
  79. String hql =
  80. "SELECT " +
  81. "addresses.id " +
  82. "FROM " +
  83. "addresses " +
  84. "WHERE 1=1 ";
  85. if (!StringUtils.isEmpty(province)) {
  86. hql += " AND addresses.province = '"+province+"'";
  87. }
  88. if (!StringUtils.isEmpty(city)) {
  89. hql += " AND addresses.city = '"+city+"'";
  90. }
  91. if (!StringUtils.isEmpty(district)) {
  92. hql += " AND addresses.district = '"+district+"'";
  93. }
  94. Query query = session.createSQLQuery(hql);
  95. List<String> idList = query.list();
  96. return idList;
  97. }
  98. public void deleteAddress(Address address) {
  99. geographyRepository.delete(address);
  100. }
  101. public List<Address> isGeographyExist(Address geography) throws Exception {
  102. String hql = PoUtil.getHql(geography,"id","postalCode");
  103. Session session = currentSession();
  104. Query query = session.createQuery(hql);
  105. List<Address> list = query.list();
  106. return list;
  107. }
  108. public List<String> getIdByDistrict(List<String> district) {
  109. return geographyRepository.findIdByDistrict(district);
  110. }
  111. }