Init_15_Store.groovy 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. import com.dderp.business.dao.StoreDao
  2. import com.dderp.common.api.NoSqlKeysService
  3. import com.dderp.common.datas.ESKeys
  4. import com.dderp.common.datas.RedisKeys
  5. import com.dderp.common.entity.store.StoreBrand
  6. import com.dderp.common.entity.store.StoreInfo
  7. import com.dderp.common.entity.store.StoreInvoiceInfo
  8. import com.dderp.common.entity.store.StorePlatform
  9. import com.dderp.common.entity.store.StorePlatformRequire
  10. import com.dySweetFishPlugin.elasticsearch.ESClient
  11. import com.dySweetFishPlugin.redis.RedisService
  12. import com.sweetfish.convert.json.JsonConvert
  13. import com.sweetfish.source.PageFlipper
  14. import com.sweetfish.util.Utility
  15. import org.apache.logging.log4j.Logger
  16. import org.elasticsearch.action.bulk.BulkRequestBuilder
  17. import org.elasticsearch.action.bulk.BulkResponse
  18. import org.elasticsearch.action.index.IndexRequestBuilder
  19. import org.elasticsearch.common.xcontent.XContentType
  20. import org.rex.RMap
  21. static def createRunnable(ESClient esClient, RedisService redisService, NoSqlKeysService keysService,
  22. StoreDao storeDao, Logger logger, JsonConvert jsonConvert, String dataSourceId, long supplierCode) {
  23. return {
  24. esClient.createIndex(keysService.getESKey(ESKeys.ES_DELIVER_STORE_BRAND_INDEX, supplierCode),
  25. ESKeys.INDEX_CONFIG,
  26. Utility.ofMap(ESKeys.ES_DELIVER_STORE_BRAND_TYPE, "storebrand.json"))
  27. redisService.del(keysService.getRedisKey(RedisKeys.KEY_DELIVER_STORE_BRAND, supplierCode))
  28. esClient.createIndex(keysService.getESKey(ESKeys.ES_DELIVER_STORE_INFO_INDEX, supplierCode),
  29. ESKeys.INDEX_CONFIG,
  30. Utility.ofMap(ESKeys.ES_DELIVER_STORE_INFO_TYPE, "storeinfo.json",
  31. ESKeys.ES_DELIVER_STORE_INVOICE_INFO_TYPE, "storeinvoiceinfo.json"))
  32. esClient.createIndex(keysService.getESKey(ESKeys.ES_DELIVER_STORE_PLATFORM_INDEX, supplierCode),
  33. ESKeys.INDEX_CONFIG,
  34. Utility.ofMap(ESKeys.ES_DELIVER_STORE_PLATFORM_TYPE, "storeplatform.json",
  35. ESKeys.ES_DELIVER_STORE_PLATFORM_REQUIRE_TYPE, "storeplatformrequire.json"))
  36. RMap params = new RMap()
  37. params.put("voidFlag", -1)
  38. Ignore_ExecPageFlipper.execute(1000, { PageFlipper p ->
  39. List<StoreBrand> storeBrandList = storeDao.queryStoreBrandList(params, p, dataSourceId, supplierCode)
  40. if (!storeBrandList.isEmpty()) {
  41. Map<String, String> redisMap = storeBrandList.collectEntries { [String.valueOf(it.getId()), jsonConvert.convertTo(it)] }
  42. if (!redisMap.isEmpty()) {
  43. redisService.hmset(keysService.getRedisKey(RedisKeys.KEY_DELIVER_STORE_BRAND, supplierCode), redisMap)
  44. }
  45. BulkRequestBuilder bulkRequest = esClient.getClient().prepareBulk()
  46. storeBrandList.each { x ->
  47. IndexRequestBuilder indexRequest = esClient.getClient()
  48. .prepareIndex(keysService.getESKey(ESKeys.ES_DELIVER_STORE_BRAND_INDEX, supplierCode), ESKeys.ES_DELIVER_STORE_BRAND_TYPE)
  49. .setId(String.valueOf(x.getId()))
  50. .setSource(jsonConvert.convertTo(x), XContentType.JSON)
  51. bulkRequest.add(indexRequest)
  52. }
  53. BulkResponse bulkResponse = bulkRequest.execute().actionGet()
  54. if (bulkResponse.hasFailures()) {
  55. logger.error("索引门店品牌档案出错:" + bulkResponse.buildFailureMessage())
  56. } else {
  57. logger.info("索引门店品牌档案,共" + storeBrandList.size() + "条记录")
  58. }
  59. }
  60. })
  61. Ignore_ExecPageFlipper.execute(1000, { PageFlipper p ->
  62. List<StoreInfo> storeInfoList = storeDao.queryStoreInfoList(params, p, dataSourceId, supplierCode)
  63. if (!storeInfoList.isEmpty()) {
  64. BulkRequestBuilder bulkRequest = esClient.getClient().prepareBulk()
  65. storeInfoList.each { x ->
  66. IndexRequestBuilder indexRequest = esClient.getClient()
  67. .prepareIndex(keysService.getESKey(ESKeys.ES_DELIVER_STORE_INFO_INDEX, supplierCode), ESKeys.ES_DELIVER_STORE_INFO_TYPE)
  68. .setId(String.valueOf(x.getId()))
  69. .setSource(jsonConvert.convertTo(x), XContentType.JSON)
  70. bulkRequest.add(indexRequest)
  71. }
  72. BulkResponse bulkResponse = bulkRequest.execute().actionGet()
  73. if (bulkResponse.hasFailures()) {
  74. logger.error("索引门店出错:" + bulkResponse.buildFailureMessage())
  75. } else {
  76. logger.info("索引门店,共" + storeInfoList.size() + "条记录")
  77. }
  78. }
  79. })
  80. Ignore_ExecPageFlipper.execute(1000, { PageFlipper p ->
  81. List<StoreInvoiceInfo> storeInvoiceInfoList = storeDao.queryStoreInvoiceList(params, p, dataSourceId, supplierCode)
  82. if (!storeInvoiceInfoList.isEmpty()) {
  83. BulkRequestBuilder bulkRequest = esClient.getClient().prepareBulk()
  84. storeInvoiceInfoList.each { x ->
  85. IndexRequestBuilder indexRequest = esClient.getClient()
  86. .prepareIndex(keysService.getESKey(ESKeys.ES_DELIVER_STORE_INFO_INDEX, supplierCode), ESKeys.ES_DELIVER_STORE_INVOICE_INFO_TYPE)
  87. .setId(String.valueOf(x.getId()))
  88. .setParent(String.valueOf(x.idStore))
  89. .setSource(jsonConvert.convertTo(x), XContentType.JSON)
  90. bulkRequest.add(indexRequest)
  91. }
  92. BulkResponse bulkResponse = bulkRequest.execute().actionGet()
  93. if (bulkResponse.hasFailures()) {
  94. logger.error("索引门店开票信息出错:" + bulkResponse.buildFailureMessage())
  95. } else {
  96. logger.info("索引门店开票信息,共" + storeInvoiceInfoList.size() + "条记录")
  97. }
  98. }
  99. })
  100. Ignore_ExecPageFlipper.execute(1000, { PageFlipper p ->
  101. List<StorePlatform> storePlatformList = storeDao.queryStorePlatformList(params, p, dataSourceId, supplierCode)
  102. if (!storePlatformList.isEmpty()) {
  103. BulkRequestBuilder bulkRequest = esClient.getClient().prepareBulk()
  104. storePlatformList.each { x ->
  105. IndexRequestBuilder indexRequest = esClient.getClient()
  106. .prepareIndex(keysService.getESKey(ESKeys.ES_DELIVER_STORE_PLATFORM_INDEX, supplierCode), ESKeys.ES_DELIVER_STORE_PLATFORM_TYPE)
  107. .setId(String.valueOf(x.getId()))
  108. .setSource(jsonConvert.convertTo(x), XContentType.JSON)
  109. bulkRequest.add(indexRequest)
  110. }
  111. BulkResponse bulkResponse = bulkRequest.execute().actionGet()
  112. if (bulkResponse.hasFailures()) {
  113. logger.error("索引门店已开通平台出错:" + bulkResponse.buildFailureMessage())
  114. } else {
  115. logger.info("索引门店已开通平台,共" + storePlatformList.size() + "条记录")
  116. }
  117. }
  118. })
  119. Ignore_ExecPageFlipper.execute(1000, { PageFlipper p ->
  120. List<StorePlatformRequire> storePlatformRequireList = storeDao.queryStorePlatformRequireList(params, p, dataSourceId, supplierCode)
  121. if (!storePlatformRequireList.isEmpty()) {
  122. BulkRequestBuilder bulkRequest = esClient.getClient().prepareBulk()
  123. storePlatformRequireList.each { x ->
  124. IndexRequestBuilder indexRequest = esClient.getClient()
  125. .prepareIndex(keysService.getESKey(ESKeys.ES_DELIVER_STORE_PLATFORM_INDEX, supplierCode), ESKeys.ES_DELIVER_STORE_PLATFORM_REQUIRE_TYPE)
  126. .setId(String.valueOf(x.getId()))
  127. .setParent(String.valueOf(x.idStorePlatform))
  128. .setSource(jsonConvert.convertTo(x), XContentType.JSON)
  129. bulkRequest.add(indexRequest)
  130. }
  131. BulkResponse bulkResponse = bulkRequest.execute().actionGet()
  132. if (bulkResponse.hasFailures()) {
  133. logger.error("索引门店已开通平台需求条件出错:" + bulkResponse.buildFailureMessage())
  134. } else {
  135. logger.info("索引门店已开通平台需求条件,共" + storePlatformRequireList.size() + "条记录")
  136. }
  137. }
  138. })
  139. } as Runnable
  140. }
  141. createRunnable(esClient, redisService, keysService, storeDao, logger, jsonConvert, dataSourceId, supplierCode)