Init_27_Material.Groovy 4.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. import com.dderp.common.entity.material.MaterialInfo
  2. import com.dderp.common.entity.material.MaterialInfoType
  3. import com.dySweetFishPlugin.elasticsearch.ESClient
  4. import com.dySweetFishPlugin.sql.TableCodeNode
  5. import com.dySweetFishPlugin.sql.TableIdService
  6. import com.sweetfish.convert.json.JsonConvert
  7. import com.sweetfish.source.PageFlipper
  8. import com.sweetfish.util.Utility
  9. import org.apache.commons.lang3.StringUtils
  10. import org.apache.logging.log4j.Logger
  11. import com.dderp.business.dao.MaterialDao
  12. import com.dderp.common.api.NoSqlKeysService
  13. import com.dderp.common.datas.ESKeys
  14. import org.elasticsearch.action.bulk.BulkRequestBuilder
  15. import org.elasticsearch.action.bulk.BulkResponse
  16. import org.elasticsearch.action.index.IndexRequestBuilder
  17. import org.elasticsearch.common.xcontent.XContentType
  18. import org.rex.RMap
  19. static def createRunnable(ESClient esClient, NoSqlKeysService keysService, MaterialDao materialDao, TableIdService tableIdService,
  20. JsonConvert jsonConvert, Logger logger, String dataSourceId, long supplierCode) {
  21. return {
  22. RMap params = new RMap()
  23. //辅料类型档案
  24. esClient.createIndex(keysService.getESKey(ESKeys.ES_ERP_MATERIALTYPE_INDEX, supplierCode), ESKeys.INDEX_CONFIG,
  25. Utility.ofMap(ESKeys.ES_ERP_MATERIALTYPE_TYPE, "materialtype.json"))
  26. Ignore_ExecPageFlipper.execute(1000, { PageFlipper p ->
  27. List<MaterialInfoType> materialInfoTypeList = materialDao.selectMaterialType(params, p, dataSourceId, supplierCode)
  28. if (!materialInfoTypeList.isEmpty()) {
  29. BulkRequestBuilder bulkRequest = esClient.getClient().prepareBulk()
  30. materialInfoTypeList.forEach((x) -> {
  31. IndexRequestBuilder indexRequest = esClient.getClient()
  32. .prepareIndex(keysService.getESKey(ESKeys.ES_ERP_MATERIALTYPE_INDEX, supplierCode), ESKeys.ES_ERP_MATERIALTYPE_TYPE)
  33. .setId(String.valueOf(x.getId()))
  34. .setSource(jsonConvert.convertTo(x), XContentType.JSON)
  35. bulkRequest.add(indexRequest)
  36. if (StringUtils.isNotBlank(x.getMaterialTypeCode())) {
  37. tableIdService.addTableCodeNode(TableCodeNode.newBuilder()
  38. .codeName("tbMaterialInfo.code." + x.getMaterialTypeCode().trim())
  39. .tableName("tbMaterialInfo")
  40. .codeFieldName("materialCode")
  41. .codePrefix(x.getMaterialTypeCode())
  42. .codeYear(false)
  43. .yearLength(4)
  44. .codeMonth(false)
  45. .codeDay(false)
  46. .codeLength(5)
  47. .build(),
  48. true,
  49. dataSourceId,
  50. String.valueOf(supplierCode))
  51. }
  52. })
  53. BulkResponse bulkResponse = bulkRequest.execute().actionGet()
  54. if (bulkResponse.hasFailures()) {
  55. logger.error("索引辅料分类出错:" + bulkResponse.buildFailureMessage())
  56. } else {
  57. logger.info("索引辅料分类,共" + materialInfoTypeList.size() + "条记录")
  58. }
  59. }
  60. })
  61. //辅料档案
  62. esClient.createIndex(keysService.getESKey(ESKeys.ES_ERP_MATERIALINFO_INDEX, supplierCode), ESKeys.INDEX_CONFIG,
  63. Utility.ofMap(ESKeys.ES_ERP_MATERIALINFO_TYPE, "materialinfo.json"))
  64. Ignore_ExecPageFlipper.execute(1000, { PageFlipper p ->
  65. List<MaterialInfo> materialInfoList = materialDao.selectMaterialInfo(params, p, dataSourceId, supplierCode)
  66. if (!materialInfoList.isEmpty()) {
  67. BulkRequestBuilder bulkRequest = esClient.getClient().prepareBulk()
  68. materialInfoList.forEach((x) -> {
  69. IndexRequestBuilder indexRequest = esClient.getClient()
  70. .prepareIndex(keysService.getESKey(ESKeys.ES_ERP_MATERIALINFO_INDEX, supplierCode), ESKeys.ES_ERP_MATERIALINFO_TYPE)
  71. .setId(String.valueOf(x.getId()))
  72. .setSource(jsonConvert.convertTo(x), XContentType.JSON)
  73. bulkRequest.add(indexRequest)
  74. })
  75. BulkResponse bulkResponse = bulkRequest.execute().actionGet()
  76. if (bulkResponse.hasFailures()) {
  77. logger.error("索引辅料出错:" + bulkResponse.buildFailureMessage())
  78. } else {
  79. logger.info("索引辅料,共" + materialInfoList.size() + "条记录")
  80. }
  81. }
  82. })
  83. } as Runnable
  84. }
  85. //groovy最后一个表达式的值为返回
  86. createRunnable(esClient, keysService, materialDao, tableIdService, jsonConvert, logger, dataSourceId, supplierCode)