BreedStatisticsQueryBuilder.groovy 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299
  1. import com.dderp.common.datas.ESKeys
  2. import com.dderp.common.datas.PrintBillLifeNode
  3. import org.apache.lucene.search.join.ScoreMode
  4. import org.elasticsearch.index.query.BoolQueryBuilder
  5. import org.elasticsearch.index.query.QueryBuilder
  6. import org.elasticsearch.index.query.QueryBuilders
  7. import org.elasticsearch.join.query.JoinQueryBuilders
  8. /**
  9. * Created by jlutt on 2021-05-08
  10. *
  11. * @author jlutt
  12. */
  13. enum BreedStatisticsQueryBuilder {
  14. //待下达
  15. A1{
  16. QueryBuilder apply(boolean readCycle) {
  17. return QueryBuilders.boolQuery()
  18. .mustNot(JoinQueryBuilders.hasChildQuery(
  19. ESKeys.ES_ERP_PRINTBILL_LIFECYCLE_TYPE,
  20. QueryBuilders.boolQuery()
  21. .must(QueryBuilders.rangeQuery("lifeNodeId").gte(PrintBillLifeNode.submit.value))
  22. .must(QueryBuilders.rangeQuery("lifeNodeState").gt(0)),
  23. ScoreMode.None)
  24. )
  25. }
  26. },
  27. //待纸张预出库
  28. A2{
  29. QueryBuilder apply(boolean readCycle) {
  30. return QueryBuilders.boolQuery()
  31. .must(JoinQueryBuilders.hasChildQuery(
  32. ESKeys.ES_ERP_PRINTBILL_LIFECYCLE_TYPE,
  33. QueryBuilders.boolQuery()
  34. .must(QueryBuilders.termQuery("lifeNodeId", PrintBillLifeNode.submit.value))
  35. .must(QueryBuilders.rangeQuery("lifeNodeState").gt(0)),
  36. ScoreMode.None)
  37. )
  38. .mustNot(JoinQueryBuilders.hasChildQuery(
  39. ESKeys.ES_ERP_PRINTBILL_LIFECYCLE_TYPE,
  40. QueryBuilders.boolQuery()
  41. .must(QueryBuilders.termQuery("lifeNodeId", PrintBillLifeNode.paperPreOut.value))
  42. .must(QueryBuilders.rangeQuery("lifeNodeState").gt(0)),
  43. ScoreMode.None)
  44. )
  45. .mustNot(JoinQueryBuilders.hasChildQuery(
  46. ESKeys.ES_ERP_PRINTBILL_LIFECYCLE_TYPE,
  47. QueryBuilders.boolQuery()
  48. .must(QueryBuilders.termQuery("lifeNodeId", PrintBillLifeNode.paperStockOut.value))
  49. .must(QueryBuilders.rangeQuery("lifeNodeState").gt(0)),
  50. ScoreMode.None)
  51. )
  52. }
  53. },
  54. //待下机
  55. A3{
  56. QueryBuilder apply(boolean readCycle) {
  57. return QueryBuilders.boolQuery()
  58. .must(JoinQueryBuilders.hasChildQuery(
  59. ESKeys.ES_ERP_PRINTBILL_LIFECYCLE_TYPE,
  60. QueryBuilders.boolQuery()
  61. .must(QueryBuilders.termQuery("lifeNodeId", PrintBillLifeNode.submit.value))
  62. .must(QueryBuilders.rangeQuery("lifeNodeState").gt(0)),
  63. ScoreMode.None)
  64. )
  65. .mustNot(JoinQueryBuilders.hasChildQuery(
  66. ESKeys.ES_ERP_PRINTBILL_LIFECYCLE_TYPE,
  67. QueryBuilders.boolQuery()
  68. .must(QueryBuilders.termQuery("lifeNodeId", PrintBillLifeNode.printFeedback.value))
  69. .must(QueryBuilders.rangeQuery("lifeNodeState").gt(0)),
  70. ScoreMode.None)
  71. )
  72. }
  73. },
  74. //待纸张领料
  75. A4{
  76. QueryBuilder apply(boolean readCycle) {
  77. BoolQueryBuilder q = QueryBuilders.boolQuery()
  78. .must(JoinQueryBuilders.hasChildQuery(
  79. ESKeys.ES_ERP_PRINTBILL_LIFECYCLE_TYPE,
  80. QueryBuilders.boolQuery()
  81. .must(QueryBuilders.termQuery("lifeNodeId", PrintBillLifeNode.paperPreOut.value))
  82. .must(QueryBuilders.rangeQuery("lifeNodeState").gt(0)),
  83. ScoreMode.None)
  84. )
  85. .mustNot(JoinQueryBuilders.hasChildQuery(
  86. ESKeys.ES_ERP_PRINTBILL_LIFECYCLE_TYPE,
  87. QueryBuilders.boolQuery()
  88. .must(QueryBuilders.termQuery("lifeNodeId", PrintBillLifeNode.paperPick.value))
  89. .must(QueryBuilders.rangeQuery("lifeNodeState").gt(0)),
  90. ScoreMode.None)
  91. )
  92. return q
  93. }
  94. },
  95. //待出库
  96. A5{
  97. QueryBuilder apply(boolean readCycle) {
  98. BoolQueryBuilder q = QueryBuilders.boolQuery()
  99. .must(JoinQueryBuilders.hasChildQuery(
  100. ESKeys.ES_ERP_PRINTBILL_LIFECYCLE_TYPE,
  101. QueryBuilders.boolQuery()
  102. .must(QueryBuilders.termQuery("lifeNodeId", PrintBillLifeNode.paperPick.value))
  103. .must(QueryBuilders.rangeQuery("lifeNodeState").gt(0)),
  104. ScoreMode.None)
  105. )
  106. .mustNot(JoinQueryBuilders.hasChildQuery(
  107. ESKeys.ES_ERP_PRINTBILL_LIFECYCLE_TYPE,
  108. QueryBuilders.boolQuery()
  109. .must(QueryBuilders.termQuery("lifeNodeId", PrintBillLifeNode.paperStockOut.value))
  110. .must(QueryBuilders.rangeQuery("lifeNodeState").gt(0)),
  111. ScoreMode.None)
  112. )
  113. return q
  114. }
  115. },
  116. //待拼版反馈
  117. A6{
  118. QueryBuilder apply(boolean readCycle) {
  119. return QueryBuilders.boolQuery()
  120. .must(JoinQueryBuilders.hasChildQuery(
  121. ESKeys.ES_ERP_PRINTBILL_LIFECYCLE_TYPE,
  122. QueryBuilders.boolQuery()
  123. .must(QueryBuilders.termQuery("lifeNodeId", PrintBillLifeNode.schedule.value))
  124. .must(QueryBuilders.rangeQuery("lifeNodeState").gt(0)),
  125. ScoreMode.None)
  126. )
  127. .mustNot(JoinQueryBuilders.hasChildQuery(
  128. ESKeys.ES_ERP_PRINTBILL_LIFECYCLE_TYPE,
  129. QueryBuilders.boolQuery()
  130. .must(QueryBuilders.termQuery("lifeNodeId", PrintBillLifeNode.spliceBreedFeedback.value))
  131. .must(QueryBuilders.rangeQuery("lifeNodeState").gt(0)),
  132. ScoreMode.None)
  133. )
  134. }
  135. },
  136. //待制版反馈
  137. A7{
  138. QueryBuilder apply(boolean readCycle) {
  139. return QueryBuilders.boolQuery()
  140. .must(JoinQueryBuilders.hasChildQuery(
  141. ESKeys.ES_ERP_PRINTBILL_LIFECYCLE_TYPE,
  142. QueryBuilders.boolQuery()
  143. .must(QueryBuilders.termQuery("lifeNodeId", PrintBillLifeNode.schedule.value))
  144. .must(QueryBuilders.rangeQuery("lifeNodeState").gt(0)),
  145. ScoreMode.None)
  146. )
  147. .mustNot(JoinQueryBuilders.hasChildQuery(
  148. ESKeys.ES_ERP_PRINTBILL_LIFECYCLE_TYPE,
  149. QueryBuilders.boolQuery()
  150. .must(QueryBuilders.termQuery("lifeNodeId", PrintBillLifeNode.makeBreedFeedback.value))
  151. .must(QueryBuilders.rangeQuery("lifeNodeState").gt(0)),
  152. ScoreMode.None)
  153. )
  154. }
  155. },
  156. //待白料裁切反馈
  157. A8{
  158. QueryBuilder apply(boolean readCycle) {
  159. return QueryBuilders.boolQuery()
  160. .must(JoinQueryBuilders.hasChildQuery(
  161. ESKeys.ES_ERP_PRINTBILL_LIFECYCLE_TYPE,
  162. QueryBuilders.boolQuery()
  163. .must(QueryBuilders.termQuery("lifeNodeId", PrintBillLifeNode.schedule.value))
  164. .must(QueryBuilders.rangeQuery("lifeNodeState").gt(0)),
  165. ScoreMode.None)
  166. )
  167. .mustNot(JoinQueryBuilders.hasChildQuery(
  168. ESKeys.ES_ERP_PRINTBILL_LIFECYCLE_TYPE,
  169. QueryBuilders.boolQuery()
  170. .must(QueryBuilders.termQuery("lifeNodeId", PrintBillLifeNode.paperCutFeedback.value))
  171. .must(QueryBuilders.rangeQuery("lifeNodeState").gt(0)),
  172. ScoreMode.None)
  173. )
  174. }
  175. },
  176. //待印刷反馈
  177. A9{
  178. QueryBuilder apply(boolean readCycle) {
  179. return QueryBuilders.boolQuery()
  180. .must(JoinQueryBuilders.hasChildQuery(
  181. ESKeys.ES_ERP_PRINTBILL_LIFECYCLE_TYPE,
  182. QueryBuilders.boolQuery()
  183. .must(QueryBuilders.termQuery("lifeNodeId", PrintBillLifeNode.schedule.value))
  184. .must(QueryBuilders.rangeQuery("lifeNodeState").gt(0)),
  185. ScoreMode.None)
  186. )
  187. .mustNot(JoinQueryBuilders.hasChildQuery(
  188. ESKeys.ES_ERP_PRINTBILL_LIFECYCLE_TYPE,
  189. QueryBuilders.boolQuery()
  190. .must(QueryBuilders.termQuery("lifeNodeId", PrintBillLifeNode.printFeedback.value))
  191. .must(QueryBuilders.rangeQuery("lifeNodeState").gt(0)),
  192. ScoreMode.None)
  193. )
  194. }
  195. },
  196. //待外协下达
  197. A10{
  198. QueryBuilder apply(boolean readCycle) {
  199. return QueryBuilders.boolQuery()
  200. .must(JoinQueryBuilders.hasChildQuery(
  201. ESKeys.ES_ERP_PRINTBILL_LIFECYCLE_TYPE,
  202. QueryBuilders.boolQuery()
  203. .must(QueryBuilders.termQuery("lifeNodeId", PrintBillLifeNode.outAssist.value))
  204. .must(QueryBuilders.termQuery("lifeNodeState", 1)),
  205. ScoreMode.None)
  206. )
  207. .mustNot(JoinQueryBuilders.hasChildQuery(
  208. ESKeys.ES_ERP_PRINTBILL_LIFECYCLE_TYPE,
  209. QueryBuilders.boolQuery()
  210. .must(QueryBuilders.termQuery("lifeNodeId", PrintBillLifeNode.outAssist.value))
  211. .must(QueryBuilders.rangeQuery("lifeNodeState").gt(1)),
  212. ScoreMode.None)
  213. )
  214. }
  215. },
  216. //待外协验收
  217. A11{
  218. QueryBuilder apply(boolean readCycle) {
  219. return QueryBuilders.boolQuery()
  220. .must(JoinQueryBuilders.hasChildQuery(
  221. ESKeys.ES_ERP_PRINTBILL_LIFECYCLE_TYPE,
  222. QueryBuilders.boolQuery()
  223. .must(QueryBuilders.termQuery("lifeNodeId", PrintBillLifeNode.outAssist.value))
  224. .must(QueryBuilders.termQuery("lifeNodeState", 2)),
  225. ScoreMode.None)
  226. )
  227. .mustNot(JoinQueryBuilders.hasChildQuery(
  228. ESKeys.ES_ERP_PRINTBILL_LIFECYCLE_TYPE,
  229. QueryBuilders.boolQuery()
  230. .must(QueryBuilders.termQuery("lifeNodeId", PrintBillLifeNode.outAssist.value))
  231. .must(QueryBuilders.rangeQuery("lifeNodeState").gt(2)),
  232. ScoreMode.None)
  233. )
  234. }
  235. },
  236. //已外协验收
  237. A12{
  238. QueryBuilder apply(boolean readCycle) {
  239. return QueryBuilders.boolQuery()
  240. .must(JoinQueryBuilders.hasChildQuery(
  241. ESKeys.ESERPPRINTBILLLIFECYCLE_TYPE,
  242. QueryBuilders.boolQuery()
  243. .must(QueryBuilders.termQuery("lifeNodeId", PrintBillLifeNode.outAssist.value))
  244. .must(QueryBuilders.termQuery("lifeNodeState", 3)),
  245. ScoreMode.None)
  246. )
  247. .mustNot(JoinQueryBuilders.hasChildQuery(
  248. ESKeys.ESERPPRINTBILLLIFECYCLE_TYPE,
  249. QueryBuilders.boolQuery()
  250. .must(QueryBuilders.termQuery("lifeNodeId", PrintBillLifeNode.complete.value))
  251. .must(QueryBuilders.rangeQuery("lifeNodeState").gt(0)),
  252. ScoreMode.None)
  253. )
  254. }
  255. },
  256. //待半成品反馈
  257. A13{
  258. QueryBuilder apply(boolean readCycle) {
  259. return QueryBuilders.boolQuery()
  260. .must(JoinQueryBuilders.hasChildQuery(
  261. ESKeys.ESERPPRINTBILLLIFECYCLE_TYPE,
  262. QueryBuilders.boolQuery()
  263. .must(QueryBuilders.termQuery("lifeNodeId", PrintBillLifeNode.printFeedback.value))
  264. .must(QueryBuilders.rangeQuery("lifeNodeState").gt(0)),
  265. ScoreMode.None)
  266. )
  267. .mustNot(JoinQueryBuilders.hasChildQuery(
  268. ESKeys.ESERPPRINTBILLLIFECYCLE_TYPE,
  269. QueryBuilders.boolQuery()
  270. .must(QueryBuilders.termQuery("lifeNodeId", PrintBillLifeNode.semiComplete.value))
  271. .must(QueryBuilders.rangeQuery("lifeNodeState").gt(0)),
  272. ScoreMode.None)
  273. )
  274. }
  275. },
  276. //生产完成
  277. A14{
  278. QueryBuilder apply(boolean readCycle) {
  279. return QueryBuilders.boolQuery()
  280. .must(JoinQueryBuilders.hasChildQuery(
  281. ESKeys.ESERPPRINTBILLLIFECYCLE_TYPE,
  282. QueryBuilders.boolQuery()
  283. .must(QueryBuilders.termQuery("lifeNodeId", PrintBillLifeNode.complete.value)),
  284. ScoreMode.None)
  285. )
  286. }
  287. };
  288. abstract QueryBuilder apply(boolean readCycle);
  289. }