import com.dderp.common.datas.ESKeys import com.dderp.common.datas.OrderLifeCycleNode import com.dySweetFishPlugin.tool.lang.DateUtil import org.apache.lucene.search.join.ScoreMode import org.elasticsearch.index.query.BoolQueryBuilder import org.elasticsearch.index.query.InnerHitBuilder import org.elasticsearch.index.query.QueryBuilder import org.elasticsearch.index.query.QueryBuilders import org.elasticsearch.join.query.JoinQueryBuilders import java.time.Instant import java.time.LocalDate import java.time.ZoneId /** * Created by jlutt on 2021-05-08 * * @author jlutt */ enum OrderStatisticsQueryBuilder { //待审核 A1{ QueryBuilder apply(List permissionIds, boolean checkPermission, boolean readCycle) { BoolQueryBuilder q = QueryBuilders.boolQuery() .must(JoinQueryBuilders.hasChildQuery( ESKeys.ES_ERP_ORDER_LIFECYCLE_TYPE, QueryBuilders.boolQuery() .must(QueryBuilders.termQuery("lifeNodeId", OrderLifeCycleNode.CREATE.getValue())) .must(QueryBuilders.rangeQuery("lifeNodeState").gt(0)) .must(QueryBuilders.termQuery("voidMasterFlag", 0)), ScoreMode.None) ) .mustNot(JoinQueryBuilders.hasChildQuery( ESKeys.ES_ERP_ORDER_LIFECYCLE_TYPE, QueryBuilders.boolQuery() .must(QueryBuilders.rangeQuery("lifeNodeId").gt(OrderLifeCycleNode.CREATE.getValue())) .must(QueryBuilders.rangeQuery("lifeNodeState").gt(0)) .must(QueryBuilders.termQuery("voidMasterFlag", 0)), ScoreMode.None) ) if (checkPermission) { if ((permissionIds != null) && (!permissionIds.isEmpty())) { q = q.must(QueryBuilders.termsQuery("createBy", permissionIds.toArray())) } } return q } }, //文件待处理 A2{ QueryBuilder apply(List permissionIds, boolean checkPermission, boolean readCycle) { BoolQueryBuilder q = QueryBuilders.boolQuery() .must(JoinQueryBuilders.hasChildQuery( ESKeys.ES_ERP_ORDER_LIFECYCLE_TYPE, QueryBuilders.boolQuery() .must(QueryBuilders.termQuery("lifeNodeId", OrderLifeCycleNode.VERIFY.getValue())) .must(QueryBuilders.rangeQuery("lifeNodeState").gt(0)) .must(QueryBuilders.termQuery("voidMasterFlag", 0)), ScoreMode.None) ) .mustNot(JoinQueryBuilders.hasChildQuery( ESKeys.ES_ERP_ORDER_LIFECYCLE_TYPE, QueryBuilders.boolQuery() .must(QueryBuilders.termQuery("lifeNodeId", OrderLifeCycleNode.IMAGE_DESIGN.getValue())) .must(QueryBuilders.rangeQuery("lifeNodeState").gt(0)) .must(QueryBuilders.termQuery("voidMasterFlag", 0)), ScoreMode.None) ) if (checkPermission) { if ((permissionIds != null) && (!permissionIds.isEmpty())) { q = q.must(QueryBuilders.termsQuery("createBy", permissionIds.toArray())) } } return q } }, //待组版 A3{ QueryBuilder apply(List permissionIds, boolean checkPermission, boolean readCycle) { BoolQueryBuilder q = QueryBuilders.boolQuery() .must(JoinQueryBuilders.hasChildQuery( ESKeys.ES_ERP_ORDER_LIFECYCLE_TYPE, QueryBuilders.boolQuery() .must(QueryBuilders.termQuery("lifeNodeId", OrderLifeCycleNode.VERIFY.getValue())) .must(QueryBuilders.rangeQuery("lifeNodeState").gt(0)) .must(QueryBuilders.termQuery("voidMasterFlag", 0)), ScoreMode.None) ) .mustNot(JoinQueryBuilders.hasChildQuery( ESKeys.ES_ERP_ORDER_LIFECYCLE_TYPE, QueryBuilders.boolQuery() .must(QueryBuilders.termQuery("lifeNodeId", OrderLifeCycleNode.COMPOSE_PLATE.getValue())) .must(QueryBuilders.rangeQuery("lifeNodeState").gt(0)) .must(QueryBuilders.termQuery("voidMasterFlag", 0)), ScoreMode.None) ) if (checkPermission) { if ((permissionIds != null) && (!permissionIds.isEmpty())) { q = q.must(QueryBuilders.termsQuery("createBy", permissionIds.toArray())) } } return q } }, //待排产 A4{ QueryBuilder apply(List permissionIds, boolean checkPermission, boolean readCycle) { BoolQueryBuilder q = QueryBuilders.boolQuery() .must(JoinQueryBuilders.hasChildQuery( ESKeys.ES_ERP_ORDER_LIFECYCLE_TYPE, QueryBuilders.boolQuery() .must(QueryBuilders.termQuery("lifeNodeId", OrderLifeCycleNode.TRANSMITTED.getValue())) .must(QueryBuilders.rangeQuery("lifeNodeState").gt(0)) // .must(QueryBuilders.termQuery("lifeNodeId", OrderLifeCycleNode.COMPOSE_PLATE.getValue())) .must(QueryBuilders.termQuery("voidMasterFlag", 0)), ScoreMode.None) ) .mustNot(JoinQueryBuilders.hasChildQuery( ESKeys.ES_ERP_ORDER_LIFECYCLE_TYPE, QueryBuilders.boolQuery() .must(QueryBuilders.termQuery("lifeNodeId", OrderLifeCycleNode.PLANNED.getValue())) .must(QueryBuilders.rangeQuery("lifeNodeState").gt(0)) .must(QueryBuilders.termQuery("voidMasterFlag", 0)), ScoreMode.None) ) if (readCycle) { q = q.must(JoinQueryBuilders.hasChildQuery( ESKeys.ES_ERP_ORDER_LIFECYCLE_TYPE, QueryBuilders.boolQuery() .must(QueryBuilders.termQuery("lifeNodeId", OrderLifeCycleNode.COMPOSE_PLATE.getValue())) .must(QueryBuilders.rangeQuery("lifeNodeState").gt(0)) .must(QueryBuilders.termQuery("voidMasterFlag", 0)), ScoreMode.None).innerHit(new InnerHitBuilder().setSize(10000))) } if (checkPermission) { if ((permissionIds != null) && (!permissionIds.isEmpty())) { q = q.must(QueryBuilders.termsQuery("createBy", permissionIds.toArray())) } } return q } }, //待拼版 A5{ QueryBuilder apply(List permissionIds, boolean checkPermission, boolean readCycle) { BoolQueryBuilder q = QueryBuilders.boolQuery() .must(JoinQueryBuilders.hasChildQuery( ESKeys.ES_ERP_ORDER_LIFECYCLE_TYPE, QueryBuilders.boolQuery() .must(QueryBuilders.termQuery("lifeNodeId", OrderLifeCycleNode.TRANSMITTED.getValue())) .must(QueryBuilders.rangeQuery("lifeNodeState").gt(0)) .must(QueryBuilders.termQuery("voidMasterFlag", 0)), ScoreMode.None) ) .mustNot(JoinQueryBuilders.hasChildQuery( ESKeys.ES_ERP_ORDER_LIFECYCLE_TYPE, QueryBuilders.boolQuery() .must(QueryBuilders.termQuery("lifeNodeId", OrderLifeCycleNode.PDF_PLATED.getValue())) .must(QueryBuilders.rangeQuery("lifeNodeState").gt(0)) .must(QueryBuilders.termQuery("voidMasterFlag", 0)), ScoreMode.None) ) if (checkPermission) { if ((permissionIds != null) && (!permissionIds.isEmpty())) { q = q.must(QueryBuilders.termsQuery("createBy", permissionIds.toArray())) } } return q } }, A6{ QueryBuilder apply(List permissionIds, boolean checkPermission, boolean readCycle) { BoolQueryBuilder q = QueryBuilders.boolQuery() .must(JoinQueryBuilders.hasChildQuery( ESKeys.ES_ERP_ORDER_LIFECYCLE_TYPE, QueryBuilders.boolQuery() .must(QueryBuilders.termQuery("lifeNodeId", OrderLifeCycleNode.TRANSMITTED.getValue())) .must(QueryBuilders.rangeQuery("lifeNodeState").gt(0)) .must(QueryBuilders.termQuery("voidMasterFlag", 0)), ScoreMode.None) ) .mustNot(JoinQueryBuilders.hasChildQuery( ESKeys.ES_ERP_ORDER_LIFECYCLE_TYPE, QueryBuilders.boolQuery() .must(QueryBuilders.termQuery("lifeNodeId", OrderLifeCycleNode.PS_MAKE.getValue())) .must(QueryBuilders.rangeQuery("lifeNodeState").gt(0)) .must(QueryBuilders.termQuery("voidMasterFlag", 0)), ScoreMode.None) ) if (checkPermission) { if ((permissionIds != null) && (!permissionIds.isEmpty())) { q = q.must(QueryBuilders.termsQuery("createBy", permissionIds.toArray())) } } return q } }, A7{ QueryBuilder apply(List permissionIds, boolean checkPermission, boolean readCycle) { BoolQueryBuilder q = QueryBuilders.boolQuery() .must(JoinQueryBuilders.hasChildQuery( ESKeys.ES_ERP_ORDER_LIFECYCLE_TYPE, QueryBuilders.boolQuery() .must(QueryBuilders.termQuery("lifeNodeId", OrderLifeCycleNode.TRANSMITTED.getValue())) .must(QueryBuilders.rangeQuery("lifeNodeState").gt(0)) .must(QueryBuilders.termQuery("voidMasterFlag", 0)), ScoreMode.None) ) .mustNot(JoinQueryBuilders.hasChildQuery( ESKeys.ES_ERP_ORDER_LIFECYCLE_TYPE, QueryBuilders.boolQuery() .must(QueryBuilders.termQuery("lifeNodeId", OrderLifeCycleNode.STOCK_IN.getValue())) .must(QueryBuilders.rangeQuery("lifeNodeState").gt(0)) .must(QueryBuilders.termQuery("voidMasterFlag", 0)), ScoreMode.None) ) if (checkPermission) { if ((permissionIds != null) && (!permissionIds.isEmpty())) { q = q.must(QueryBuilders.termsQuery("createBy", permissionIds.toArray())) } } return q } }, A8{ QueryBuilder apply(List permissionIds, boolean checkPermission, boolean readCycle) { BoolQueryBuilder q = QueryBuilders.boolQuery() .must(JoinQueryBuilders.hasChildQuery( ESKeys.ES_ERP_ORDER_LIFECYCLE_TYPE, QueryBuilders.boolQuery() .must(QueryBuilders.termQuery("lifeNodeId", OrderLifeCycleNode.TRANSMITTED.getValue())) .must(QueryBuilders.rangeQuery("lifeNodeState").gt(0)) .must(QueryBuilders.termQuery("voidMasterFlag", 0)), ScoreMode.None) ) .mustNot(JoinQueryBuilders.hasChildQuery( ESKeys.ES_ERP_ORDER_LIFECYCLE_TYPE, QueryBuilders.boolQuery() .must(QueryBuilders.termQuery("lifeNodeId", OrderLifeCycleNode.PRINTED.getValue())) .must(QueryBuilders.rangeQuery("lifeNodeState").gt(0)) .must(QueryBuilders.termQuery("voidMasterFlag", 0)), ScoreMode.None) ) if (checkPermission) { if ((permissionIds != null) && (!permissionIds.isEmpty())) { q = q.must(QueryBuilders.termsQuery("createBy", permissionIds.toArray())) } } return q } }, A9{ QueryBuilder apply(List permissionIds, boolean checkPermission, boolean readCycle) { BoolQueryBuilder q = QueryBuilders.boolQuery() .must(JoinQueryBuilders.hasChildQuery( ESKeys.ES_ERP_ORDER_LIFECYCLE_TYPE, QueryBuilders.boolQuery() .must(QueryBuilders.termQuery("lifeNodeId", OrderLifeCycleNode.TRANSMITTED.getValue())) .must(QueryBuilders.rangeQuery("lifeNodeState").gt(0)) .must(QueryBuilders.termQuery("voidMasterFlag", 0)), ScoreMode.None) ) .mustNot(JoinQueryBuilders.hasChildQuery( ESKeys.ES_ERP_ORDER_LIFECYCLE_TYPE, QueryBuilders.boolQuery() .must(QueryBuilders.termQuery("lifeNodeId", OrderLifeCycleNode.PREPARED.getValue())) .must(QueryBuilders.termQuery("voidMasterFlag", 0)), ScoreMode.None) ) if (checkPermission) { if ((permissionIds != null) && (!permissionIds.isEmpty())) { q = q.must(QueryBuilders.termsQuery("createBy", permissionIds.toArray())) } } return q } }, A10{ QueryBuilder apply(List permissionIds, boolean checkPermission, boolean readCycle) { BoolQueryBuilder q = QueryBuilders.boolQuery() .must(JoinQueryBuilders.hasChildQuery( ESKeys.ES_ERP_ORDER_LIFECYCLE_TYPE, QueryBuilders.boolQuery() .must(QueryBuilders.termQuery("lifeNodeId", OrderLifeCycleNode.OUT_ASSIST_WAIT.getValue())) .must(QueryBuilders.termQuery("voidMasterFlag", 0)), ScoreMode.None) ) .mustNot(JoinQueryBuilders.hasChildQuery( ESKeys.ES_ERP_ORDER_LIFECYCLE_TYPE, QueryBuilders.boolQuery() .must(QueryBuilders.termQuery("lifeNodeId", OrderLifeCycleNode.OUT_ASSIST_COMPLETED.getValue())) .must(QueryBuilders.termQuery("voidMasterFlag", 0)), ScoreMode.None) ) if (checkPermission) { if ((permissionIds != null) && (!permissionIds.isEmpty())) { q = q.must(QueryBuilders.termsQuery("createBy", permissionIds.toArray())) } } return q } }, A11{ QueryBuilder apply(List permissionIds, boolean checkPermission, boolean readCycle) { BoolQueryBuilder q = QueryBuilders.boolQuery() .must(JoinQueryBuilders.hasChildQuery( ESKeys.ES_ERP_ORDER_LIFECYCLE_TYPE, QueryBuilders.boolQuery() .must(QueryBuilders.termQuery("lifeNodeId", OrderLifeCycleNode.VERIFY.getValue())) .must(QueryBuilders.termQuery("voidMasterFlag", 0)), ScoreMode.None) ) .mustNot(JoinQueryBuilders.hasChildQuery( ESKeys.ES_ERP_ORDER_LIFECYCLE_TYPE, QueryBuilders.boolQuery() .must(QueryBuilders.termQuery("lifeNodeId", OrderLifeCycleNode.STOCK_IN.getValue())) .must(QueryBuilders.termQuery("voidMasterFlag", 0)), ScoreMode.None) ) if (checkPermission) { if ((permissionIds != null) && (!permissionIds.isEmpty())) { q = q.must(QueryBuilders.termsQuery("createBy", permissionIds.toArray())) } } return q } }, A12{ QueryBuilder apply(List permissionIds, boolean checkPermission, boolean readCycle) { BoolQueryBuilder q = QueryBuilders.boolQuery() .must(JoinQueryBuilders.hasChildQuery( ESKeys.ES_ERP_ORDER_LIFECYCLE_TYPE, QueryBuilders.boolQuery() .must(QueryBuilders.termQuery("lifeNodeId", OrderLifeCycleNode.STOCK_IN.getValue())) .must(QueryBuilders.termQuery("voidMasterFlag", 0)), ScoreMode.None) ) .mustNot(JoinQueryBuilders.hasChildQuery( ESKeys.ES_ERP_ORDER_LIFECYCLE_TYPE, QueryBuilders.boolQuery() .must(QueryBuilders.termQuery("lifeNodeId", OrderLifeCycleNode.SEND.getValue())) .must(QueryBuilders.termQuery("voidMasterFlag", 0)), ScoreMode.None) ) if (checkPermission) { if ((permissionIds != null) && (!permissionIds.isEmpty())) { q = q.must(QueryBuilders.termsQuery("createBy", permissionIds.toArray())) } } return q } }, A13{ QueryBuilder apply(List permissionIds, boolean checkPermission, boolean readCycle) { long lastStartTime = DateUtil.getStartOfDay(Date.from(LocalDate.now().plusDays(-1).atStartOfDay().atZone(ZoneId.systemDefault()).toInstant())).getTime() long lastEndTime = DateUtil.getEndOfDay(Date.from(LocalDate.now().plusDays(-1).atStartOfDay().atZone(ZoneId.systemDefault()).toInstant())).getTime() BoolQueryBuilder q = QueryBuilders.boolQuery() if (readCycle) { q = q.must(QueryBuilders.rangeQuery("createTimeLong").gte(lastStartTime).lte(lastEndTime)) .should(JoinQueryBuilders.hasChildQuery( ESKeys.ES_ERP_ORDER_LIFECYCLE_TYPE, QueryBuilders.boolQuery() .must(QueryBuilders.termQuery("lifeNodeId", OrderLifeCycleNode.COMPOSE_PLATE.getValue())) .must(QueryBuilders.termQuery("voidMasterFlag", 0)), ScoreMode.None).innerHit(new InnerHitBuilder().setSize(10000))) } else { q = q.must(QueryBuilders.rangeQuery("createTimeLong").gte(lastStartTime).lte(lastEndTime)) } if (checkPermission) { if ((permissionIds != null) && (!permissionIds.isEmpty())) { q = q.must(QueryBuilders.termsQuery("createBy", permissionIds.toArray())) } } return q } }, A14{ QueryBuilder apply(List permissionIds, boolean checkPermission, boolean readCycle) { long curStartTime = DateUtil.getStartOfDay(Date.from(Instant.now())).getTime() long curEndTime = DateUtil.getEndOfDay(Date.from(Instant.now())).getTime() BoolQueryBuilder q = QueryBuilders.boolQuery() if (readCycle) { q = q.must(QueryBuilders.rangeQuery("createTimeLong").gte(curStartTime).lte(curEndTime)) .should(JoinQueryBuilders.hasChildQuery( ESKeys.ES_ERP_ORDER_LIFECYCLE_TYPE, QueryBuilders.boolQuery() .must(QueryBuilders.termQuery("lifeNodeId", OrderLifeCycleNode.COMPOSE_PLATE.getValue())) .must(QueryBuilders.termQuery("voidMasterFlag", 0)), ScoreMode.None).innerHit(new InnerHitBuilder().setSize(10000))) } else { q = q.must(QueryBuilders.rangeQuery("createTimeLong").gte(curStartTime).lte(curEndTime)) } if (checkPermission) { if ((permissionIds != null) && (!permissionIds.isEmpty())) { q = q.must(QueryBuilders.termsQuery("createBy", permissionIds.toArray())) } } return q } }, A15{ QueryBuilder apply(List permissionIds, boolean checkPermission, boolean readCycle) { BoolQueryBuilder q = QueryBuilders.boolQuery() .must(JoinQueryBuilders.hasChildQuery( ESKeys.ES_ERP_ORDER_LIFECYCLE_TYPE, QueryBuilders.boolQuery() .must(QueryBuilders.termQuery("lifeNodeId", OrderLifeCycleNode.CREATE.getValue())) .must(QueryBuilders.termQuery("voidMasterFlag", 0)), ScoreMode.None) ) .mustNot(JoinQueryBuilders.hasChildQuery( ESKeys.ES_ERP_ORDER_LIFECYCLE_TYPE, QueryBuilders.boolQuery() .must(QueryBuilders.termQuery("lifeNodeId", OrderLifeCycleNode.SEND.getValue())) .must(QueryBuilders.termQuery("voidMasterFlag", 0)), ScoreMode.None) ) if (readCycle) { q = q.should(JoinQueryBuilders.hasChildQuery( ESKeys.ES_ERP_ORDER_LIFECYCLE_TYPE, QueryBuilders.boolQuery() .must(QueryBuilders.termQuery("lifeNodeId", OrderLifeCycleNode.COMPOSE_PLATE.getValue())) .must(QueryBuilders.termQuery("voidMasterFlag", 0)), ScoreMode.None).innerHit(new InnerHitBuilder().setSize(10000))) } if (checkPermission) { if ((permissionIds != null) && (!permissionIds.isEmpty())) { q = q.must(QueryBuilders.termsQuery("createBy", permissionIds.toArray())) } } return q } }; abstract QueryBuilder apply(List permissionIds, boolean checkPermission, boolean readCycle); }