Init_20_ProductImage.groovy 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import Ignore_ExecPageFlipper as ExecPageFlipper
  2. import com.dderp.business.dao.ProductDao
  3. import com.dderp.common.api.NoSqlKeysService
  4. import com.dderp.common.datas.ESKeys
  5. import com.dderp.common.entity.product.ProductImage
  6. import com.dySweetFishPlugin.elasticsearch.ESClient
  7. import com.sweetfish.convert.json.JsonConvert
  8. import com.sweetfish.source.PageFlipper
  9. import com.sweetfish.util.Utility
  10. import org.apache.logging.log4j.Logger
  11. import org.elasticsearch.action.bulk.BulkRequestBuilder
  12. import org.elasticsearch.action.bulk.BulkResponse
  13. import org.elasticsearch.action.index.IndexRequestBuilder
  14. import org.elasticsearch.common.xcontent.XContentType
  15. import org.rex.RMap
  16. static def createRunnable(ESClient esClient, NoSqlKeysService keysService, ProductDao productDao, JsonConvert jsonConvert, Logger logger, String dataSourceId, long supplierCode) {
  17. return {
  18. esClient.createIndex(keysService.getESKey(ESKeys.ES_ERP_PRODUCT_IMAGE_INDEX, supplierCode), ESKeys.INDEX_CONFIG,
  19. Utility.ofMap(ESKeys.ES_ERP_PRODUCT_IMAGE_TYPE, "productImage.json"))
  20. RMap params = new RMap()
  21. ExecPageFlipper.execute(300, { PageFlipper p ->
  22. List<ProductImage> productImageList = productDao.selectProductImageList(params, dataSourceId, supplierCode, p)
  23. if (!productImageList.isEmpty()) {
  24. //产品基本信息,存入es
  25. BulkRequestBuilder bulkRequest = esClient.getClient().prepareBulk()
  26. productImageList.each { x ->
  27. IndexRequestBuilder indexRequest = esClient.getClient()
  28. .prepareIndex(keysService.getESKey(ESKeys.ES_ERP_PRODUCT_IMAGE_INDEX, supplierCode), ESKeys.ES_ERP_PRODUCT_IMAGE_TYPE)
  29. .setId(String.valueOf(x.getId()))
  30. .setSource(jsonConvert.convertTo(x), XContentType.JSON)
  31. bulkRequest.add(indexRequest)
  32. }
  33. BulkResponse bulkResponse = bulkRequest.execute().actionGet()
  34. if (bulkResponse.hasFailures()) {
  35. logger.error("索引产品图片出错:" + bulkResponse.buildFailureMessage())
  36. } else {
  37. logger.info("索引产品图片,共" + productImageList.size() + "条记录")
  38. }
  39. }
  40. })
  41. } as Runnable
  42. }
  43. //groovy最后一个表达式的值为返回
  44. createRunnable(esClient, keysService, productDao, jsonConvert, logger, dataSourceId, supplierCode)