Init_14_Client.groovy 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. import com.dderp.business.dao.ClientDao
  2. import com.dderp.common.api.NoSqlKeysService
  3. import com.dderp.common.datas.RedisKeys
  4. import com.dderp.common.datas.ESKeys
  5. import com.dderp.common.entity.client.ClientIndustryInfo
  6. import com.dderp.common.entity.client.ClientInfo
  7. import com.dderp.common.entity.client.ClientLevel
  8. import com.dderp.common.entity.client.ClientReceiveAddress
  9. import com.dySweetFishPlugin.elasticsearch.ESClient
  10. import com.dySweetFishPlugin.redis.RedisService
  11. import com.sweetfish.convert.json.JsonConvert
  12. import com.sweetfish.source.PageFlipper
  13. import com.sweetfish.util.Utility
  14. import org.apache.logging.log4j.Logger
  15. import org.elasticsearch.action.bulk.BulkRequestBuilder
  16. import org.elasticsearch.action.bulk.BulkResponse
  17. import org.elasticsearch.action.index.IndexRequestBuilder
  18. import org.elasticsearch.common.xcontent.XContentType
  19. import org.rex.RMap
  20. static def createRunnable(ESClient esClient, ClientDao clientDao, boolean resetClientInfo,
  21. NoSqlKeysService keysService, JsonConvert jsonConvert, Logger logger,
  22. RedisService redisService, String dataSourceId, long supplierCode) {
  23. return {
  24. RMap params = new RMap()
  25. redisService.del(keysService.getRedisKey(RedisKeys.KEY_ERP_CLIENT_INDUSTRY_INFO, supplierCode));
  26. Ignore_ExecPageFlipper.execute(1000, { PageFlipper p ->
  27. List<ClientIndustryInfo> industryInfoList = clientDao.queryClientIndustry(params, p, dataSourceId, supplierCode);
  28. if (!industryInfoList.isEmpty()) {
  29. Map<String, String> industryMap = industryInfoList.collectEntries { [String.valueOf(it.getId()), jsonConvert.convertTo(it)] }
  30. redisService.hmset(keysService.getRedisKey(RedisKeys.KEY_ERP_CLIENT_INDUSTRY_INFO, supplierCode), industryMap);
  31. }
  32. });
  33. redisService.del(keysService.getRedisKey(RedisKeys.KEY_ERP_CLIENT_LEVEL, supplierCode));
  34. Ignore_ExecPageFlipper.execute(1000, { PageFlipper p ->
  35. List<ClientLevel> levelList = clientDao.queryClientLevel(params, p, dataSourceId, supplierCode);
  36. if (!levelList.isEmpty()) {
  37. Map<String, String> levelMap = levelList.collectEntries { [String.valueOf(it.getId()), jsonConvert.convertTo(it)] }
  38. redisService.hmset(keysService.getRedisKey(RedisKeys.KEY_ERP_CLIENT_LEVEL, supplierCode), levelMap);
  39. }
  40. });
  41. if (resetClientInfo) {
  42. esClient.createIndex(keysService.getESKey(ESKeys.ES_ERP_CLIENT_INFO_INDEX, supplierCode), ESKeys.INDEX_CONFIG,
  43. Utility.ofMap(ESKeys.ES_ERP_CLIENT_INFO_TYPE, "clientinfo.json"));
  44. Ignore_ExecPageFlipper.execute(1000, { PageFlipper p ->
  45. List<ClientInfo> clientInfoList = clientDao.queryClientInfo(params, p, dataSourceId, supplierCode);
  46. if (!clientInfoList.isEmpty()) {
  47. BulkRequestBuilder bulkRequest = esClient.getClient().prepareBulk();
  48. clientInfoList.forEach((x) -> {
  49. IndexRequestBuilder indexRequest = esClient.getClient()
  50. .prepareIndex(keysService.getESKey(ESKeys.ES_ERP_CLIENT_INFO_INDEX, supplierCode), ESKeys.ES_ERP_CLIENT_INFO_TYPE)
  51. .setId(String.valueOf(x.getId()))
  52. .setSource(jsonConvert.convertTo(x), XContentType.JSON);
  53. bulkRequest.add(indexRequest);
  54. });
  55. BulkResponse bulkResponse = bulkRequest.execute().actionGet();
  56. if (bulkResponse.hasFailures()) {
  57. logger.error("索引客户档案:" + bulkResponse.buildFailureMessage());
  58. } else {
  59. logger.info("索引客户档案共" + clientInfoList.size() + "条记录");
  60. }
  61. }
  62. });
  63. } else {
  64. esClient.checkIndexEx(keysService.getESKey(ESKeys.ES_ERP_CLIENT_INFO_INDEX, supplierCode), ESKeys.INDEX_CONFIG,
  65. Utility.ofMap(ESKeys.ES_ERP_CLIENT_INFO_TYPE, "clientinfo.json"));
  66. }
  67. esClient.createIndex(keysService.getESKey(ESKeys.ES_ERP_CLIENT_RECEIVEADDRESS_INDEX, supplierCode), ESKeys.INDEX_CONFIG,
  68. Utility.ofMap(ESKeys.ES_ERP_CLIENT_RECEIVEADDRESS_TYPE, "clientreceiveaddress.json"));
  69. Ignore_ExecPageFlipper.execute(1000, { PageFlipper p ->
  70. List<ClientReceiveAddress> addressList = clientDao.queryClientReceiveAddress(params, p, dataSourceId, supplierCode);
  71. if (!addressList.isEmpty()) {
  72. BulkRequestBuilder bulkRequest = esClient.getClient().prepareBulk();
  73. addressList.forEach((x) -> {
  74. IndexRequestBuilder indexRequest = esClient.getClient()
  75. .prepareIndex(keysService.getESKey(ESKeys.ES_ERP_CLIENT_RECEIVEADDRESS_INDEX, supplierCode), ESKeys.ES_ERP_CLIENT_RECEIVEADDRESS_TYPE)
  76. .setId(String.valueOf(x.getId()))
  77. .setSource(jsonConvert.convertTo(x), XContentType.JSON);
  78. bulkRequest.add(indexRequest);
  79. });
  80. BulkResponse bulkResponse = bulkRequest.execute().actionGet();
  81. if (bulkResponse.hasFailures()) {
  82. logger.error("索引客户收货地址:" + bulkResponse.buildFailureMessage());
  83. } else {
  84. logger.info("索引客户收货地址共" + addressList.size() + "条记录");
  85. }
  86. }
  87. });
  88. } as Runnable
  89. }
  90. //groovy最后一个表达式的值为返回
  91. createRunnable(esClient, clientDao, resetClientInfo,
  92. keysService, jsonConvert, logger,
  93. redisService, dataSourceId, supplierCode)