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

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

zk 2 лет назад
Родитель
Сommit
f8cbc1a9ef

+ 1 - 1
sckw-modules/sckw-report/src/main/java/com/sckw/report/controller/KwOrderStatisticsController.java

@@ -31,7 +31,7 @@ public class KwOrderStatisticsController {
      * @return: com.sckw.core.web.response.HttpResult
      */
     @PostMapping(value = "/workbenchData", produces = MediaType.APPLICATION_JSON_VALUE)
-    public HttpResult select(@RequestBody @Validated WbTOrderDataStsParam params) {
+    public HttpResult workbenchData(@RequestBody @Validated WbTOrderDataStsParam params) {
         return HttpResult.ok(kwOrderStatisticsService.workbenchData(params));
     }
 

+ 2 - 2
sckw-modules/sckw-report/src/main/java/com/sckw/report/model/vo/WbTOrderDataStsParam.java

@@ -33,9 +33,9 @@ public class WbTOrderDataStsParam implements Serializable {
      */
     private String unit;
     /**
-     * 统计日期类型(1周、2月)
+     * 统计日期类型(2周、3月)
      */
-    @Range(min = 1, max = 2, message = "非法日期类型")
+    @Range(min = 2, max = 3, message = "非法日期类型")
     @NotNull(message = "日期类型不能为空")
     private Integer dateType;
 

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

@@ -6,6 +6,8 @@ import com.sckw.core.utils.DateUtils;
 import com.sckw.core.utils.StringUtils;
 import com.sckw.core.web.context.LoginUserHolder;
 import com.sckw.mongo.model.SckwTradeOrder;
+import com.sckw.payment.api.dubbo.PaymentDubboService;
+import com.sckw.payment.api.model.dto.SettlementMoney;
 import com.sckw.product.api.dubbo.GoodsStatisticsService;
 import com.sckw.product.api.model.GoodsNumStsParam;
 import com.sckw.report.model.dto.WorkbenchOrderStsDTO;
@@ -43,6 +45,8 @@ public class KwOrderStatisticsService {
 
     @DubboReference(version = "1.0.0", group = "design", check = false)
     private GoodsStatisticsService goodsStatisticsService;
+    @DubboReference(version = "1.0.0", group = "design", check = false)
+    private PaymentDubboService paymentDubboService;
 
 
     /**
@@ -68,6 +72,9 @@ public class KwOrderStatisticsService {
         GoodsNumStsParam goodsNumStsParam = new GoodsNumStsParam();
         goodsNumStsParam.setTopEntId(entId).setUnit(unit);
         Long currentGoodsNum = goodsStatisticsService.getOnShelfGoodsNum(goodsNumStsParam);
+        //待付款金额
+        SettlementMoney settlement = Objects.equals(orderType, 1) ?
+                paymentDubboService.countPurchase(entId, dateType) : paymentDubboService.countSell(entId, dateType);
         //订单统计
         WorkbenchOrderStsDTO currentOrderSts = getOrderStsInfo(orderType, unit, currentStart, null);
         BigDecimal currentAmount = BigDecimal.valueOf(currentOrderSts.getOrderAmount());
@@ -76,8 +83,8 @@ public class KwOrderStatisticsService {
                 .setGoodsNum(currentGoodsNum)
                 .setOrderAmount(currentAmount)
                 .setOrderPrice(currentPrice)
+                .setWaitCollectedPrice(new BigDecimal(settlement.getCurrent()))
                 .setNotArrivedAmount(currentAmount.subtract(BigDecimal.valueOf(currentOrderSts.getOrderActualAmount())));
-        //todo 待付款金额
         list.add(currentDataSts);
 
         //上周/上月数据
@@ -93,45 +100,27 @@ public class KwOrderStatisticsService {
                 .setGoodsNum(lastGoodsNum)
                 .setOrderAmount(lastAmount)
                 .setOrderPrice(lastPrice)
+                .setWaitCollectedPrice(new BigDecimal(settlement.getBefore()))
                 .setNotArrivedAmount(lastAmount.subtract(BigDecimal.valueOf(lastOrderSts.getOrderActualAmount())));
-        //todo 待付款金额
         list.add(lastDataSts);
         res.setTOrderDataStsList(list);
-        //环比数据
         //商品数量环比
-        BigDecimal goodsNumRingRate = Objects.isNull(lastGoodsNum) || lastGoodsNum == 0L ? NumberConstant.ONE_HUNDRED :
-                new BigDecimal((currentGoodsNum - lastGoodsNum)).multiply(NumberConstant.ONE_HUNDRED)
-                        .divide(new BigDecimal(lastGoodsNum), 2, RoundingMode.HALF_UP);
+        BigDecimal goodsNumRingRate = getRingRate(new BigDecimal(currentGoodsNum), new BigDecimal(lastGoodsNum));
         boolean goodsNumFlag = goodsNumRingRate.compareTo(BigDecimal.ZERO) >= 0;
         goodsNumRingRate = goodsNumRingRate.abs();
         //订单总量环比
-        BigDecimal orderAmountRingRate = lastAmount.compareTo(BigDecimal.ZERO) == 0 ? NumberConstant.ONE_HUNDRED :
-                (currentAmount.subtract(lastAmount)).multiply(NumberConstant.ONE_HUNDRED)
-                        .divide(lastAmount, 2, RoundingMode.HALF_UP);
+        BigDecimal orderAmountRingRate = getRingRate(currentAmount, lastAmount);
         boolean orderAmountFlag = orderAmountRingRate.compareTo(BigDecimal.ZERO) >= 0;
         orderAmountRingRate = orderAmountRingRate.abs();
         //订单总金额环比
-        BigDecimal orderPriceRingRate = lastPrice.compareTo(BigDecimal.ZERO) == 0 ? NumberConstant.ONE_HUNDRED :
-                (currentPrice.subtract(lastPrice)).multiply(NumberConstant.ONE_HUNDRED)
-                        .divide(lastPrice, 2, RoundingMode.HALF_UP);
+        BigDecimal orderPriceRingRate = getRingRate(currentPrice, lastPrice);
         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)).multiply(NumberConstant.ONE_HUNDRED)
-                        .divide(lastNotArrived, 2, RoundingMode.HALF_UP);
+        BigDecimal notArrivedAmountRingRate = getRingRate(currentDataSts.getNotArrivedAmount(), lastDataSts.getNotArrivedAmount());
         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)).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)
@@ -140,8 +129,18 @@ public class KwOrderStatisticsService {
                 .setOrderPriceFlag(orderPriceFlag)
                 .setNotArrivedAmountRingRate(notArrivedAmountRingRate)
                 .setNotArrivedAmountFlag(notArrivedAmountFlag)
-                .setWaitCollectedPriceRingRate(waitCollectedPriceRingRate)
-                .setWaitCollectedPriceFlag(waitCollectedPriceFlag);
+                .setWaitCollectedPriceRingRate(new BigDecimal(settlement.getPercent().replace("%", "")))
+                .setWaitCollectedPriceFlag(Objects.equals(settlement.getFlag(), 1));
+        return res;
+    }
+
+    private BigDecimal getRingRate(BigDecimal current, BigDecimal last) {
+        BigDecimal res;
+        if (last.compareTo(BigDecimal.ZERO) == 0) {
+            res = (current.subtract(last)).compareTo(BigDecimal.ZERO) != 0 ? NumberConstant.ONE_HUNDRED : BigDecimal.ZERO;
+        } else {
+            res = (current.subtract(last)).multiply(NumberConstant.ONE_HUNDRED).divide(last, 2, RoundingMode.HALF_UP);
+        }
         return res;
     }