import Ignore_ExecPageFlipper as ExecPageFlipper import com.dderp.business.dao.ProductDao import com.dderp.common.api.NoSqlKeysService import com.dderp.common.datas.ESKeys import com.dderp.common.entity.product.ProductImage import com.dySweetFishPlugin.elasticsearch.ESClient import com.sweetfish.convert.json.JsonConvert import com.sweetfish.source.PageFlipper import com.sweetfish.util.Utility import org.apache.logging.log4j.Logger import org.elasticsearch.action.bulk.BulkRequestBuilder import org.elasticsearch.action.bulk.BulkResponse import org.elasticsearch.action.index.IndexRequestBuilder import org.elasticsearch.common.xcontent.XContentType import org.rex.RMap static def createRunnable(ESClient esClient, NoSqlKeysService keysService, ProductDao productDao, JsonConvert jsonConvert, Logger logger, String dataSourceId, long supplierCode) { return { esClient.createIndex(keysService.getESKey(ESKeys.ES_ERP_PRODUCT_IMAGE_INDEX, supplierCode), ESKeys.INDEX_CONFIG, Utility.ofMap(ESKeys.ES_ERP_PRODUCT_IMAGE_TYPE, "productImage.json")) RMap params = new RMap() ExecPageFlipper.execute(300, { PageFlipper p -> List productImageList = productDao.selectProductImageList(params, dataSourceId, supplierCode, p) if (!productImageList.isEmpty()) { //产品基本信息,存入es BulkRequestBuilder bulkRequest = esClient.getClient().prepareBulk() productImageList.each { x -> IndexRequestBuilder indexRequest = esClient.getClient() .prepareIndex(keysService.getESKey(ESKeys.ES_ERP_PRODUCT_IMAGE_INDEX, supplierCode), ESKeys.ES_ERP_PRODUCT_IMAGE_TYPE) .setId(String.valueOf(x.getId())) .setSource(jsonConvert.convertTo(x), XContentType.JSON) bulkRequest.add(indexRequest) } BulkResponse bulkResponse = bulkRequest.execute().actionGet() if (bulkResponse.hasFailures()) { logger.error("索引产品图片出错:" + bulkResponse.buildFailureMessage()) } else { logger.info("索引产品图片,共" + productImageList.size() + "条记录") } } }) } as Runnable } //groovy最后一个表达式的值为返回 createRunnable(esClient, keysService, productDao, jsonConvert, logger, dataSourceId, supplierCode)