|
|
@@ -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;
|
|
|
}
|
|
|
|