mirror of
http://192.168.1.205:9980/cf_devdept2/cf_imes_server.git
synced 2026-08-12 21:02:08 +08:00
分析页统计:1、大板数量createtime和goodsid查询失效修复、分组错误修复;2、小板面积按面积倒序失效修复;
This commit is contained in:
+36
-25
@@ -11,7 +11,6 @@ import co.elastic.clients.elasticsearch._types.aggregations.CalendarInterval;
|
|||||||
import co.elastic.clients.elasticsearch._types.aggregations.DateHistogramAggregation;
|
import co.elastic.clients.elasticsearch._types.aggregations.DateHistogramAggregation;
|
||||||
import co.elastic.clients.elasticsearch.core.SearchRequest;
|
import co.elastic.clients.elasticsearch.core.SearchRequest;
|
||||||
import co.elastic.clients.elasticsearch.core.SearchResponse;
|
import co.elastic.clients.elasticsearch.core.SearchResponse;
|
||||||
import co.elastic.clients.json.JsonData;
|
|
||||||
import co.elastic.clients.util.NamedValue;
|
import co.elastic.clients.util.NamedValue;
|
||||||
import com.cf.imes.framework.common.enums.OrderStatusEnum;
|
import com.cf.imes.framework.common.enums.OrderStatusEnum;
|
||||||
import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX;
|
import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||||
@@ -86,6 +85,7 @@ public class OrderStatisticsServiceImpl implements OrderStatisticsService {
|
|||||||
private static final String ORDER_REMAIN_PLATE_MODEL_CREATE_TIME_FIELDNAME = "createTime";
|
private static final String ORDER_REMAIN_PLATE_MODEL_CREATE_TIME_FIELDNAME = "createTime";
|
||||||
private static final String ORDER_REMAIN_PLATE_MODEL_GOODS_GROUP_NAME = "goods_group";
|
private static final String ORDER_REMAIN_PLATE_MODEL_GOODS_GROUP_NAME = "goods_group";
|
||||||
private static final String ORDER_REMAIN_PLATE_MODEL_GOODS_COUNT_NAME = "goods_count";
|
private static final String ORDER_REMAIN_PLATE_MODEL_GOODS_COUNT_NAME = "goods_count";
|
||||||
|
private static final String ORDER_REMAIN_PLATE_MODEL_DATE_GROUP_NAME = "date_group";
|
||||||
private static final String DATE_TIME_FORMATTER_PATTERN_YEAR_MONTH = "yyyy-M";
|
private static final String DATE_TIME_FORMATTER_PATTERN_YEAR_MONTH = "yyyy-M";
|
||||||
private static final String DATE_TIME_FORMATTER_PATTERN_YEAR_MONTH_DAY = "yyyy-M-d";
|
private static final String DATE_TIME_FORMATTER_PATTERN_YEAR_MONTH_DAY = "yyyy-M-d";
|
||||||
private static final String ORDER_REMAIN_PLATE_MODEL_GOODS_ID_NAME = "goodsId";
|
private static final String ORDER_REMAIN_PLATE_MODEL_GOODS_ID_NAME = "goodsId";
|
||||||
@@ -427,10 +427,12 @@ public class OrderStatisticsServiceImpl implements OrderStatisticsService {
|
|||||||
SearchRequest searchRequest = new SearchRequest.Builder()
|
SearchRequest searchRequest = new SearchRequest.Builder()
|
||||||
.size(0)
|
.size(0)
|
||||||
.index(OptimizePlanService.ORDER_REMAIN_PLATE_MODEL)
|
.index(OptimizePlanService.ORDER_REMAIN_PLATE_MODEL)
|
||||||
.query(q -> q.range(r -> r.field(ORDER_REMAIN_PLATE_MODEL_CREATE_TIME_FIELDNAME)
|
.query(q ->
|
||||||
.gte(JsonData.of(reqVO.getCreateTime()[0].format(dateTimeFormatter)))
|
q.bool(b -> b
|
||||||
.lte(JsonData.of(reqVO.getCreateTime()[1].format(dateTimeFormatter))))
|
.must(m -> m.range(m1 -> m1.field(ORDER_REMAIN_PLATE_MODEL_CREATE_TIME_FIELDNAME)
|
||||||
)
|
.from(reqVO.getCreateTime()[0].format(dateTimeFormatter))
|
||||||
|
.to(reqVO.getCreateTime()[1].format(dateTimeFormatter))))
|
||||||
|
.must(m -> m.match(m2 -> m2.field("organId").query(SecurityFrameworkUtils.getUserOrganId())))))
|
||||||
.aggregations(ORDER_REMAIN_PLATE_MODEL_GOODS_GROUP_NAME,
|
.aggregations(ORDER_REMAIN_PLATE_MODEL_GOODS_GROUP_NAME,
|
||||||
agg -> agg.terms(terms -> terms.field(ORDER_REMAIN_PLATE_MODEL_GOODS_ID_NAME).size(10).order(new NamedValue<>(ORDER_REMAIN_PLATE_MODEL_GOODS_COUNT_NAME, SortOrder.Desc)))
|
agg -> agg.terms(terms -> terms.field(ORDER_REMAIN_PLATE_MODEL_GOODS_ID_NAME).size(10).order(new NamedValue<>(ORDER_REMAIN_PLATE_MODEL_GOODS_COUNT_NAME, SortOrder.Desc)))
|
||||||
.aggregations(ORDER_REMAIN_PLATE_MODEL_GOODS_COUNT_NAME, sumAgg -> sumAgg.sum(sum -> sum.field("boardCount")))
|
.aggregations(ORDER_REMAIN_PLATE_MODEL_GOODS_COUNT_NAME, sumAgg -> sumAgg.sum(sum -> sum.field("boardCount")))
|
||||||
@@ -456,16 +458,20 @@ public class OrderStatisticsServiceImpl implements OrderStatisticsService {
|
|||||||
SearchRequest dateGroupRequest = new SearchRequest.Builder()
|
SearchRequest dateGroupRequest = new SearchRequest.Builder()
|
||||||
.size(0)
|
.size(0)
|
||||||
.index(OptimizePlanService.ORDER_REMAIN_PLATE_MODEL)
|
.index(OptimizePlanService.ORDER_REMAIN_PLATE_MODEL)
|
||||||
.query(q -> q.range(r -> r.field(ORDER_REMAIN_PLATE_MODEL_CREATE_TIME_FIELDNAME)
|
.query(q ->
|
||||||
.gte(JsonData.of(reqVO.getCreateTime()[0].format(dateTimeFormatter)))
|
q.bool(b -> b
|
||||||
.lte(JsonData.of(reqVO.getCreateTime()[1].format(dateTimeFormatter))))
|
.must(m -> m.range(m1 -> m1.field(ORDER_REMAIN_PLATE_MODEL_CREATE_TIME_FIELDNAME)
|
||||||
|
.from(reqVO.getCreateTime()[0].format(dateTimeFormatter))
|
||||||
|
.to(reqVO.getCreateTime()[1].format(dateTimeFormatter))))
|
||||||
|
.must(m -> m.match(m2 -> m2.field("organId").query(SecurityFrameworkUtils.getUserOrganId())))
|
||||||
|
.must(m -> m.bool(m3 -> m3.must(t -> t.terms(gi -> gi.field(ORDER_REMAIN_PLATE_MODEL_GOODS_ID_NAME).terms(tv -> tv.value(goodsIdFieldValueList))))))
|
||||||
|
)
|
||||||
)
|
)
|
||||||
.query(q -> q.bool(b -> b.must(m -> m.terms(t -> t.field(ORDER_REMAIN_PLATE_MODEL_GOODS_ID_NAME).terms(tv -> tv.value(goodsIdFieldValueList))))))
|
.aggregations(ORDER_REMAIN_PLATE_MODEL_GOODS_GROUP_NAME, agg ->
|
||||||
.query(q -> q.match(m -> m.field("organId").query(SecurityFrameworkUtils.getUserOrganId())))
|
agg.terms(terms -> terms.field(ORDER_REMAIN_PLATE_MODEL_GOODS_ID_NAME))
|
||||||
.aggregations(ORDER_REMAIN_PLATE_MODEL_GOODS_GROUP_NAME,
|
.aggregations(ORDER_REMAIN_PLATE_MODEL_DATE_GROUP_NAME, dateAgg -> dateAgg.dateHistogram(date -> getDateHistogram(unit, date.field(ORDER_REMAIN_PLATE_MODEL_CREATE_TIME_FIELDNAME)))
|
||||||
agg -> agg.terms(terms -> terms.field(ORDER_REMAIN_PLATE_MODEL_GOODS_ID_NAME).order(new NamedValue<>(ORDER_REMAIN_PLATE_MODEL_GOODS_COUNT_NAME, SortOrder.Desc)))
|
.aggregations(ORDER_REMAIN_PLATE_MODEL_GOODS_COUNT_NAME, sumAgg -> sumAgg.sum(sum -> sum.field("boardCount")))
|
||||||
.aggregations("date_group", dateAgg -> dateAgg.dateHistogram(date -> getDateHistogram(unit, date.field(ORDER_REMAIN_PLATE_MODEL_CREATE_TIME_FIELDNAME))))
|
)
|
||||||
.aggregations(ORDER_REMAIN_PLATE_MODEL_GOODS_COUNT_NAME, sumAgg -> sumAgg.sum(sum -> sum.field("boardCount")))
|
|
||||||
)
|
)
|
||||||
.build();
|
.build();
|
||||||
response = client.search(dateGroupRequest, Map.class);
|
response = client.search(dateGroupRequest, Map.class);
|
||||||
@@ -475,17 +481,22 @@ public class OrderStatisticsServiceImpl implements OrderStatisticsService {
|
|||||||
|
|
||||||
goodsDateAgg.sterms().buckets().array().forEach(goodsDateAggBucket -> {
|
goodsDateAgg.sterms().buckets().array().forEach(goodsDateAggBucket -> {
|
||||||
// todo 目前没有发现好的es统计月周的方式,先把年月日查出来转周,后续优化
|
// todo 目前没有发现好的es统计月周的方式,先把年月日查出来转周,后续优化
|
||||||
String dateStr = dateToWeekMonth(goodsDateAggBucket.aggregations().get("date_group").dateHistogram().buckets().array().get(0).keyAsString(), unit);
|
goodsDateAggBucket.aggregations().get(ORDER_REMAIN_PLATE_MODEL_DATE_GROUP_NAME).dateHistogram().buckets().array().forEach(dateHistogramBucket -> {
|
||||||
double goodsCount = goodsDateAggBucket.aggregations().get(ORDER_REMAIN_PLATE_MODEL_GOODS_COUNT_NAME).sum().value();
|
// 时间轴
|
||||||
OrderGoodsPlateRespVO vo = OrderGoodsPlateRespVO.builder().goodsId(goodsDateAggBucket.key().stringValue()).orderDate(dateStr).orderCount((int) goodsCount).build();
|
String dateStr = dateToWeekMonth(dateHistogramBucket.keyAsString(), unit);
|
||||||
List<OrderGoodsPlateRespVO> orderGoodsPlateRespVOS = goodsDateGroupMap.get(dateStr);
|
// 时间轴下的boardCount
|
||||||
if (ObjectUtil.isNotNull(orderGoodsPlateRespVOS)) {
|
double goodsCount = dateHistogramBucket.aggregations().get(ORDER_REMAIN_PLATE_MODEL_GOODS_COUNT_NAME).sum().value();
|
||||||
orderGoodsPlateRespVOS.add(vo);
|
// goodsid+数量存入map,key:时间轴
|
||||||
} else {
|
List<OrderGoodsPlateRespVO> orderGoodsPlateRespVOS = goodsDateGroupMap.get(dateStr);
|
||||||
ArrayList<OrderGoodsPlateRespVO> goodsPlateRespVOS = new ArrayList<>();
|
OrderGoodsPlateRespVO vo = OrderGoodsPlateRespVO.builder().goodsId(goodsDateAggBucket.key().stringValue()).orderDate(dateStr).orderCount((int) goodsCount).build();
|
||||||
goodsPlateRespVOS.add(vo);
|
if (ObjectUtil.isNotNull(orderGoodsPlateRespVOS)) {
|
||||||
goodsDateGroupMap.put(dateStr, goodsPlateRespVOS);
|
orderGoodsPlateRespVOS.add(vo);
|
||||||
}
|
} else {
|
||||||
|
ArrayList<OrderGoodsPlateRespVO> goodsPlateRespVOS = new ArrayList<>();
|
||||||
|
goodsPlateRespVOS.add(vo);
|
||||||
|
goodsDateGroupMap.put(dateStr, goodsPlateRespVOS);
|
||||||
|
}
|
||||||
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -60,7 +60,7 @@
|
|||||||
where g.deleted = 0
|
where g.deleted = 0
|
||||||
and o.order_date between #{req.createTime[0]} and #{req.createTime[1]}
|
and o.order_date between #{req.createTime[0]} and #{req.createTime[1]}
|
||||||
group by g.goods_id
|
group by g.goods_id
|
||||||
order by orderArea
|
order by orderArea desc
|
||||||
limit 10;
|
limit 10;
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user