Init_28_Paper.Groovy 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. import com.dderp.business.dao.PaperDao
  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.paper.PaperBaseInfo
  6. import com.dderp.common.entity.paper.PaperBrand
  7. import com.dderp.common.entity.paper.PaperCutInfo
  8. import com.dderp.common.entity.paper.PaperCutSizeInfo
  9. import com.dderp.common.entity.paper.PaperInfo
  10. import com.dderp.common.entity.paper.PaperInfoType
  11. import com.dderp.common.entity.paper.PaperQuoteInfo
  12. import com.dySweetFishPlugin.elasticsearch.ESClient
  13. import com.dySweetFishPlugin.redis.RedisService
  14. import com.dySweetFishPlugin.sql.TableCodeNode
  15. import com.dySweetFishPlugin.sql.TableIdService
  16. import com.sweetfish.convert.json.JsonConvert
  17. import com.sweetfish.source.PageFlipper
  18. import com.sweetfish.util.Utility
  19. import org.apache.commons.lang3.StringUtils
  20. import org.apache.logging.log4j.Logger
  21. import org.elasticsearch.action.bulk.BulkRequestBuilder
  22. import org.elasticsearch.action.bulk.BulkResponse
  23. import org.elasticsearch.action.index.IndexRequestBuilder
  24. import org.elasticsearch.common.xcontent.XContentType
  25. import org.rex.RMap
  26. static def createRunnable(ESClient esClient, NoSqlKeysService keysService, TableIdService tableIdService,
  27. PaperDao paperDao, JsonConvert jsonConvert, Logger logger,
  28. RedisService redisService, String dataSourceId, long supplierCode) {
  29. return {
  30. RMap params = new RMap()
  31. //纸张品牌档案
  32. redisService.del(keysService.getRedisKey(RedisKeys.KEY_ERP_PAPER_BRAND, supplierCode))
  33. Ignore_ExecPageFlipper.execute(1000, { PageFlipper p ->
  34. List<PaperBrand> brandList = paperDao.selectPaperBrand(params, p, dataSourceId, supplierCode)
  35. if (!brandList.isEmpty()) {
  36. Map<String, String> brandMap = brandList.collectEntries { [String.valueOf(it.getId()), jsonConvert.convertTo(it)] }
  37. redisService.hmset(keysService.getRedisKey(RedisKeys.KEY_ERP_PAPER_BRAND, supplierCode), brandMap)
  38. }
  39. })
  40. //纸张开纸档案
  41. redisService.del(keysService.getRedisKey(RedisKeys.KEY_ERP_PAPER_CUT_INFO, supplierCode))
  42. List<PaperCutInfo> cutInfoList = paperDao.queryPaperCutInfo(params, dataSourceId, supplierCode)
  43. if (!cutInfoList.isEmpty()) {
  44. RMap subParams = new RMap()
  45. cutInfoList.forEach(x -> {
  46. subParams.set("idCutInfo", x.getId())
  47. List<PaperCutSizeInfo> sizeInfoList = paperDao.queryPaperCutSizeInfo(subParams, dataSourceId, supplierCode)
  48. x.setSizeInfoList(sizeInfoList)
  49. })
  50. Map<String, String> cutInfoMap = cutInfoList.collectEntries { [String.valueOf(it.getId()), jsonConvert.convertTo(it)] }
  51. redisService.hmset(keysService.getRedisKey(RedisKeys.KEY_ERP_PAPER_CUT_INFO, supplierCode), cutInfoMap)
  52. }
  53. //纸张类型档案
  54. esClient.createIndex(keysService.getESKey(ESKeys.ES_ERP_PAPERTYPE_INDEX, supplierCode), ESKeys.INDEX_CONFIG,
  55. Utility.ofMap(ESKeys.ES_ERP_PAPERTYPE_TYPE, "papertype.json"))
  56. Ignore_ExecPageFlipper.execute(500, { PageFlipper p ->
  57. List<PaperInfoType> paperInfoTypeList = paperDao.selectPaperInfoType(params, p, dataSourceId, supplierCode)
  58. if (!paperInfoTypeList.isEmpty()) {
  59. BulkRequestBuilder bulkRequest = esClient.getClient().prepareBulk()
  60. paperInfoTypeList.forEach((x) -> {
  61. IndexRequestBuilder indexRequest = esClient.getClient()
  62. .prepareIndex(keysService.getESKey(ESKeys.ES_ERP_PAPERTYPE_INDEX, supplierCode), ESKeys.ES_ERP_PAPERTYPE_TYPE)
  63. .setId(String.valueOf(x.getId()))
  64. .setSource(jsonConvert.convertTo(x), XContentType.JSON)
  65. bulkRequest.add(indexRequest)
  66. if (StringUtils.isNotBlank(x.getPaperTypeCode())) {
  67. tableIdService.addTableCodeNode(TableCodeNode.newBuilder()
  68. .codeName("tbPaperInfo.code." + x.getPaperTypeCode().trim())
  69. .tableName("tbPaperInfo")
  70. .codeFieldName("paperCode")
  71. .codePrefix(x.getPaperTypeCode())
  72. .codeYear(false)
  73. .yearLength(4)
  74. .codeMonth(false)
  75. .codeDay(false)
  76. .codeLength(4)
  77. .build(),
  78. true,
  79. dataSourceId,
  80. String.valueOf(supplierCode))
  81. }
  82. })
  83. BulkResponse bulkResponse = bulkRequest.execute().actionGet()
  84. if (bulkResponse.hasFailures()) {
  85. logger.error("索引纸张分类出错:" + bulkResponse.buildFailureMessage())
  86. } else {
  87. logger.info("索引纸张分类,共" + paperInfoTypeList.size() + "条记录")
  88. }
  89. }
  90. })
  91. //基础纸张档案
  92. esClient.createIndex(keysService.getESKey(ESKeys.ES_ERP_PAPERBASEINFO_INDEX, supplierCode), ESKeys.INDEX_CONFIG,
  93. Utility.ofMap(ESKeys.ES_ERP_PAPERBASEINFO_TYPE, "paperbaseinfo.json"))
  94. Ignore_ExecPageFlipper.execute(500, { PageFlipper p ->
  95. List<PaperBaseInfo> paperBaseInfoList = paperDao.selectPaperBaseInfo(params, p, dataSourceId, supplierCode)
  96. if (!paperBaseInfoList.isEmpty()) {
  97. BulkRequestBuilder bulkRequest = esClient.getClient().prepareBulk()
  98. paperBaseInfoList.forEach((x) -> {
  99. IndexRequestBuilder indexRequest = esClient.getClient()
  100. .prepareIndex(keysService.getESKey(ESKeys.ES_ERP_PAPERBASEINFO_INDEX, supplierCode), ESKeys.ES_ERP_PAPERBASEINFO_TYPE)
  101. .setId(String.valueOf(x.getId()))
  102. .setSource(jsonConvert.convertTo(x), XContentType.JSON)
  103. bulkRequest.add(indexRequest)
  104. })
  105. BulkResponse bulkResponse = bulkRequest.execute().actionGet()
  106. if (bulkResponse.hasFailures()) {
  107. logger.error("索引纸张档案出错:" + bulkResponse.buildFailureMessage())
  108. } else {
  109. logger.info("索引纸张档案,共" + paperBaseInfoList.size() + "条记录")
  110. }
  111. }
  112. })
  113. //纸张报价档案
  114. esClient.createIndex(keysService.getESKey(ESKeys.ES_ERP_PAPERQUOTEINFO_INDEX, supplierCode), ESKeys.INDEX_CONFIG,
  115. Utility.ofMap(ESKeys.ES_ERP_PAPERQUOTEINFO_TYPE, "paperquoteinfo.json"))
  116. Ignore_ExecPageFlipper.execute(500, { PageFlipper p ->
  117. List<PaperQuoteInfo> paperQuoteInfos = paperDao.selectPaperQuoteInfo(params, p, dataSourceId, supplierCode)
  118. if (!paperQuoteInfos.isEmpty()) {
  119. BulkRequestBuilder bulkRequest = esClient.getClient().prepareBulk()
  120. paperQuoteInfos.forEach((x) -> {
  121. IndexRequestBuilder indexRequest = esClient.getClient()
  122. .prepareIndex(keysService.getESKey(ESKeys.ES_ERP_PAPERQUOTEINFO_INDEX, supplierCode), ESKeys.ES_ERP_PAPERQUOTEINFO_TYPE)
  123. .setId(String.valueOf(x.getId()))
  124. .setSource(jsonConvert.convertTo(x), XContentType.JSON)
  125. bulkRequest.add(indexRequest)
  126. })
  127. BulkResponse bulkResponse = bulkRequest.execute().actionGet()
  128. if (bulkResponse.hasFailures()) {
  129. logger.error("索引纸张报价档案出错:" + bulkResponse.buildFailureMessage())
  130. } else {
  131. logger.info("索引纸张报价档案,共" + paperQuoteInfos.size() + "条记录")
  132. }
  133. }
  134. })
  135. //纸张档案
  136. esClient.createIndex(keysService.getESKey(ESKeys.ES_ERP_PAPERINFO_INDEX, supplierCode), ESKeys.INDEX_CONFIG,
  137. Utility.ofMap(ESKeys.ES_ERP_PAPERINFO_TYPE, "paperinfo.json"))
  138. Ignore_ExecPageFlipper.execute(500, { PageFlipper p ->
  139. List<PaperInfo> paperInfoList = paperDao.selectPaperInfo(params, p, dataSourceId, supplierCode)
  140. if (!paperInfoList.isEmpty()) {
  141. BulkRequestBuilder bulkRequest = esClient.getClient().prepareBulk()
  142. paperInfoList.forEach((x) -> {
  143. IndexRequestBuilder indexRequest = esClient.getClient()
  144. .prepareIndex(keysService.getESKey(ESKeys.ES_ERP_PAPERINFO_INDEX, supplierCode), ESKeys.ES_ERP_PAPERINFO_TYPE)
  145. .setId(String.valueOf(x.getId()))
  146. .setSource(jsonConvert.convertTo(x), XContentType.JSON)
  147. bulkRequest.add(indexRequest)
  148. })
  149. BulkResponse bulkResponse = bulkRequest.execute().actionGet()
  150. if (bulkResponse.hasFailures()) {
  151. logger.error("索引纸张档案出错:" + bulkResponse.buildFailureMessage())
  152. } else {
  153. logger.info("索引纸张档案,共" + paperInfoList.size() + "条记录")
  154. }
  155. }
  156. })
  157. } as Runnable
  158. }
  159. //groovy最后一个表达式的值为返回
  160. createRunnable(esClient, keysService, tableIdService, paperDao, jsonConvert, logger, redisService, dataSourceId, supplierCode)