Просмотр исходного кода

Merge remote-tracking branch 'origin/dev' into dev

lengfaqiang 2 лет назад
Родитель
Сommit
bf8be1e78f

+ 20 - 0
sckw-modules/sckw-report/src/main/java/com/sckw/report/model/vo/WbTOrderDataStsResVO.java

@@ -42,25 +42,45 @@ public class WbTOrderDataStsResVO implements Serializable {
      * 商品数量环比
      */
     private BigDecimal goodsNumRingRate;
+    /**
+     * 商品数量环比标识 true上升,false下降
+     */
+    private Boolean goodsNumFlag;
 
     /**
      * 订单总量环比
      */
     private BigDecimal orderAmountRingRate;
+    /**
+     * 订单总量环比标识 true上升,false下降
+     */
+    private Boolean orderAmountFlag;;
 
     /**
      * 订单金额环比
      */
     private BigDecimal orderPriceRingRate;
+    /**
+     *  订单金额环比标识  true上升,false下降
+     */
+    private Boolean orderPriceFlag;
 
     /**
      * 待付款金额环比
      */
     private BigDecimal waitCollectedPriceRingRate;
+    /**
+     * 待付款金额环比标识  true上升,false下降
+     */
+    private Boolean waitCollectedPriceFlag;
 
     /**
      * 未到货量环比
      */
     private BigDecimal notArrivedAmountRingRate;
+    /**
+     * 未到货量环比标识  true上升,false下降
+     */
+    private Boolean notArrivedAmountFlag;
 
 }

+ 26 - 6
sckw-modules/sckw-report/src/main/java/com/sckw/report/service/KwOrderStatisticsService.java

@@ -100,28 +100,48 @@ public class KwOrderStatisticsService {
         //环比数据
         //商品数量环比
         BigDecimal goodsNumRingRate = Objects.isNull(lastGoodsNum) || lastGoodsNum == 0L ? NumberConstant.ONE_HUNDRED :
-                new BigDecimal((currentGoodsNum - lastGoodsNum)).divide(new BigDecimal(lastGoodsNum), 2, RoundingMode.HALF_UP);
+                new BigDecimal((currentGoodsNum - lastGoodsNum)).multiply(NumberConstant.ONE_HUNDRED)
+                        .divide(new BigDecimal(lastGoodsNum), 2, RoundingMode.HALF_UP);
+        boolean goodsNumFlag = goodsNumRingRate.compareTo(BigDecimal.ZERO) >= 0;
+        goodsNumRingRate = goodsNumRingRate.abs();
         //订单总量环比
         BigDecimal orderAmountRingRate = lastAmount.compareTo(BigDecimal.ZERO) == 0 ? NumberConstant.ONE_HUNDRED :
-                (currentAmount.subtract(lastAmount)).divide(lastAmount, 2, RoundingMode.HALF_UP);
+                (currentAmount.subtract(lastAmount)).multiply(NumberConstant.ONE_HUNDRED)
+                        .divide(lastAmount, 2, RoundingMode.HALF_UP);
+        boolean orderAmountFlag = orderAmountRingRate.compareTo(BigDecimal.ZERO) >= 0;
+        orderAmountRingRate = orderAmountRingRate.abs();
         //订单总金额环比
         BigDecimal orderPriceRingRate = lastPrice.compareTo(BigDecimal.ZERO) == 0 ? NumberConstant.ONE_HUNDRED :
-                (currentPrice.subtract(lastPrice)).divide(lastPrice, 2, RoundingMode.HALF_UP);
+                (currentPrice.subtract(lastPrice)).multiply(NumberConstant.ONE_HUNDRED)
+                        .divide(lastPrice, 2, RoundingMode.HALF_UP);
+        boolean orderPriceFlag = orderPriceRingRate.compareTo(BigDecimal.ZERO) >= 0;
+        orderPriceRingRate = orderPriceRingRate.abs();
         //未到货量环比
         BigDecimal currentNotArrived = currentDataSts.getNotArrivedAmount();
         BigDecimal lastNotArrived = lastDataSts.getNotArrivedAmount();
         BigDecimal notArrivedAmountRingRate = lastNotArrived.compareTo(BigDecimal.ZERO) == 0 ? NumberConstant.ONE_HUNDRED :
-                (currentNotArrived.subtract(lastNotArrived)).divide(lastNotArrived, 2, RoundingMode.HALF_UP);
+                (currentNotArrived.subtract(lastNotArrived)).multiply(NumberConstant.ONE_HUNDRED)
+                        .divide(lastNotArrived, 2, RoundingMode.HALF_UP);
+        boolean notArrivedAmountFlag = notArrivedAmountRingRate.compareTo(BigDecimal.ZERO) >= 0;
+        notArrivedAmountRingRate = notArrivedAmountRingRate.abs();
         //待付款金额环比
         BigDecimal currentWaitPrice = currentDataSts.getWaitCollectedPrice();
         BigDecimal lastWaitPrice = lastDataSts.getWaitCollectedPrice();
         BigDecimal waitCollectedPriceRingRate = lastWaitPrice.compareTo(BigDecimal.ZERO) == 0 ? NumberConstant.ONE_HUNDRED :
-                (currentWaitPrice.subtract(lastWaitPrice)).divide(lastWaitPrice, 2, RoundingMode.HALF_UP);
+                (currentWaitPrice.subtract(lastWaitPrice)).multiply(NumberConstant.ONE_HUNDRED)
+                        .divide(lastWaitPrice, 2, RoundingMode.HALF_UP);
+        boolean waitCollectedPriceFlag = waitCollectedPriceRingRate.compareTo(BigDecimal.ZERO) >= 0;
+        waitCollectedPriceRingRate = waitCollectedPriceRingRate.abs();
         res.setGoodsNumRingRate(goodsNumRingRate)
+                .setGoodsNumFlag(goodsNumFlag)
                 .setOrderAmountRingRate(orderAmountRingRate)
+                .setOrderAmountFlag(orderAmountFlag)
                 .setOrderPriceRingRate(orderPriceRingRate)
+                .setOrderPriceFlag(orderPriceFlag)
                 .setNotArrivedAmountRingRate(notArrivedAmountRingRate)
-                .setWaitCollectedPriceRingRate(waitCollectedPriceRingRate);
+                .setNotArrivedAmountFlag(notArrivedAmountFlag)
+                .setWaitCollectedPriceRingRate(waitCollectedPriceRingRate)
+                .setWaitCollectedPriceFlag(waitCollectedPriceFlag);
         return res;
     }