import com.dderp.common.datas.ESKeys import com.dderp.common.datas.PrintBillLifeNode import org.apache.lucene.search.join.ScoreMode import org.elasticsearch.index.query.BoolQueryBuilder import org.elasticsearch.index.query.QueryBuilder import org.elasticsearch.index.query.QueryBuilders import org.elasticsearch.join.query.JoinQueryBuilders /** * Created by jlutt on 2021-05-08 * * @author jlutt */ enum BreedStatisticsQueryBuilder { //待下达 A1{ QueryBuilder apply(boolean readCycle) { return QueryBuilders.boolQuery() .mustNot(JoinQueryBuilders.hasChildQuery( ESKeys.ES_ERP_PRINTBILL_LIFECYCLE_TYPE, QueryBuilders.boolQuery() .must(QueryBuilders.rangeQuery("lifeNodeId").gte(PrintBillLifeNode.submit.value)) .must(QueryBuilders.rangeQuery("lifeNodeState").gt(0)), ScoreMode.None) ) } }, //待纸张预出库 A2{ QueryBuilder apply(boolean readCycle) { return QueryBuilders.boolQuery() .must(JoinQueryBuilders.hasChildQuery( ESKeys.ES_ERP_PRINTBILL_LIFECYCLE_TYPE, QueryBuilders.boolQuery() .must(QueryBuilders.termQuery("lifeNodeId", PrintBillLifeNode.submit.value)) .must(QueryBuilders.rangeQuery("lifeNodeState").gt(0)), ScoreMode.None) ) .mustNot(JoinQueryBuilders.hasChildQuery( ESKeys.ES_ERP_PRINTBILL_LIFECYCLE_TYPE, QueryBuilders.boolQuery() .must(QueryBuilders.termQuery("lifeNodeId", PrintBillLifeNode.paperPreOut.value)) .must(QueryBuilders.rangeQuery("lifeNodeState").gt(0)), ScoreMode.None) ) .mustNot(JoinQueryBuilders.hasChildQuery( ESKeys.ES_ERP_PRINTBILL_LIFECYCLE_TYPE, QueryBuilders.boolQuery() .must(QueryBuilders.termQuery("lifeNodeId", PrintBillLifeNode.paperStockOut.value)) .must(QueryBuilders.rangeQuery("lifeNodeState").gt(0)), ScoreMode.None) ) } }, //待下机 A3{ QueryBuilder apply(boolean readCycle) { return QueryBuilders.boolQuery() .must(JoinQueryBuilders.hasChildQuery( ESKeys.ES_ERP_PRINTBILL_LIFECYCLE_TYPE, QueryBuilders.boolQuery() .must(QueryBuilders.termQuery("lifeNodeId", PrintBillLifeNode.submit.value)) .must(QueryBuilders.rangeQuery("lifeNodeState").gt(0)), ScoreMode.None) ) .mustNot(JoinQueryBuilders.hasChildQuery( ESKeys.ES_ERP_PRINTBILL_LIFECYCLE_TYPE, QueryBuilders.boolQuery() .must(QueryBuilders.termQuery("lifeNodeId", PrintBillLifeNode.printFeedback.value)) .must(QueryBuilders.rangeQuery("lifeNodeState").gt(0)), ScoreMode.None) ) } }, //待纸张领料 A4{ QueryBuilder apply(boolean readCycle) { BoolQueryBuilder q = QueryBuilders.boolQuery() .must(JoinQueryBuilders.hasChildQuery( ESKeys.ES_ERP_PRINTBILL_LIFECYCLE_TYPE, QueryBuilders.boolQuery() .must(QueryBuilders.termQuery("lifeNodeId", PrintBillLifeNode.paperPreOut.value)) .must(QueryBuilders.rangeQuery("lifeNodeState").gt(0)), ScoreMode.None) ) .mustNot(JoinQueryBuilders.hasChildQuery( ESKeys.ES_ERP_PRINTBILL_LIFECYCLE_TYPE, QueryBuilders.boolQuery() .must(QueryBuilders.termQuery("lifeNodeId", PrintBillLifeNode.paperPick.value)) .must(QueryBuilders.rangeQuery("lifeNodeState").gt(0)), ScoreMode.None) ) return q } }, //待出库 A5{ QueryBuilder apply(boolean readCycle) { BoolQueryBuilder q = QueryBuilders.boolQuery() .must(JoinQueryBuilders.hasChildQuery( ESKeys.ES_ERP_PRINTBILL_LIFECYCLE_TYPE, QueryBuilders.boolQuery() .must(QueryBuilders.termQuery("lifeNodeId", PrintBillLifeNode.paperPick.value)) .must(QueryBuilders.rangeQuery("lifeNodeState").gt(0)), ScoreMode.None) ) .mustNot(JoinQueryBuilders.hasChildQuery( ESKeys.ES_ERP_PRINTBILL_LIFECYCLE_TYPE, QueryBuilders.boolQuery() .must(QueryBuilders.termQuery("lifeNodeId", PrintBillLifeNode.paperStockOut.value)) .must(QueryBuilders.rangeQuery("lifeNodeState").gt(0)), ScoreMode.None) ) return q } }, //待拼版反馈 A6{ QueryBuilder apply(boolean readCycle) { return QueryBuilders.boolQuery() .must(JoinQueryBuilders.hasChildQuery( ESKeys.ES_ERP_PRINTBILL_LIFECYCLE_TYPE, QueryBuilders.boolQuery() .must(QueryBuilders.termQuery("lifeNodeId", PrintBillLifeNode.schedule.value)) .must(QueryBuilders.rangeQuery("lifeNodeState").gt(0)), ScoreMode.None) ) .mustNot(JoinQueryBuilders.hasChildQuery( ESKeys.ES_ERP_PRINTBILL_LIFECYCLE_TYPE, QueryBuilders.boolQuery() .must(QueryBuilders.termQuery("lifeNodeId", PrintBillLifeNode.spliceBreedFeedback.value)) .must(QueryBuilders.rangeQuery("lifeNodeState").gt(0)), ScoreMode.None) ) } }, //待制版反馈 A7{ QueryBuilder apply(boolean readCycle) { return QueryBuilders.boolQuery() .must(JoinQueryBuilders.hasChildQuery( ESKeys.ES_ERP_PRINTBILL_LIFECYCLE_TYPE, QueryBuilders.boolQuery() .must(QueryBuilders.termQuery("lifeNodeId", PrintBillLifeNode.schedule.value)) .must(QueryBuilders.rangeQuery("lifeNodeState").gt(0)), ScoreMode.None) ) .mustNot(JoinQueryBuilders.hasChildQuery( ESKeys.ES_ERP_PRINTBILL_LIFECYCLE_TYPE, QueryBuilders.boolQuery() .must(QueryBuilders.termQuery("lifeNodeId", PrintBillLifeNode.makeBreedFeedback.value)) .must(QueryBuilders.rangeQuery("lifeNodeState").gt(0)), ScoreMode.None) ) } }, //待白料裁切反馈 A8{ QueryBuilder apply(boolean readCycle) { return QueryBuilders.boolQuery() .must(JoinQueryBuilders.hasChildQuery( ESKeys.ES_ERP_PRINTBILL_LIFECYCLE_TYPE, QueryBuilders.boolQuery() .must(QueryBuilders.termQuery("lifeNodeId", PrintBillLifeNode.schedule.value)) .must(QueryBuilders.rangeQuery("lifeNodeState").gt(0)), ScoreMode.None) ) .mustNot(JoinQueryBuilders.hasChildQuery( ESKeys.ES_ERP_PRINTBILL_LIFECYCLE_TYPE, QueryBuilders.boolQuery() .must(QueryBuilders.termQuery("lifeNodeId", PrintBillLifeNode.paperCutFeedback.value)) .must(QueryBuilders.rangeQuery("lifeNodeState").gt(0)), ScoreMode.None) ) } }, //待印刷反馈 A9{ QueryBuilder apply(boolean readCycle) { return QueryBuilders.boolQuery() .must(JoinQueryBuilders.hasChildQuery( ESKeys.ES_ERP_PRINTBILL_LIFECYCLE_TYPE, QueryBuilders.boolQuery() .must(QueryBuilders.termQuery("lifeNodeId", PrintBillLifeNode.schedule.value)) .must(QueryBuilders.rangeQuery("lifeNodeState").gt(0)), ScoreMode.None) ) .mustNot(JoinQueryBuilders.hasChildQuery( ESKeys.ES_ERP_PRINTBILL_LIFECYCLE_TYPE, QueryBuilders.boolQuery() .must(QueryBuilders.termQuery("lifeNodeId", PrintBillLifeNode.printFeedback.value)) .must(QueryBuilders.rangeQuery("lifeNodeState").gt(0)), ScoreMode.None) ) } }, //待外协下达 A10{ QueryBuilder apply(boolean readCycle) { return QueryBuilders.boolQuery() .must(JoinQueryBuilders.hasChildQuery( ESKeys.ES_ERP_PRINTBILL_LIFECYCLE_TYPE, QueryBuilders.boolQuery() .must(QueryBuilders.termQuery("lifeNodeId", PrintBillLifeNode.outAssist.value)) .must(QueryBuilders.termQuery("lifeNodeState", 1)), ScoreMode.None) ) .mustNot(JoinQueryBuilders.hasChildQuery( ESKeys.ES_ERP_PRINTBILL_LIFECYCLE_TYPE, QueryBuilders.boolQuery() .must(QueryBuilders.termQuery("lifeNodeId", PrintBillLifeNode.outAssist.value)) .must(QueryBuilders.rangeQuery("lifeNodeState").gt(1)), ScoreMode.None) ) } }, //待外协验收 A11{ QueryBuilder apply(boolean readCycle) { return QueryBuilders.boolQuery() .must(JoinQueryBuilders.hasChildQuery( ESKeys.ES_ERP_PRINTBILL_LIFECYCLE_TYPE, QueryBuilders.boolQuery() .must(QueryBuilders.termQuery("lifeNodeId", PrintBillLifeNode.outAssist.value)) .must(QueryBuilders.termQuery("lifeNodeState", 2)), ScoreMode.None) ) .mustNot(JoinQueryBuilders.hasChildQuery( ESKeys.ES_ERP_PRINTBILL_LIFECYCLE_TYPE, QueryBuilders.boolQuery() .must(QueryBuilders.termQuery("lifeNodeId", PrintBillLifeNode.outAssist.value)) .must(QueryBuilders.rangeQuery("lifeNodeState").gt(2)), ScoreMode.None) ) } }, //已外协验收 A12{ QueryBuilder apply(boolean readCycle) { return QueryBuilders.boolQuery() .must(JoinQueryBuilders.hasChildQuery( ESKeys.ESERPPRINTBILLLIFECYCLE_TYPE, QueryBuilders.boolQuery() .must(QueryBuilders.termQuery("lifeNodeId", PrintBillLifeNode.outAssist.value)) .must(QueryBuilders.termQuery("lifeNodeState", 3)), ScoreMode.None) ) .mustNot(JoinQueryBuilders.hasChildQuery( ESKeys.ESERPPRINTBILLLIFECYCLE_TYPE, QueryBuilders.boolQuery() .must(QueryBuilders.termQuery("lifeNodeId", PrintBillLifeNode.complete.value)) .must(QueryBuilders.rangeQuery("lifeNodeState").gt(0)), ScoreMode.None) ) } }, //待半成品反馈 A13{ QueryBuilder apply(boolean readCycle) { return QueryBuilders.boolQuery() .must(JoinQueryBuilders.hasChildQuery( ESKeys.ESERPPRINTBILLLIFECYCLE_TYPE, QueryBuilders.boolQuery() .must(QueryBuilders.termQuery("lifeNodeId", PrintBillLifeNode.printFeedback.value)) .must(QueryBuilders.rangeQuery("lifeNodeState").gt(0)), ScoreMode.None) ) .mustNot(JoinQueryBuilders.hasChildQuery( ESKeys.ESERPPRINTBILLLIFECYCLE_TYPE, QueryBuilders.boolQuery() .must(QueryBuilders.termQuery("lifeNodeId", PrintBillLifeNode.semiComplete.value)) .must(QueryBuilders.rangeQuery("lifeNodeState").gt(0)), ScoreMode.None) ) } }, //生产完成 A14{ QueryBuilder apply(boolean readCycle) { return QueryBuilders.boolQuery() .must(JoinQueryBuilders.hasChildQuery( ESKeys.ESERPPRINTBILLLIFECYCLE_TYPE, QueryBuilders.boolQuery() .must(QueryBuilders.termQuery("lifeNodeId", PrintBillLifeNode.complete.value)), ScoreMode.None) ) } }; abstract QueryBuilder apply(boolean readCycle); }