StoreServiceImpl.java 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  1. package com.dderp.business.service;
  2. import com.dderp.business.dao.StoreDao;
  3. import com.dderp.common.api.NoSqlKeysService;
  4. import com.dderp.common.api.PlatformService;
  5. import com.dderp.common.api.StoreService;
  6. import com.dderp.common.base.BaseService;
  7. import com.dderp.common.datas.ESKeys;
  8. import com.dderp.common.datas.business.PlatformType;
  9. import com.dderp.common.entity.platform.PlatformInfo;
  10. import com.dderp.common.entity.site.ERPTokenUser;
  11. import com.dderp.common.entity.store.*;
  12. import com.dderp.common.tool.ERPUtils;
  13. import com.dySweetFishPlugin.elasticsearch.ESClient;
  14. import com.dySweetFishPlugin.sql.TableIdService;
  15. import com.dySweetFishPlugin.sql.dao.TunaService;
  16. import com.sweetfish.convert.json.JsonConvert;
  17. import com.sweetfish.service.Local;
  18. import com.sweetfish.service.RetResult;
  19. import com.sweetfish.source.PageFlipper;
  20. import com.sweetfish.util.AnyValue;
  21. import com.sweetfish.util.AutoLoad;
  22. import com.sweetfish.util.ResourceType;
  23. import org.apache.commons.lang3.StringUtils;
  24. import org.elasticsearch.action.DocWriteResponse;
  25. import org.elasticsearch.action.index.IndexResponse;
  26. import org.elasticsearch.action.support.WriteRequest;
  27. import org.elasticsearch.common.xcontent.XContentType;
  28. import org.elasticsearch.index.query.BoolQueryBuilder;
  29. import org.elasticsearch.index.query.Operator;
  30. import org.elasticsearch.index.query.QueryBuilders;
  31. import org.elasticsearch.search.sort.SortBuilders;
  32. import org.elasticsearch.search.sort.SortOrder;
  33. import org.rex.RMap;
  34. import javax.annotation.Resource;
  35. import java.util.List;
  36. @AutoLoad(value = false)
  37. @Local
  38. @ResourceType(StoreService.class)
  39. public class StoreServiceImpl extends BaseService implements StoreService {
  40. @Resource
  41. private ESClient esClient;
  42. @Resource
  43. private JsonConvert jsonConvert;
  44. @Resource
  45. private NoSqlKeysService keysService;
  46. @Resource
  47. private TableIdService tableIdService;
  48. @Resource
  49. private TunaService tunaService;
  50. private StoreDao storeDao;
  51. @Override
  52. public void start(AnyValue config) {
  53. super.start(config);
  54. storeDao = tunaService.generate(StoreDao.class);
  55. }
  56. @Override
  57. public List<StoreBrand> queryStoreBrandList(RMap params, PageFlipper pageFlipper, long supplierCode) {
  58. List<StoreBrand> storeBrandList = searchESList(esClient, jsonConvert,
  59. StoreBrand.class,
  60. null,
  61. ((sd) -> {
  62. BoolQueryBuilder qb = QueryBuilders.boolQuery();
  63. qb = qb.must(QueryBuilders.typeQuery(ESKeys.ES_DELIVER_STORE_BRAND_INDEX));
  64. if (ERPUtils.mapContainKey(params, "brandName")) {
  65. String platformName = params.getString("brandName");
  66. BoolQueryBuilder qbPlatformName = QueryBuilders.boolQuery()
  67. .should(QueryBuilders.matchQuery("brandName", platformName).analyzer("query_ansj").operator(Operator.AND))
  68. .should(QueryBuilders.termQuery("brandName.number", platformName.toLowerCase()))
  69. .should(QueryBuilders.matchQuery("brandName.letter", platformName.toLowerCase()).operator(Operator.AND));
  70. qb = qb.must(qbPlatformName);
  71. }
  72. if (ERPUtils.mapContainKey(params, "voidFlag")) {
  73. qb = qb.must(QueryBuilders.termQuery("voidFlag", params.getInt("voidFlag")));
  74. }
  75. return qb;
  76. }),
  77. keysService.getESKey(ESKeys.ES_DELIVER_STORE_BRAND_TYPE, supplierCode),
  78. (() -> SortBuilders.fieldSort("id").order(SortOrder.DESC)));
  79. return storeBrandList;
  80. }
  81. @Override
  82. public StoreBrand getStoreBrand(long id, long supplierCode) {
  83. return this.getESOneInfo(esClient, jsonConvert, StoreBrand.class,
  84. String.valueOf(id),
  85. keysService.getESKey(ESKeys.ES_DELIVER_STORE_BRAND_INDEX, supplierCode),
  86. ESKeys.ES_DELIVER_STORE_BRAND_TYPE,
  87. null);
  88. }
  89. @Override
  90. public RetResult<StoreBrand> addStoreBrand(StoreBrand storeBrand, ERPTokenUser currentUser, String dataSourceId, long supplierCode) {
  91. if (StringUtils.isBlank(storeBrand.getBrandName()))
  92. return RetResult.<StoreBrand>errorT().retinfo("门店品牌名称不可为空");
  93. //先查一下有没有重名的平台信息
  94. StoreBrand esInfo = this.getESOneInfo(esClient, jsonConvert,
  95. StoreBrand.class,
  96. (a) -> {
  97. BoolQueryBuilder qb = QueryBuilders.boolQuery().must(QueryBuilders.typeQuery(ESKeys.ES_DELIVER_STORE_BRAND_TYPE));
  98. qb.must(QueryBuilders.termQuery("brandName.raw", storeBrand.getBrandName()));
  99. return qb;
  100. },
  101. keysService.getESKey(ESKeys.ES_DELIVER_STORE_BRAND_INDEX, supplierCode),
  102. null);
  103. if (esInfo != null) return RetResult.<StoreBrand>errorT().retinfo("已存在同名的门店品牌");
  104. storeBrand.setId(tableIdService.getTableIdMulti("tbStoreBrand.id", 1, dataSourceId, String.valueOf(supplierCode)));
  105. StoreBrand.create(storeBrand, currentUser.getId());
  106. IndexResponse itemResponse = esClient.getClient()
  107. .prepareIndex(keysService.getESKey(ESKeys.ES_DELIVER_STORE_BRAND_INDEX, supplierCode), ESKeys.ES_DELIVER_STORE_BRAND_TYPE)
  108. .setId(String.valueOf(storeBrand.getId()))
  109. .setSource(jsonConvert.convertTo(storeBrand), XContentType.JSON)
  110. .setRefreshPolicy(WriteRequest.RefreshPolicy.IMMEDIATE)
  111. .get();
  112. if (itemResponse.getResult() == DocWriteResponse.Result.CREATED) {
  113. storeDao.addStoreBrand(storeBrand, dataSourceId, supplierCode);
  114. } else {
  115. return RetResult.<StoreBrand>errorT().retinfo("创建平台档案失败");
  116. }
  117. return RetResult.<StoreBrand>successT().result(storeBrand);
  118. }
  119. @Override
  120. public RetResult<StoreBrand> uploadBrandLogo(long idStoreBrand, ERPTokenUser currentUser, String dataSourceId, long supplierCode) {
  121. return null;
  122. }
  123. @Override
  124. public RetResult<StoreBrand> updateStoreBrand(StoreBrand storeBrand, ERPTokenUser currentUser, String dataSourceId, long supplierCode) {
  125. return null;
  126. }
  127. @Override
  128. public RetResult<StoreBrand> voidStoreBrand(StoreBrand storeBrand, ERPTokenUser currentUser, String dataSourceId, long supplierCode) {
  129. return null;
  130. }
  131. @Override
  132. public List<ViewStoreInfo> queryViewStoreInfo(RMap params, PageFlipper pageFlipper, long supplierCode) {
  133. return null;
  134. }
  135. @Override
  136. public ViewStoreInfo getViewStoreInfo(long idStore, long supplierCode, int withInvoice) {
  137. return null;
  138. }
  139. @Override
  140. public RetResult<StoreInfo> addStoreInfo(StoreInfo storeInfo, ERPTokenUser currentUser, String dataSourceId, long supplierCode) {
  141. return null;
  142. }
  143. @Override
  144. public RetResult<StoreInvoiceInfo> configStoreInvoiceInfo(StoreInvoiceInfo invoiceInfo, int enableInvoice, ERPTokenUser currentUser, String dataSourceId, long supplierCode) {
  145. return null;
  146. }
  147. @Override
  148. public RetResult<StoreInfo> updateStoreInfo(StoreInfo storeInfo, ERPTokenUser currentUser, String dataSourceId, long supplierCode) {
  149. return null;
  150. }
  151. @Override
  152. public RetResult<StoreInfo> voidStoreInfo(StoreInfo storeInfo, ERPTokenUser currentUser, String dataSourceId, long supplierCode) {
  153. return null;
  154. }
  155. @Override
  156. public RetResult<StorePlatform> addStorePlatform(StorePlatform storePlatform, ERPTokenUser currentUser, String dataSourceId, long supplierCode) {
  157. return null;
  158. }
  159. @Override
  160. public RetResult<StorePlatform> configStorePlatform(StorePlatform storePlatform, ERPTokenUser currentUser, String dataSourceId, long supplierCode) {
  161. return null;
  162. }
  163. }