BE_IndexCardPanelData.groovy 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502
  1. import com.dySweetFishPlugin.elasticsearch.ESClient
  2. import com.dySweetFishPlugin.tool.lang.DateUtil
  3. import com.dderp.common.api.BusinessExecutor
  4. import com.dderp.common.api.erp.ProductService
  5. import com.dderp.common.api.SupplierInitService
  6. import com.dderp.common.datas.ERPModule
  7. import com.dderp.common.datas.ESKeys
  8. import com.dderp.common.datas.TokenUserFrom
  9. import com.dderp.common.entity.base.EChartDoubleData
  10. import com.dderp.common.entity.base.ProcessMapItem
  11. import com.dderp.common.entity.product.ProductInfo
  12. import com.sweetfish.service.RetResult
  13. import org.elasticsearch.action.search.SearchRequestBuilder
  14. import org.elasticsearch.action.search.SearchResponse
  15. import org.elasticsearch.index.query.QueryBuilders
  16. import org.elasticsearch.search.aggregations.AggregationBuilders
  17. import org.elasticsearch.search.aggregations.bucket.filter.InternalFilter
  18. import org.elasticsearch.search.aggregations.bucket.histogram.DateHistogramInterval
  19. import org.elasticsearch.search.aggregations.bucket.histogram.ExtendedBounds
  20. import org.elasticsearch.search.aggregations.bucket.histogram.Histogram
  21. import org.elasticsearch.search.aggregations.bucket.histogram.InternalDateHistogram
  22. import org.elasticsearch.search.aggregations.bucket.terms.Terms
  23. import org.elasticsearch.search.aggregations.metrics.sum.InternalSum
  24. import org.elasticsearch.search.aggregations.metrics.valuecount.ValueCount
  25. import org.rex.RMap
  26. import javax.annotation.Resource
  27. import java.math.RoundingMode
  28. import java.time.LocalDate
  29. import java.time.LocalDateTime
  30. import java.time.temporal.TemporalAdjusters
  31. /**
  32. * Created by jlutt on 2021-09-22
  33. *
  34. * @author jlutt
  35. */
  36. @SuppressWarnings("unused")
  37. class BE_IndexCardPanelData implements BusinessExecutor<ProcessMapItem, ProcessMapItem> {
  38. @Resource
  39. ESClient esClient
  40. @Resource
  41. SupplierInitService supplierService
  42. @Resource
  43. ProductService productService
  44. @Override
  45. String scriptName() {
  46. return "首页面板查询业务数据"
  47. }
  48. @Override
  49. ERPModule module() {
  50. return ERPModule.SYSTEM
  51. }
  52. @Override
  53. RetResult<ProcessMapItem> execute(ProcessMapItem source) {
  54. RMap data = new RMap()
  55. //region 生产数据查询
  56. //查询待组版订单数量
  57. SearchRequestBuilder childRequest1 = esClient.getClient().prepareSearch(supplierService.getDateYearESIndex(source.getSupplierCode(), ESKeys.ES_ERP_PRINT_ORDER_INDEX, 2021))
  58. .setQuery(QueryBuilders.boolQuery().must(QueryBuilders.typeQuery(ESKeys.ES_ERP_PRINT_ORDER_TYPE))
  59. .must(QueryBuilders.termQuery("voidFlag", 0)))
  60. childRequest1 = childRequest1.addAggregation(
  61. AggregationBuilders
  62. .filter("a3_count",
  63. OrderStatisticsQueryBuilder.valueOf("A3").apply(null, false, false)
  64. )
  65. .subAggregation(AggregationBuilders.count("subA3_Count").field("id"))
  66. )
  67. childRequest1 = childRequest1.addAggregation(
  68. AggregationBuilders
  69. .filter("a7_count",
  70. OrderStatisticsQueryBuilder.valueOf("A7").apply(null, false, false)
  71. )
  72. .subAggregation(AggregationBuilders.count("subA7_Count").field("id"))
  73. )
  74. childRequest1 = childRequest1.addAggregation(
  75. AggregationBuilders
  76. .filter("a12_count",
  77. OrderStatisticsQueryBuilder.valueOf("A12").apply(null, false, false)
  78. )
  79. .subAggregation(AggregationBuilders.count("subA12_Count").field("id"))
  80. )
  81. SearchResponse childRes1 = childRequest1.execute().actionGet()
  82. InternalFilter genderWaitBreedOrderCount = childRes1.getAggregations().get("a3_count")
  83. ValueCount valueWaitBreedOrderCount = genderWaitBreedOrderCount.getAggregations().get("subA3_Count")
  84. data.put("waitBreedOrderCount", valueWaitBreedOrderCount.getValue())
  85. InternalFilter genderWorkingOrderCount = childRes1.getAggregations().get("a7_count")
  86. ValueCount valueWorkingOrderCount = genderWorkingOrderCount.getAggregations().get("subA7_Count")
  87. data.put("workingOrderCount", valueWorkingOrderCount.getValue())
  88. InternalFilter genderWaitSendOrderCount = childRes1.getAggregations().get("a12_count")
  89. ValueCount valueWaitSendOrderCount = genderWaitSendOrderCount.getAggregations().get("subA12_Count")
  90. data.put("waitSendOrderCount", valueWaitSendOrderCount.getValue())
  91. //查询待下机版数量
  92. SearchRequestBuilder childRequest11 = esClient.getClient().prepareSearch(supplierService.getDateYearESIndex(source.getSupplierCode(), ESKeys.ES_ERP_PRINTBILL_INDEX, 2021))
  93. .setQuery(QueryBuilders.boolQuery().must(QueryBuilders.typeQuery(ESKeys.ES_ERP_PRINTBILL_BREED_TYPE))
  94. .must(QueryBuilders.termQuery("voidFlag", 0)))
  95. childRequest11 = childRequest11.addAggregation(
  96. AggregationBuilders
  97. .filter("a3_count",
  98. BreedStatisticsQueryBuilder.valueOf("A3").apply(false)
  99. )
  100. .subAggregation(AggregationBuilders.count("subA3_Count").field("id"))
  101. )
  102. SearchResponse childRes11 = childRequest11.execute().actionGet()
  103. InternalFilter genderScheduleBreedCount = childRes11.getAggregations().get("a3_count")
  104. ValueCount valueScheduleBreedCount = genderScheduleBreedCount.getAggregations().get("subA3_Count")
  105. data.put("scheduleBreedCount", valueScheduleBreedCount.getValue())
  106. //endregion
  107. if (source.getCurrentUser().getUserFrom() == TokenUserFrom.PC_ADMIN.value) {
  108. LocalDate nowDate = LocalDate.now()
  109. LocalDateTime nowTime = LocalDateTime.now()
  110. //region 订单、施工单近7天的数量
  111. RMap day7WorkData = new RMap()
  112. RMap day7MoneyData = new RMap()
  113. List<String> day7Work_legendStrArray = new ArrayList<>()
  114. List<String> day7Money_legendStrArray = new ArrayList<>()
  115. day7Work_legendStrArray.add("订单数量")
  116. day7Work_legendStrArray.add("施工单版数量")
  117. day7Money_legendStrArray.add("订单金额")
  118. day7WorkData.put("legendStrArray", day7Work_legendStrArray)
  119. day7MoneyData.put("legendStrArray", day7Money_legendStrArray)
  120. // Date endDate2 = new Date();
  121. // endDate2 = DateUtil.getStartOfDay(endDate2);
  122. // Date beginDate2 = endDate2 - 6;
  123. Date endDate2 = nowDate.toDate()
  124. Date beginDate2 = (nowDate - 6).toDate()
  125. List<String> day7Work_xAxisArray = (nowDate - 6..nowDate).collect {
  126. String.valueOf(it.getMonthValue()) + "." + (it.dayOfMonth)
  127. }.toList()
  128. // List<String> day7Work_xAxisArray = (beginDate2..endDate2).collect {
  129. // (it[Calendar.MONTH] + 1) + "." + (it[Calendar.DAY_OF_MONTH])
  130. // }.toList();
  131. day7WorkData.put("xAxisArray", day7Work_xAxisArray)
  132. day7MoneyData.put("xAxisArray", day7Work_xAxisArray)
  133. List<EChartDoubleData> day7Work_seriesList = new ArrayList<>()
  134. List<EChartDoubleData> day7Money_seriesList = new ArrayList<>()
  135. SearchRequestBuilder childRequest2 = esClient.getClient().prepareSearch(supplierService.getDateYearESIndex(source.getSupplierCode(), ESKeys.ES_ERP_PRINT_ORDER_INDEX, 2021))
  136. .setQuery(
  137. QueryBuilders.boolQuery().must(QueryBuilders.typeQuery(ESKeys.ES_ERP_PRINT_ORDER_TYPE))
  138. .must(QueryBuilders.termQuery("voidFlag", 0))
  139. .must(QueryBuilders.rangeQuery("createTimeLong").gte(DateUtil.getStartOfDay(beginDate2).getTime()).lte(DateUtil.getEndOfDay(endDate2).getTime()))
  140. )
  141. childRequest2.addAggregation(
  142. AggregationBuilders.dateHistogram("orders")
  143. .field("createTimeLong")
  144. .dateHistogramInterval(DateHistogramInterval.DAY)
  145. .minDocCount(0l)
  146. .extendedBounds(new ExtendedBounds(DateUtil.getStartOfDay(beginDate2).getTime(), DateUtil.getEndOfDay(endDate2).getTime()))
  147. .order(Histogram.Order.KEY_ASC)
  148. .subAggregation(
  149. AggregationBuilders.sum("sub_orderMoney").field("orderMoneyTotal")
  150. )
  151. )
  152. SearchResponse childRes2 = childRequest2.execute().actionGet()
  153. InternalDateHistogram day7Work_Orders = childRes2.getAggregations().get("orders")
  154. EChartDoubleData day7Work_OrderCount_SeriesData = new EChartDoubleData()
  155. day7Work_OrderCount_SeriesData.setName("订单数量")
  156. day7Work_OrderCount_SeriesData.setType("line")
  157. EChartDoubleData day7Work_OrderMoney_SeriesData = new EChartDoubleData()
  158. day7Work_OrderMoney_SeriesData.setName("订单金额")
  159. day7Work_OrderMoney_SeriesData.setType("line")
  160. day7Work_Orders.buckets.each {
  161. day7Work_OrderCount_SeriesData.getData().add(BigDecimal.valueOf(it.docCount))
  162. InternalSum internalMoneySum = it.getAggregations().get("sub_orderMoney")
  163. day7Work_OrderMoney_SeriesData.getData().add(BigDecimal.valueOf(internalMoneySum.getValue()))
  164. }
  165. //extendedBounds必须添加,防止开始和结束的数据为0,但加上后,好像前面会多一天
  166. if (day7Work_OrderCount_SeriesData.getData().size() == 8) {
  167. day7Work_OrderCount_SeriesData.getData().remove(0)
  168. }
  169. if (day7Work_OrderMoney_SeriesData.getData().size() == 8) {
  170. day7Work_OrderMoney_SeriesData.getData().remove(0)
  171. }
  172. day7Work_seriesList.add(day7Work_OrderCount_SeriesData)
  173. day7Money_seriesList.add(day7Work_OrderMoney_SeriesData)
  174. //施工单
  175. SearchRequestBuilder childRequest12 = esClient.getClient().prepareSearch(supplierService.getDateYearESIndex(source.getSupplierCode(), ESKeys.ES_ERP_PRINTBILL_INDEX, 2021))
  176. .setQuery(
  177. QueryBuilders.boolQuery().must(QueryBuilders.typeQuery(ESKeys.ES_ERP_PRINTBILL_BREED_TYPE))
  178. .must(QueryBuilders.termQuery("voidFlag", 0))
  179. .must(QueryBuilders.rangeQuery("createTime").gte(DateUtil.getStartOfDay(beginDate2).getTime()).lte(DateUtil.getEndOfDay(endDate2).getTime()))
  180. )
  181. childRequest12.addAggregation(
  182. AggregationBuilders.dateHistogram("breeds")
  183. .field("createTime")
  184. .dateHistogramInterval(DateHistogramInterval.DAY)
  185. .minDocCount(0l)
  186. .extendedBounds(new ExtendedBounds(DateUtil.getStartOfDay(beginDate2).getTime(), DateUtil.getEndOfDay(endDate2).getTime()))
  187. .order(Histogram.Order.KEY_ASC)
  188. )
  189. SearchResponse childRes12 = childRequest12.execute().actionGet()
  190. InternalDateHistogram day7Work_Breeds = childRes12.getAggregations().get("breeds")
  191. EChartDoubleData day7Work_BreedCount_SeriesData = new EChartDoubleData()
  192. day7Work_BreedCount_SeriesData.setName("施工单版数量")
  193. day7Work_BreedCount_SeriesData.setType("line")
  194. day7Work_Breeds.buckets.each {
  195. day7Work_BreedCount_SeriesData.getData().add(BigDecimal.valueOf(it.docCount))
  196. }
  197. //extendedBounds必须添加,防止开始和结束的数据为0,但加上后,好像前面会多一天
  198. if (day7Work_BreedCount_SeriesData.getData().size() == 8) {
  199. day7Work_BreedCount_SeriesData.getData().remove(0)
  200. }
  201. day7Work_seriesList.add(day7Work_BreedCount_SeriesData)
  202. day7WorkData.put("seriesData", day7Work_seriesList)
  203. day7MoneyData.put("seriesData", day7Money_seriesList)
  204. // day7Work_Orders.
  205. data.put("day7Work", day7WorkData)
  206. data.put("day7Money", day7MoneyData)
  207. //endregion
  208. //region 订单产品近7天的印量
  209. RMap day7ProductPrintCountData = new RMap()
  210. List<String> day7ProductPrintCount_legendStrArray = new ArrayList<>()
  211. List<ProductInfo> productInfoList = productService.getProductInfoAllLocal(source.getDataSourceId(), source.getSupplierCode())
  212. productInfoList.each {
  213. day7ProductPrintCount_legendStrArray.add(it.productName)
  214. }
  215. day7ProductPrintCount_legendStrArray.add("全部产品")
  216. day7ProductPrintCountData.put("legendStrArray", day7ProductPrintCount_legendStrArray)
  217. // Date endDate5 = new Date();
  218. // endDate5 = DateUtil.getStartOfDay(endDate5);
  219. // Date beginDate5 = endDate2 - 6;
  220. Date endDate5 = nowDate.toDate()
  221. Date beginDate5 = (nowDate - 6).toDate()
  222. List<String> day7ProductPrintCount_xAxisArray = (nowDate - 6..nowDate).collect {
  223. String.valueOf(it.getMonthValue()) + "." + String.valueOf(it.getDayOfMonth())
  224. }.toList()
  225. // List<String> day7ProductPrintCount_xAxisArray = (beginDate5..endDate5).collect {
  226. // (it[Calendar.MONTH] + 1) + "." + (it[Calendar.DAY_OF_MONTH])
  227. // }.toList();
  228. day7ProductPrintCountData.put("xAxisArray", day7ProductPrintCount_xAxisArray)
  229. List<EChartDoubleData> day7ProductPrintCount_seriesList = new ArrayList<>()
  230. SearchRequestBuilder childRequest5 = esClient.getClient().prepareSearch(supplierService.getDateYearESIndex(source.getSupplierCode(), ESKeys.ES_ERP_PRINT_ORDER_INDEX, 2021))
  231. .setQuery(
  232. QueryBuilders.boolQuery().must(QueryBuilders.typeQuery(ESKeys.ES_ERP_PRINT_ORDER_TYPE))
  233. .must(QueryBuilders.termQuery("voidFlag", 0))
  234. .must(QueryBuilders.rangeQuery("createTimeLong").gte(DateUtil.getStartOfDay(beginDate2).getTime()).lte(DateUtil.getEndOfDay(endDate2).getTime()))
  235. )
  236. childRequest5.addAggregation(
  237. AggregationBuilders.dateHistogram("orders")
  238. .field("createTimeLong")
  239. .dateHistogramInterval(DateHistogramInterval.DAY)
  240. .minDocCount(0l)
  241. .extendedBounds(new ExtendedBounds(DateUtil.getStartOfDay(beginDate5).getTime(), DateUtil.getEndOfDay(endDate5).getTime()))
  242. .order(Histogram.Order.KEY_ASC)
  243. .subAggregation(
  244. AggregationBuilders.terms("products")
  245. .field("idProduct")
  246. .size(100)
  247. .order(Terms.Order.count(false))
  248. .subAggregation(
  249. AggregationBuilders.sum("sub_orderPrintCount").field("orderQty")
  250. )
  251. )
  252. .subAggregation(
  253. AggregationBuilders.sum("sub_AllOrderPrintCount").field("orderQty")
  254. )
  255. )
  256. SearchResponse childRes5 = childRequest5.execute().actionGet()
  257. productInfoList.each {
  258. EChartDoubleData day7ProductPrintCount_SeriesData = new EChartDoubleData()
  259. day7ProductPrintCount_SeriesData.setType("line")
  260. day7ProductPrintCount_SeriesData.setName(it.productName)
  261. day7ProductPrintCount_SeriesData.setId(it.getId())
  262. day7ProductPrintCount_seriesList.add(day7ProductPrintCount_SeriesData)
  263. }
  264. EChartDoubleData day7ProductPrintCount_SeriesData = new EChartDoubleData()
  265. day7ProductPrintCount_SeriesData.setType("line")
  266. day7ProductPrintCount_SeriesData.setName("全部产品")
  267. day7ProductPrintCount_SeriesData.setId(-1)
  268. day7ProductPrintCount_seriesList.add(day7ProductPrintCount_SeriesData)
  269. InternalDateHistogram day7ProductPrintCount_Orders = childRes5.getAggregations().get("orders")
  270. List<Long> idProductList = new ArrayList<>()
  271. day7ProductPrintCount_Orders.buckets.each {
  272. idProductList.clear()
  273. Terms productsGenders = it.getAggregations().get("products")
  274. productsGenders.buckets.each { p ->
  275. Terms.Bucket productBucket = p
  276. long idProduct = Long.parseLong(productBucket.getKeyAsString())
  277. InternalSum internalOrderQtySum = productBucket.getAggregations().get("sub_orderPrintCount")
  278. idProductList.add(idProduct)
  279. EChartDoubleData chartData = day7ProductPrintCount_seriesList.find { x -> return x.getId() == idProduct }
  280. if (chartData != null) {
  281. chartData.getData().add(BigDecimal.valueOf(internalOrderQtySum.getValue()))
  282. }
  283. }
  284. InternalSum internalAllOrderQtySum = it.getAggregations().get("sub_AllOrderPrintCount")
  285. EChartDoubleData chartAllData = day7ProductPrintCount_seriesList.find { x -> return x.getId() == -1 }
  286. if (chartAllData != null) {
  287. chartAllData.getData().add(BigDecimal.valueOf(internalAllOrderQtySum.getValue()))
  288. }
  289. //找不到数据的得加0
  290. List<EChartDoubleData> remainDataList = day7ProductPrintCount_seriesList.findAll { x -> return ((x.getId() != -1) && (!idProductList.any { y -> y == x.getId() })) }
  291. remainDataList.each { d ->
  292. d.getData().add(BigDecimal.ZERO)
  293. }
  294. }
  295. day7ProductPrintCount_seriesList.each {
  296. //extendedBounds必须添加,防止开始和结束的数据为0,但加上后,好像前面会多一天
  297. if (it.getData().size() == 8) {
  298. it.getData().remove(0)
  299. }
  300. }
  301. day7ProductPrintCountData.put("seriesData", day7ProductPrintCount_seriesList)
  302. data.put("day7ProductPrintCount", day7ProductPrintCountData)
  303. //endregion
  304. //region 订单月产品类型统计
  305. RMap monthOrderProductData = new RMap()
  306. LocalDateTime beginDate3 = nowTime.withDayOfMonth(1)
  307. LocalDateTime endDate3 = nowTime.withDayOfMonth(nowTime.toLocalDate().lengthOfMonth())
  308. List<RMap> monthOrderProduct_seriesList = new ArrayList<>()
  309. SearchRequestBuilder childRequest3 = esClient.getClient().prepareSearch(supplierService.getDateYearESIndex(source.getSupplierCode(), ESKeys.ES_ERP_PRINT_ORDER_INDEX, 2021))
  310. .setQuery(
  311. QueryBuilders.boolQuery().must(QueryBuilders.typeQuery(ESKeys.ES_ERP_PRINT_ORDER_TYPE))
  312. .must(QueryBuilders.termQuery("voidFlag", 0))
  313. .must(QueryBuilders.rangeQuery("createTimeLong").gte(DateUtil.getStartOfDay(DateUtil.localDateTimeToDate(beginDate3)).getTime()).lte(DateUtil.getEndOfDay(DateUtil.localDateTimeToDate(endDate3)).getTime()))
  314. )
  315. childRequest3.addAggregation(
  316. AggregationBuilders.terms("orders")
  317. .field("idProduct")
  318. .size(100)
  319. .order(Terms.Order.count(false))
  320. .subAggregation(
  321. AggregationBuilders.sum("sub_orderMoney").field("orderMoneyTotal")
  322. )
  323. )
  324. SearchResponse childRes3 = childRequest3.execute().actionGet()
  325. Terms monthOrderProductGenders = childRes3.getAggregations().get("orders")
  326. for (Terms.Bucket monthOrderProductBucket : monthOrderProductGenders.getBuckets()) {
  327. long idProduct = Long.parseLong(monthOrderProductBucket.getKeyAsString())
  328. RMap bucketData = new RMap()
  329. InternalSum moneySum = monthOrderProductBucket.getAggregations().get("sub_orderMoney")
  330. bucketData.put("name", productService.getProductInfoName(idProduct, source.getSupplierCode()))
  331. // bucketData.put("value", monthOrderProductBucket.getDocCount());
  332. bucketData.put("value", BigDecimal.valueOf(moneySum.getValue()).setScale(2, RoundingMode.HALF_UP))
  333. monthOrderProduct_seriesList.add(bucketData)
  334. }
  335. monthOrderProductData.put("seriesData", monthOrderProduct_seriesList)
  336. data.put("monthOrderProduct", monthOrderProductData)
  337. //endregion
  338. //region 订单月份数量统计
  339. RMap month12WorkData = new RMap()
  340. RMap month12MoneyData = new RMap()
  341. LocalDateTime beginDate4 = nowTime.with(TemporalAdjusters.firstDayOfYear())
  342. LocalDateTime endDate4 = nowTime.with(TemporalAdjusters.lastDayOfYear())
  343. List<EChartDoubleData> month12Work_seriesList = new ArrayList<>()
  344. List<EChartDoubleData> month12Money_seriesList = new ArrayList<>()
  345. SearchRequestBuilder childRequest4 = esClient.getClient().prepareSearch(supplierService.getDateYearESIndex(source.getSupplierCode(), ESKeys.ES_ERP_PRINT_ORDER_INDEX, 2021))
  346. .setQuery(
  347. QueryBuilders.boolQuery().must(QueryBuilders.typeQuery(ESKeys.ES_ERP_PRINT_ORDER_TYPE))
  348. .must(QueryBuilders.termQuery("voidFlag", 0))
  349. .must(QueryBuilders.rangeQuery("createTimeLong").gte(DateUtil.getStartOfDay(DateUtil.localDateTimeToDate(beginDate4)).getTime()).lte(DateUtil.getEndOfDay(DateUtil.localDateTimeToDate(endDate4)).getTime()))
  350. )
  351. childRequest4.addAggregation(
  352. AggregationBuilders.dateHistogram("orders")
  353. .field("createTimeLong")
  354. .dateHistogramInterval(DateHistogramInterval.MONTH)
  355. .minDocCount(0l)
  356. .extendedBounds(new ExtendedBounds(DateUtil.getStartOfDay(DateUtil.localDateTimeToDate(beginDate4)).getTime(), DateUtil.getEndOfDay(DateUtil.localDateTimeToDate(endDate4)).getTime()))
  357. .order(Histogram.Order.KEY_ASC)
  358. .subAggregation(
  359. AggregationBuilders.sum("sub_orderMoney").field("orderMoneyTotal")
  360. )
  361. )
  362. SearchResponse childRes4 = childRequest4.execute().actionGet()
  363. InternalDateHistogram month12Work_Orders = childRes4.getAggregations().get("orders")
  364. EChartDoubleData month12Work_OrderCount_SeriesData = new EChartDoubleData()
  365. month12Work_OrderCount_SeriesData.setName("订单数量")
  366. month12Work_OrderCount_SeriesData.setType("bar")
  367. EChartDoubleData month12Work_OrderMoney_SeriesData = new EChartDoubleData()
  368. month12Work_OrderMoney_SeriesData.setName("订单金额")
  369. month12Work_OrderMoney_SeriesData.setType("bar")
  370. month12Work_Orders.buckets.each {
  371. month12Work_OrderCount_SeriesData.getData().add(BigDecimal.valueOf(it.docCount))
  372. InternalSum internalMoneySum = it.getAggregations().get("sub_orderMoney")
  373. month12Work_OrderMoney_SeriesData.getData().add(BigDecimal.valueOf(internalMoneySum.getValue()).setScale(2, RoundingMode.HALF_UP))
  374. }
  375. //extendedBounds必须添加,防止开始和结束的数据为0,但加上后,好像前面会多一天
  376. if (month12Work_OrderCount_SeriesData.getData().size() == 13) {
  377. month12Work_OrderCount_SeriesData.getData().remove(0)
  378. }
  379. if (month12Work_OrderMoney_SeriesData.getData().size() == 13) {
  380. month12Work_OrderMoney_SeriesData.getData().remove(0)
  381. }
  382. month12Work_seriesList.add(month12Work_OrderCount_SeriesData)
  383. month12Money_seriesList.add(month12Work_OrderMoney_SeriesData)
  384. month12WorkData.put("seriesData", month12Work_seriesList)
  385. month12MoneyData.put("seriesData", month12Money_seriesList)
  386. // day7Work_Orders.
  387. data.put("month12Work", month12WorkData)
  388. data.put("month12Money", month12MoneyData)
  389. //endregion
  390. }
  391. data.put("showData", true)
  392. ProcessMapItem result = ProcessMapItem.newBuilder()
  393. .itemData(data)
  394. .currentUser(source.getCurrentUser())
  395. .dataSourceId(source.getDataSourceId())
  396. .supplierCode(source.getSupplierCode())
  397. .build()
  398. return RetResult.<ProcessMapItem> successT().result(result)
  399. }
  400. }