Explorar el Código

fix:“修复机器排行页面数据不准确的问题”

soobin hace 2 años
padre
commit
8cd4047ebc

+ 31 - 4
src/main/java/com/szwl/service/es/EsTEquipmentService.java

@@ -361,6 +361,12 @@ public class EsTEquipmentService extends EsBaseService<TEquipment, TEquipmentPar
             String aggregationResultName = "aggregationResult";
             // 仅为名称,用以获取返回结果
             String aggSumName = "sales";
+            // 仅为名称,用以获取返回结果
+            String aggName_productNumber = "productNumber";
+            // 仅为名称,用以获取返回结果
+            String aggName_refundQuantity = "refundQuantity";
+            // 仅为名称,用以获取返回结果
+            String aggName_refundAmount = "refundAmount";
 
             // 根据字段 termField 聚合
             TermsAggregationBuilder termsAggregationBuilder = AggregationBuilders.terms(aggregationResultName).field(termField);
@@ -373,6 +379,15 @@ public class EsTEquipmentService extends EsBaseService<TEquipment, TEquipmentPar
             // 根据字段price 求和 sum, sales 仅为名称,用以获取返回结果
             SumAggregationBuilder sumAggregationBuilder = AggregationBuilders.sum(aggSumName).field("price");
             termsAggregationBuilder.subAggregation(sumAggregationBuilder);
+            // 订单数量
+            SumAggregationBuilder sumAggregationBuilder2 = AggregationBuilders.sum(aggName_productNumber).field("productNumber");
+            termsAggregationBuilder.subAggregation(sumAggregationBuilder2);
+            // 退款数量
+            SumAggregationBuilder sumAggregationBuilder3 = AggregationBuilders.sum(aggName_refundQuantity).field("refundQuantity");
+            termsAggregationBuilder.subAggregation(sumAggregationBuilder3);
+            // 退款金额
+            SumAggregationBuilder sumAggregationBuilder4 = AggregationBuilders.sum(aggName_refundAmount).field("refundAmount");
+            termsAggregationBuilder.subAggregation(sumAggregationBuilder4);
             SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
             // 指定size为0,不返回文档 因为只需要数量
             sourceBuilder.query(queryBuilder).aggregation(termsAggregationBuilder).size(0);
@@ -387,12 +402,24 @@ public class EsTEquipmentService extends EsBaseService<TEquipment, TEquipmentPar
             for (Terms.Bucket bucket : terms.getBuckets()) {
                 ChartBean chartBean = new ChartBean();
                 chartBean.setCategorie(bucket.getKeyAsString());
-//                chartBean.setSaleNum(Long.valueOf(bucket.getDocCount()).intValue());
-                chartBean.setSaleNum(Float.valueOf(bucket.getDocCount()));
+                //统计商品数
+                ParsedSum saleNum1 = bucket.getAggregations().get(aggName_productNumber);
+                ParsedSum saleNum2 = bucket.getAggregations().get(aggName_refundQuantity);
+                String saleNumStr1 = format1((float) saleNum1.getValue());
+                String saleNumStr2 = format1((float) saleNum2.getValue());
+                if(StringUtils.isEmpty(saleNumStr1)){
+                    saleNumStr1 = "1";
+                }
+                chartBean.setSaleNum(Float.valueOf(saleNumStr1) - Float.valueOf(saleNumStr2));
+//                chartBean.setSaleNum(Float.valueOf(bucket.getDocCount()));
                 ParsedSum sum = bucket.getAggregations().get(aggSumName);
+                ParsedSum refundSum = bucket.getAggregations().get(aggName_refundAmount);
+                String s1 = format1((float) sum.getValue());
+                String s2 = format1((float) refundSum.getValue());
+                chartBean.setSalePrice(Float.valueOf(s1) - Float.valueOf(s2));
 //                chartBean.setSalePrice(Double.valueOf(sum.getValue()).intValue());
-                String s = format1((float)sum.getValue());
-                chartBean.setSalePrice(Float.valueOf(s));
+//                String s = format1((float)sum.getValue());
+//                chartBean.setSalePrice(Float.valueOf(s));
                 chartBeanList.add(chartBean);
             }
             log.debug("chartBeanList:{}",chartBeanList);

+ 6 - 1
src/main/java/com/szwl/service/impl/TOrderServiceImpl.java

@@ -149,7 +149,11 @@ public class TOrderServiceImpl extends ServiceImpl<TOrderMapper, TOrder> impleme
                 OrderTarget orderTarget = new OrderTarget();
                 orderTarget.setSn(order.getSn());
                 orderTarget.setProductName(order.getProductName());
-                orderTarget.setPrice(order.getPrice());
+                if(order.getRefundAmount() != null) {
+                    orderTarget.setPrice(order.getPrice().subtract(order.getRefundAmount()).setScale(2));
+                } else {
+                    orderTarget.setPrice(order.getPrice());
+                }
                 orderTarget.setClientId(order.getClientId());
                 orderTarget.setName(admin.getUsername());
                 // 格式化时间
@@ -194,6 +198,7 @@ public class TOrderServiceImpl extends ServiceImpl<TOrderMapper, TOrder> impleme
                     orderTarget.setFrp_code(order.getFrpCode());
                 }
 
+
                 if(StringUtils.isEmpty(orderTarget.getFrp_code())){
                     orderTarget.setFrp_code(order.getFrpCode());
                 }