| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- import Ignore_ExecPageFlipper as ExecPageFlipper
- import com.yinjie.heating.business.dao.DocDao
- import com.yinjie.heating.common.api.NoSqlKeysService
- import com.yinjie.heating.common.datas.ESKeys
- import com.yinjie.heating.common.datas.RedisKeys
- import com.yinjie.heating.common.entity.inquire.InquireCondition
- import com.yinjie.heating.common.entity.inquire.InquireMainInfo
- import com.yinjie.heating.common.entity.inquire.InquireResultColumn
- import com.yinjie.heating.common.tool.ERPUtils
- import com.dySweetFishPlugin.elasticsearch.ESClient
- import com.dySweetFishPlugin.redis.RedisService
- 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 buildTreeList(List<InquireResultColumn> platColumns, long idParent) {
- if (platColumns.isEmpty())
- return platColumns
- List<InquireResultColumn> parents = platColumns.findAll { x ->
- x.idParentColumn == idParent
- }
- platColumns.removeAll(parents)
- parents.each { x ->
- x.childColumnList = buildTreeList(platColumns, x.id)
- }
- return parents
- }
- static def createRunnable(RedisService redisService, ESClient esClient, NoSqlKeysService keysService, DocDao docDao, JsonConvert jsonConvert, Logger logger, String dataSourceId, long supplierCode) {
- return {
- esClient.createIndex(keysService.getESKey(ESKeys.ESERPINQUIREINFO_INDEX, supplierCode), ESKeys.INDEX_CONFIG,
- Utility.ofMap(ESKeys.ESERPINQUIREMAININFO_TYPE, "inquiremaininfo.json",
- ESKeys.ESERPINQUIRERESULTCOLUMN_TYPE, "inquireresultcolumn.json",
- ESKeys.ESERPINQUIRECONDITION_TYPE, "inquirecondition.json"))
- redisService.del(keysService.getRedisKey(RedisKeys.KEY_ERP_INQUIREINFO, supplierCode))
- RMap params = new RMap()
- ExecPageFlipper.execute(500, { PageFlipper p ->
- List<InquireMainInfo> inquireMainInfos = docDao.selectInquireMainInfo(params, p, dataSourceId, supplierCode)
- if (!inquireMainInfos.isEmpty()) {
- BulkRequestBuilder bulkRequest = esClient.getClient().prepareBulk()
- inquireMainInfos.each { x ->
- IndexRequestBuilder indexRequest = esClient.getClient()
- .prepareIndex(keysService.getESKey(ESKeys.ESERPINQUIREINFO_INDEX, supplierCode), ESKeys.ESERPINQUIREMAININFO_TYPE)
- .setId(String.valueOf(x.getId()))
- .setSource(jsonConvert.convertTo(x), XContentType.JSON)
- bulkRequest.add(indexRequest)
- RMap inquireParams = ERPUtils.ofRMap("idInquire", x.id)
- ExecPageFlipper.execute(1000, { PageFlipper p1 ->
- List<InquireResultColumn> inquireResultColumns = docDao.selectInquireResultColumn(inquireParams, p1, dataSourceId, supplierCode)
- //组成树结构
- if (!inquireResultColumns.isEmpty()) {
- List<InquireResultColumn> treeList = buildTreeList(inquireResultColumns, 0L)
- x.setResultColumnList(treeList)
- }
- })
- ExecPageFlipper.execute(1000, { PageFlipper p2 ->
- List<InquireCondition> inquireConditions = docDao.selectInquireCondition(params, p2, dataSourceId, supplierCode)
- if (!inquireConditions.isEmpty())
- x.setConditionList(inquireConditions)
- })
- }
- BulkResponse bulkResponse = bulkRequest.execute().actionGet()
- if (bulkResponse.hasFailures()) {
- logger.error("索引查询统计:" + bulkResponse.buildFailureMessage())
- } else {
- logger.info("索引查询统计共" + inquireMainInfos.size() + "条记录")
- }
- Map<String, String> inquireInfoMap = inquireMainInfos.collectEntries { [String.valueOf(it.getId()), jsonConvert.convertTo(it)] }
- if (!inquireInfoMap.isEmpty())
- redisService.hmset(keysService.getRedisKey(RedisKeys.KEY_ERP_INQUIREINFO, supplierCode), inquireInfoMap)
- }
- })
- } as Runnable
- }
- //groovy最后一个表达式的值为返回
- createRunnable(redisService, esClient, keysService, docDao, jsonConvert, logger, dataSourceId, supplierCode)
|