Преглед на файлове

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

xucaiqin преди 2 години
родител
ревизия
f52e16676e
променени са 22 файла, в които са добавени 731 реда и са изтрити 144 реда
  1. 2 2
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/utils/DateUtils.java
  2. 1 1
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/web/response/Result.java
  3. 5 6
      sckw-common/sckw-common-mongo/src/main/java/com/sckw/mongo/model/SckwTradeOrder.java
  4. 2 2
      sckw-modules/sckw-order/src/main/java/com/sckw/order/dubbo/TradeOrderInfoServiceImpl.java
  5. 16 0
      sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTradeOrderGoodsService.java
  6. 27 9
      sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTradeOrderService.java
  7. 6 6
      sckw-modules/sckw-report/src/main/java/com/sckw/report/model/dto/WorkbenchOrderStsDTO.java
  8. 5 0
      sckw-modules/sckw-report/src/main/java/com/sckw/report/model/vo/TOrderDataStsResVO.java
  9. 20 0
      sckw-modules/sckw-report/src/main/java/com/sckw/report/model/vo/WbTOrderDataStsResVO.java
  10. 4 5
      sckw-modules/sckw-report/src/main/java/com/sckw/report/service/KwOrderService.java
  11. 40 17
      sckw-modules/sckw-report/src/main/java/com/sckw/report/service/KwOrderStatisticsService.java
  12. 6 7
      sckw-modules/sckw-report/src/main/java/com/sckw/report/service/vo/OrderListRes.java
  13. 22 6
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/AcceptCarriageOrderController.java
  14. 16 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/ConsignOrderController.java
  15. 41 16
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/dao/KwtLogisticsOrderMapper.java
  16. 31 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/enums/OrderTypeEnum.java
  17. 63 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/StatisticsByOrderVO.java
  18. 112 1
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/AcceptCarriageOrderService.java
  19. 38 35
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/CommonService.java
  20. 133 8
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/ConsignOrderService.java
  21. 6 6
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/LogisticsConsignmentService.java
  22. 135 17
      sckw-modules/sckw-transport/src/main/resources/mapper/KwtLogisticsOrderMapper.xml

+ 2 - 2
sckw-common/sckw-common-core/src/main/java/com/sckw/core/utils/DateUtils.java

@@ -619,7 +619,7 @@ public class DateUtils extends DateUtil {
         if (Objects.equals(dateType, 1)) {
             startTime = LocalDateTime.of(time.toLocalDate().minusDays(6), LocalTime.MIN);
         } else {
-            startTime = LocalDateTime.of(time.toLocalDate().minusMonths(1), LocalTime.MIN);
+            startTime = LocalDateTime.of(time.toLocalDate().minusMonths(1).plusDays(1), LocalTime.MIN);
         }
         return formatDate(startTime);
     }
@@ -636,7 +636,7 @@ public class DateUtils extends DateUtil {
         if (Objects.equals(dateType, 1)) {
             endTime = LocalDateTime.of(LocalDate.now().minusDays(7), LocalTime.MAX);
         } else {
-            endTime = LocalDateTime.of(LocalDate.now().minusMonths(1).minusDays(1), LocalTime.MAX);
+            endTime = LocalDateTime.of(LocalDate.now().minusMonths(1), LocalTime.MAX);
         }
         return formatDate(endTime);
     }

+ 1 - 1
sckw-common/sckw-common-core/src/main/java/com/sckw/core/web/response/Result.java

@@ -4,7 +4,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
 
 /**
  * @description:
- * @author: LengFaQiang
+ * @author: lfdc
  * @copyright
  * @create: 2022-01-27 10:17
  **/

+ 5 - 6
sckw-common/sckw-common-mongo/src/main/java/com/sckw/mongo/model/SckwTradeOrder.java

@@ -9,7 +9,6 @@ import lombok.experimental.Accessors;
 import org.springframework.data.annotation.Id;
 import org.springframework.data.mongodb.core.mapping.Document;
 
-import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.util.Date;
 
@@ -46,7 +45,7 @@ public class SckwTradeOrder {
     /**
      * 订单成交数量
      */
-    private BigDecimal amount;
+    private Double amount;
 
     /**
      * 订单单位(吨、方、箱、件)
@@ -56,12 +55,12 @@ public class SckwTradeOrder {
     /**
      * 订单金额
      */
-    private BigDecimal price;
+    private Double price;
 
     /**
      * 订单成交单价
      */
-    private BigDecimal unitPrice;
+    private Double unitPrice;
 
     /**
      * 订单交易方式(预付款、货到付款)
@@ -93,12 +92,12 @@ public class SckwTradeOrder {
     /**
      * 订单已委托量
      */
-    private BigDecimal entrustAmount;
+    private Double entrustAmount;
 
     /**
      * 订单实际交付量
      */
-    private BigDecimal actualAmount;
+    private Double actualAmount;
 
     /**
      * 是否关联对账单:0未关联,1已关联

+ 2 - 2
sckw-modules/sckw-order/src/main/java/com/sckw/order/dubbo/TradeOrderInfoServiceImpl.java

@@ -135,7 +135,7 @@ public class TradeOrderInfoServiceImpl implements TradeOrderInfoService {
             kwoTradeOrderService.updateById(order);
             //更新mongodb
             SckwTradeOrder updateParam = new SckwTradeOrder();
-            updateParam.setTOrderId(order.getId()).setEntrustAmount(totalEntrustAmount)
+            updateParam.setTOrderId(order.getId()).setEntrustAmount(totalEntrustAmount.doubleValue())
                     .setUpdateBy(param.getUpdateBy()).setUpdateByName(param.getUpdateByName()).setUpdateTime(new Date());
             saveMongoDb(updateParam);
         } finally {
@@ -194,7 +194,7 @@ public class TradeOrderInfoServiceImpl implements TradeOrderInfoService {
             kwoTradeOrderService.updateById(order);
             //更新mongodb
             SckwTradeOrder updateParam = new SckwTradeOrder();
-            updateParam.setTOrderId(order.getId()).setActualAmount(totalActualAmount).setStatus(order.getStatus())
+            updateParam.setTOrderId(order.getId()).setActualAmount(totalActualAmount.doubleValue()).setStatus(order.getStatus())
                     .setUpdateBy(param.getUpdateBy()).setUpdateByName(param.getUpdateByName()).setUpdateTime(new Date());
             saveMongoDb(updateParam);
         } finally {

+ 16 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTradeOrderGoodsService.java

@@ -9,6 +9,7 @@ import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -74,4 +75,19 @@ public class KwoTradeOrderGoodsService {
                 .set(KwoTradeOrderGoods::getDelFlag, Global.YES);
         kwoTradeOrderGoodsMapper.update(null, wrapper);
     }
+
+    /**
+     * @desc: 更新商品价格
+     * @author: yzc
+     * @date: 2023-09-12 15:52
+     * @Param orderId:
+     * @Param unitPrice:
+     * @return: void
+     */
+    public void updateUnitPrice(Long orderId, BigDecimal unitPrice) {
+        LambdaUpdateWrapper<KwoTradeOrderGoods> wrapper = new LambdaUpdateWrapper<>();
+        wrapper.eq(KwoTradeOrderGoods::getTOrderId, orderId).eq(KwoTradeOrderGoods::getDelFlag, Global.NO)
+                .set(KwoTradeOrderGoods::getUnitPrice, unitPrice);
+        kwoTradeOrderGoodsMapper.update(null, wrapper);
+    }
 }

+ 27 - 9
sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTradeOrderService.java

@@ -129,8 +129,16 @@ public class KwoTradeOrderService {
         Long id = tradeOrder.getId();
         String tOrderNo = tradeOrder.getTOrderNo();
         SckwTradeOrder order = new SckwTradeOrder();
-        order.setFirmName(LoginUserHolder.getEntName()).setTOrderId(id).setCreateByName(LoginUserHolder.getUserName())
-                .setUpdateByName(LoginUserHolder.getUserName()).setAssociateStatement(0);
+        order.setFirmName(LoginUserHolder.getEntName())
+                .setCreateByName(LoginUserHolder.getUserName())
+                .setUpdateByName(LoginUserHolder.getUserName())
+                .setTOrderId(id)
+                .setAssociateStatement(0)
+                .setPrice(tradeOrder.getPrice().doubleValue())
+                .setAmount(tradeOrder.getAmount().doubleValue())
+                .setEntrustAmount(tradeOrder.getEntrustAmount().doubleValue())
+                .setActualAmount(tradeOrder.getActualAmount().doubleValue());
+
         BeanUtils.copyProperties(tradeOrder, order);
         //商品信息
         kwoTradeOrderGoodsService.delByOrderId(id);
@@ -144,12 +152,12 @@ public class KwoTradeOrderService {
             }
             goods.setTOrderId(id).setTOrderNo(tOrderNo).setGoodsType(goodsDetail.getGoodsType());
             kwoTradeOrderGoodsService.insert(goods);
-            order.setGoodsId(goodsDetail.getId()).setUnit(goodsDetail.getUnit()).setUnitPrice(goods.getUnitPrice())
+            order.setGoodsId(goodsDetail.getId()).setUnit(goodsDetail.getUnit()).setUnitPrice(goods.getUnitPrice().doubleValue())
                     .setGoodsName(goodsDetail.getName()).setGoodsType(goodsDetail.getGoodsType()).setGoodsCode(goodsDetail.getCode())
                     .setGoodsTaxRate(goodsDetail.getTaxRate()).setGoodsSpec(goodsDetail.getSpec()).setGoodsThumb(goodsDetail.getThumb());
         }
         if (Objects.isNull(order.getUnitPrice())) {
-            order.setUnitPrice(new BigDecimal("0.00"));
+            order.setUnitPrice(BigDecimal.ZERO.doubleValue());
         }
         //单位信息
         kwoTradeOrderUnitService.delByOrderId(id);
@@ -876,6 +884,8 @@ public class KwoTradeOrderService {
             throw new BusinessException("Invalid contract status");
         }
         kwoTradeOrderMapper.updateById(order);
+        //更新商品价格
+        kwoTradeOrderGoodsService.updateUnitPrice(param.getId(),param.getUnitPrice());
         //保存合同信息
         KwoTradeOrderContract tradeOrderContract = BeanUtils.copyProperties(contractInfo, KwoTradeOrderContract.class);
         tradeOrderContract.setTOrderId(order.getId()).setTOrderNo(order.getTOrderNo());
@@ -893,10 +903,18 @@ public class KwoTradeOrderService {
         }
         //更新mongodb
         SckwTradeOrder updateParam = BeanUtils.copyProperties(param, SckwTradeOrder.class);
-        updateParam.setTOrderId(param.getId()).setStatus(order.getStatus()).setContractId(contractInfo.getContractId())
-                .setContractNo(contractInfo.getContractNo()).setContractName(contractInfo.getContractName())
-                .setContractSigningWay(contractInfo.getContractSigningWay()).setUpdateBy(LoginUserHolder.getUserId())
-                .setUpdateByName(LoginUserHolder.getUserName()).setUpdateTime(new Date());
+        updateParam.setTOrderId(param.getId())
+                .setStatus(order.getStatus())
+                .setPrice(order.getPrice().doubleValue())
+                .setAmount(order.getAmount().doubleValue())
+                .setUnitPrice(param.getUnitPrice().doubleValue())
+                .setContractId(contractInfo.getContractId())
+                .setContractNo(contractInfo.getContractNo())
+                .setContractName(contractInfo.getContractName())
+                .setContractSigningWay(contractInfo.getContractSigningWay())
+                .setUpdateBy(LoginUserHolder.getUserId())
+                .setUpdateByName(LoginUserHolder.getUserName())
+                .setUpdateTime(new Date());
         saveMongoDb(3, updateParam);
 
     }
@@ -1049,7 +1067,7 @@ public class KwoTradeOrderService {
             remoteContractService.updatePerformed(contract.getContractId(), actualAmount);
             //mongodb更新订单状态
             SckwTradeOrder updateParam = new SckwTradeOrder();
-            updateParam.setTOrderId(order.getId()).setActualAmount(order.getActualAmount()).setStatus(order.getStatus())
+            updateParam.setTOrderId(order.getId()).setActualAmount(order.getActualAmount().doubleValue()).setStatus(order.getStatus())
                     .setUpdateBy(LoginUserHolder.getUserId()).setUpdateByName(LoginUserHolder.getUserName()).setUpdateTime(new Date());
             saveMongoDb(3, updateParam);
         } finally {

+ 6 - 6
sckw-modules/sckw-report/src/main/java/com/sckw/report/model/dto/WorkbenchOrderStsDTO.java

@@ -21,9 +21,9 @@ import java.math.BigDecimal;
 public class WorkbenchOrderStsDTO implements Serializable {
 
     public WorkbenchOrderStsDTO() {
-        this.orderAmount = BigDecimal.ZERO;
-        this.orderPrice = BigDecimal.ZERO;
-        this.orderActualAmount = BigDecimal.ZERO;
+        this.orderAmount = BigDecimal.ZERO.doubleValue();
+        this.orderPrice = BigDecimal.ZERO.doubleValue();
+        this.orderActualAmount = BigDecimal.ZERO.doubleValue();
     }
 
     @Serial
@@ -32,16 +32,16 @@ public class WorkbenchOrderStsDTO implements Serializable {
     /**
      * 订单总量
      */
-    private BigDecimal orderAmount;
+    private Double orderAmount;
 
     /**
      * 订单总金额
      */
-    private BigDecimal orderPrice;
+    private Double orderPrice;
 
     /**
      * 订单总实际成交量
      */
-    private BigDecimal orderActualAmount;
+    private Double orderActualAmount;
 
 }

+ 5 - 0
sckw-modules/sckw-report/src/main/java/com/sckw/report/model/vo/TOrderDataStsResVO.java

@@ -31,6 +31,11 @@ public class TOrderDataStsResVO implements Serializable {
 
     @Serial
     private static final long serialVersionUID = -6132733716009809627L;
+
+    /**
+     * 1当前周、月;2上周、月
+     */
+    private Integer type;
     /**
      * 商品数量
      */

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

+ 4 - 5
sckw-modules/sckw-report/src/main/java/com/sckw/report/service/KwOrderService.java

@@ -25,7 +25,6 @@ import org.springframework.data.mongodb.core.query.Criteria;
 import org.springframework.data.mongodb.core.query.Query;
 import org.springframework.stereotype.Service;
 
-import java.math.BigDecimal;
 import java.util.*;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.regex.Pattern;
@@ -118,13 +117,13 @@ public class KwOrderService {
      * @date: 2023-08-25 10:32
      * @Param amount:
      * @Param entrustAmount:
-     * @return: java.math.BigDecimal
+     * @return: java.math.Double
      */
-    private BigDecimal getWaitEntrustAmount(BigDecimal amount, BigDecimal entrustAmount) {
+    private Double getWaitEntrustAmount(Double amount, Double entrustAmount) {
         if (Objects.isNull(amount) || Objects.isNull(entrustAmount)) {
             return amount;
         }
-        return amount.subtract(entrustAmount);
+        return amount - entrustAmount;
     }
 
     /**
@@ -352,7 +351,7 @@ public class KwOrderService {
         List<TradeOrderListExport> list = new ArrayList<>();
         AtomicInteger i = new AtomicInteger(1);
         orders.forEach(e -> {
-            BigDecimal waitEntrustAmount = getWaitEntrustAmount(e.getAmount(), e.getEntrustAmount());
+            Double waitEntrustAmount = getWaitEntrustAmount(e.getAmount(), e.getEntrustAmount());
             String loadCityName = Objects.isNull(e.getLoadCityName()) ? "" : e.getLoadCityName();
             String loadDetailAddress = Objects.isNull(e.getLoadDetailAddress()) ? "" : e.getLoadDetailAddress();
             String unloadCityName = Objects.isNull(e.getUnloadCityName()) ? "" : e.getUnloadCityName();

+ 40 - 17
sckw-modules/sckw-report/src/main/java/com/sckw/report/service/KwOrderStatisticsService.java

@@ -70,12 +70,13 @@ public class KwOrderStatisticsService {
         Long currentGoodsNum = goodsStatisticsService.getOnShelfGoodsNum(goodsNumStsParam);
         //订单统计
         WorkbenchOrderStsDTO currentOrderSts = getOrderStsInfo(orderType, unit, currentStart, null);
-        BigDecimal currentAmount = currentOrderSts.getOrderAmount();
-        BigDecimal currentPrice = currentDataSts.getOrderPrice();
-        currentDataSts.setGoodsNum(currentGoodsNum)
+        BigDecimal currentAmount = BigDecimal.valueOf(currentOrderSts.getOrderAmount());
+        BigDecimal currentPrice = BigDecimal.valueOf(currentOrderSts.getOrderPrice());
+        currentDataSts.setType(NumberConstant.ONE)
+                .setGoodsNum(currentGoodsNum)
                 .setOrderAmount(currentAmount)
                 .setOrderPrice(currentPrice)
-                .setNotArrivedAmount(currentAmount.subtract(currentOrderSts.getOrderActualAmount()));
+                .setNotArrivedAmount(currentAmount.subtract(BigDecimal.valueOf(currentOrderSts.getOrderActualAmount())));
         //todo 待付款金额
         list.add(currentDataSts);
 
@@ -86,40 +87,61 @@ public class KwOrderStatisticsService {
         Long lastGoodsNum = goodsStatisticsService.getOnShelfGoodsNum(goodsNumStsParam);
         //订单统计
         WorkbenchOrderStsDTO lastOrderSts = getOrderStsInfo(orderType, unit, lastStart, lastEnd);
-        BigDecimal lastAmount = lastOrderSts.getOrderAmount();
-        BigDecimal lastPrice = lastOrderSts.getOrderPrice();
-        lastDataSts.setGoodsNum(lastGoodsNum)
+        BigDecimal lastAmount = BigDecimal.valueOf(lastOrderSts.getOrderAmount());
+        BigDecimal lastPrice = BigDecimal.valueOf(lastOrderSts.getOrderPrice());
+        lastDataSts.setType(NumberConstant.TWO)
+                .setGoodsNum(lastGoodsNum)
                 .setOrderAmount(lastAmount)
                 .setOrderPrice(lastPrice)
-                .setNotArrivedAmount(lastAmount.subtract(lastOrderSts.getOrderActualAmount()));
+                .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)).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;
     }
 
@@ -142,10 +164,11 @@ public class KwOrderStatisticsService {
         if (StringUtils.isNotBlank(unit)) {
             criteria.and("unit").is(unit);
         }
-        if (Objects.nonNull(start)) {
+        if (Objects.nonNull(start) && Objects.nonNull(end)) {
+            criteria.and("createTime").gte(start).lte(end);
+        } else if (Objects.nonNull(start)) {
             criteria.and("createTime").gte(start);
-        }
-        if (Objects.nonNull(end)) {
+        } else if (Objects.nonNull(end)) {
             criteria.and("createTime").lte(end);
         }
         Aggregation aggregation = Aggregation.newAggregation(

+ 6 - 7
sckw-modules/sckw-report/src/main/java/com/sckw/report/service/vo/OrderListRes.java

@@ -7,7 +7,6 @@ import lombok.Setter;
 import lombok.ToString;
 import lombok.experimental.Accessors;
 
-import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.util.Date;
 
@@ -134,28 +133,28 @@ public class OrderListRes {
     /**
      * 订单成交单价
      */
-    private BigDecimal unitPrice;
+    private Double unitPrice;
     /**
      * 订单金额
      */
-    private BigDecimal price;
+    private Double price;
 
     /**
      * 订单总量
      */
-    private BigDecimal amount;
+    private Double amount;
     /**
      * 已委托量
      */
-    private BigDecimal entrustAmount;
+    private Double entrustAmount;
     /**
      * 待委托量
      */
-    private BigDecimal waitEntrustAmount;
+    private Double waitEntrustAmount;
     /**
      * 实际交付量
      */
-    private BigDecimal actualAmount;
+    private Double actualAmount;
     /**
      * 归属项目
      */

+ 22 - 6
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/AcceptCarriageOrderController.java

@@ -50,7 +50,6 @@ public class AcceptCarriageOrderController {
     TransportCommonService transportCommonService;
 
 
-
     /**
      * 承运订单首页条件查询
      *
@@ -95,7 +94,7 @@ public class AcceptCarriageOrderController {
     @RequestMapping(value = "/acceptCarriageOrderExport", method = RequestMethod.POST)
     public HttpResult exportAcceptCarriage(@Validated @RequestBody AcceptCarriageOrderQuery query) {
         HttpServletResponse response = RequestHolder.getResponse();
-        List<AcceptCarriageOrderExcelVo> list = acceptCarriageOrderService.exportAcceptCarriage(query,"2");
+        List<AcceptCarriageOrderExcelVo> list = acceptCarriageOrderService.exportAcceptCarriage(query, "2");
         if (!org.springframework.util.CollectionUtils.isEmpty(list)) {
             ExcelUtil.download(response, AcceptCarriageOrderExcelVo.class, list);
             return null;
@@ -123,6 +122,7 @@ public class AcceptCarriageOrderController {
 
     /**
      * 承运合同/托运合同-根据合同id获取托运订单列表
+     *
      * @param contractParam 请求参数
      * @return
      */
@@ -160,7 +160,7 @@ public class AcceptCarriageOrderController {
      */
     @RequestMapping(value = "/getAcceptCarriageOrder", method = RequestMethod.POST)
     public HttpResult getAcceptCarriageOrder(@RequestBody @Valid LogisticsOrderParam logisticsOrderParam) {
-        log.info("对账管理查询物流订单信息:{}",JSONObject.toJSONString(logisticsOrderParam));
+        log.info("对账管理查询物流订单信息:{}", JSONObject.toJSONString(logisticsOrderParam));
         try {
             return transportCommonService.getAcceptCarriageOrder(logisticsOrderParam);
         } catch (Exception e) {
@@ -312,7 +312,7 @@ public class AcceptCarriageOrderController {
         log.info("承运订单-取消派车(撤回派车)/单趟撤回请求参数:{}", JSONObject.toJSONString(baseList));
         List<String> lists = StringUtils.splitStrToList(baseList.getIds(), ",", String.class);
         try {
-            return acceptCarriageOrderService.cancelDelivery(lists,baseList.getIds());
+            return acceptCarriageOrderService.cancelDelivery(lists, baseList.getIds());
         } catch (Exception e) {
             log.error("承运订单-单趟撤回 error:{}", e.getMessage(), e);
             return HttpResult.error(HttpStatus.GLOBAL_EXCEPTION_CODE, e.getMessage());
@@ -362,7 +362,7 @@ public class AcceptCarriageOrderController {
     public HttpResult getCancelReason(@NotBlank(message = "物流订单id不能为空") @RequestParam("id") String id,
                                       @NotNull(message = "单据状态不能为空") @RequestParam("status") Integer status) {
         try {
-            return acceptCarriageOrderService.getCancelReason(id,status);
+            return acceptCarriageOrderService.getCancelReason(id, status);
         } catch (Exception e) {
             log.error("承运订单-查看撤销原因 error:{}", e.getMessage(), e);
             return HttpResult.error(HttpStatus.GLOBAL_EXCEPTION_CODE, e.getMessage());
@@ -377,7 +377,7 @@ public class AcceptCarriageOrderController {
      */
     @RequestMapping(value = "/addOrder", method = RequestMethod.POST)
     public HttpResult addOrder(@Valid @RequestBody AddOrderDTO addOrderDTO) {
-        log.info("承运订单-页面新建订单 add {}",JSONObject.toJSONString(addOrderDTO));
+        log.info("承运订单-页面新建订单 add {}", JSONObject.toJSONString(addOrderDTO));
         try {
             return acceptCarriageOrderService.addOrder(addOrderDTO);
         } catch (Exception e) {
@@ -386,4 +386,20 @@ public class AcceptCarriageOrderController {
             return HttpResult.error(HttpStatus.GLOBAL_EXCEPTION_CODE, e.getMessage());
         }
     }
+
+    /**
+     * 工作台-承运业务统计
+     *
+     * @return
+     */
+    @RequestMapping(value = "/workbenchStatistics", method = RequestMethod.GET)
+    public HttpResult workbenchStatistics(@RequestParam("dateType") @NotBlank(message = "类型不能为空") String dateType) {
+        log.info("工作台-承运业务统计 {}", dateType);
+        try {
+            return acceptCarriageOrderService.workbenchStatistics(dateType);
+        } catch (Exception e) {
+            log.error("工作台-承运业务统计 error:{}", e.getMessage(), e);
+            return HttpResult.error(HttpStatus.GLOBAL_EXCEPTION_CODE, e.getMessage());
+        }
+    }
 }

+ 16 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/ConsignOrderController.java

@@ -314,4 +314,20 @@ public class ConsignOrderController {
         }
     }
 
+    /**
+     * 工作台-托运业务统计
+     *
+     * @return
+     */
+    @RequestMapping(value = "/workbenchStatistics", method = RequestMethod.GET)
+    public HttpResult workbenchStatistics(@RequestParam("dateType") @NotBlank(message = "类型不能为空") String dateType) {
+        log.info("工作台-托运业务统计 {}", dateType);
+        try {
+            return consignOrderService.workbenchStatistics(dateType);
+        } catch (Exception e) {
+            log.error("工工作台-托运业务统计 error:{}", e.getMessage(), e);
+            return HttpResult.error(HttpStatus.GLOBAL_EXCEPTION_CODE, e.getMessage());
+        }
+    }
+
 }

+ 41 - 16
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/dao/KwtLogisticsOrderMapper.java

@@ -30,7 +30,7 @@ public interface KwtLogisticsOrderMapper extends BaseMapper<KwtLogisticsOrder> {
      *
      * @param logisticsOrderParam 查询参数
      * @param dictValue           字典id
-     * @param entId           托运角色
+     * @param entId               托运角色
      * @param dictValue           承运角色
      * @return
      */
@@ -215,10 +215,10 @@ public interface KwtLogisticsOrderMapper extends BaseMapper<KwtLogisticsOrder> {
      * @return
      */
     List<ManagementLogsiticsOrderVO> selectManagementLogisticsOrderList(@Param("query") ManagementLogisticsOrderQuery query,
-                                                         @Param("orderList") List<Integer> orderList,
-                                                         @Param("entId") Long entId,
-                                                         @Param("contactsIds") List<Long> contactsIds,
-                                                         @Param("userIds") List<Long> userIds
+                                                                        @Param("orderList") List<Integer> orderList,
+                                                                        @Param("entId") Long entId,
+                                                                        @Param("contactsIds") List<Long> contactsIds,
+                                                                        @Param("userIds") List<Long> userIds
     );
 
     /**
@@ -254,9 +254,9 @@ public interface KwtLogisticsOrderMapper extends BaseMapper<KwtLogisticsOrder> {
 
     /**
      * @param query
-     * @param orderList 单据状态
-     * @param type      代表承运或者托运
-     * @param entId 企业id
+     * @param orderList   单据状态
+     * @param type        代表承运或者托运
+     * @param entId       企业id
      * @param contactsIds 联系人id
      * @return
      */
@@ -269,19 +269,18 @@ public interface KwtLogisticsOrderMapper extends BaseMapper<KwtLogisticsOrder> {
     );
 
 
-
     /**
      * @param query
-     * @param orderList 单据状态
-     * @param entId 企业id
+     * @param orderList   单据状态
+     * @param entId       企业id
      * @param contactsIds 联系人id
      * @return
      */
     List<TableTops> countManagementLogisticsOrderListByStatus(@Param("query") ManagementLogisticsOrderQuery query,
-                                                    @Param("orderList") List<Integer> orderList,
-                                                    @Param("entId") Long entId,
-                                                    @Param("contactsIds") List<Long> contactsIds,
-                                                    @Param("userIds") List<Long> userIds
+                                                              @Param("orderList") List<Integer> orderList,
+                                                              @Param("entId") Long entId,
+                                                              @Param("contactsIds") List<Long> contactsIds,
+                                                              @Param("userIds") List<Long> userIds
     );
 
     /**
@@ -297,12 +296,38 @@ public interface KwtLogisticsOrderMapper extends BaseMapper<KwtLogisticsOrder> {
 
     List<String> checkLogisticsOrderIsFinishByEntId(@Param("consignEntId") Long consignEntId, @Param("acceptCarriageEntId") Long acceptCarriageEntId, @Param("orderStatus") List<Integer> orderStatus);
 
-    Integer statisticsWaybillSendCar(@Param("ids")  List<Long> ids, @Param("orderList") List<Integer> orderList);
+    Integer statisticsWaybillSendCar(@Param("ids") List<Long> ids, @Param("orderList") List<Integer> orderList);
 
     List<Long> statisticsLogistics(@Param("topEntId") Long topEntId);
 
     Integer statisticsLogisticsByTopEntIdAndOrderStatus(@Param("topEntId") Long topEntId, @Param("orderList") List<Integer> orderList);
 
+    /**
+     *
+     * @param statusList 单据状态集合
+     * @param dateStart 开始时间
+     * @param dateEnd   结束时间
+     * @param topId 顶级企业id
+     * @param unitType  企业类型【1托运2承运】
+     * @return
+     */
+    StatisticsByOrderVO selectAcceptCarriageFinishOrder(@Param("statusList") List<Integer> statusList, @Param("dateStart") String dateStart, @Param("dateEnd") String dateEnd, @Param("topId") Long topId, @Param("unitType") Integer unitType);
+
+    /**
+     *
+     * @param statusList 单据状态集合
+     * @param dateStart 开始时间
+     * @param dateEnd   结束时间
+     * @param topId 顶级企业id
+     * @param unitType  企业类型【1托运2承运】
+     * @return
+     */
+    StatisticsByOrderVO selectAcceptCarriageAwaitFinishOrder(@Param("statusList") List<Integer> statusList, @Param("dateStart") String dateStart, @Param("dateEnd") String dateEnd, @Param("topId") Long topId, @Param("unitType") Integer unitType);
+
+
+    StatisticsByOrderVO selectStatisticsByOrder(@Param("statusList") List<Integer> statusList, @Param("dateStart") String dateStart, @Param("dateEnd") String dateEnd, @Param("topId") Long topId, @Param("unitType") Integer unitType);
+
+
 //    List<TableTops> countAppLogisticsOrderListByStatus(@Param("type") String type,@Param("entId") Long entId
 //    );
 }

+ 31 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/enums/OrderTypeEnum.java

@@ -0,0 +1,31 @@
+package com.sckw.transport.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @desc: 物流订单类型枚举
+ * @author: lfdc
+ * @date: 2023-09-11 11:51
+ */
+@Getter
+@AllArgsConstructor
+public enum OrderTypeEnum {
+    CONSIGN_ORDER(1, "托运订单"),
+    ACCEPT_CARRIAGE_ORDER(2, "承运订单"),
+
+    ;
+
+    private final Integer type;
+
+    private final String label;
+
+    public static String getLabel(Integer type) {
+        for (OrderTypeEnum ele : OrderTypeEnum.values()) {
+            if (ele.getType().equals(type)) {
+                return ele.getLabel();
+            }
+        }
+        return null;
+    }
+}

+ 63 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/StatisticsByOrderVO.java

@@ -0,0 +1,63 @@
+package com.sckw.transport.model.vo;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * @author lfdc
+ * @description 物流订单统计vo
+ * @date 2023-09-11 17:09:40
+ */
+@Data
+public class StatisticsByOrderVO implements Serializable {
+    /**
+     * 待分配量
+     */
+    @JsonProperty("waitingAmount")
+    private BigDecimal waitingAmount;
+
+    /**
+     * 已委托量(上游给他分配的量)-承运量
+     */
+    @JsonProperty("amount")
+    private BigDecimal amount;
+
+    /**
+     * 已委托量(自己承运,给下游司机分配的量)-委托给下游的量
+     */
+    @JsonProperty("entrustAmount")
+    private BigDecimal entrustAmount;
+
+    /**
+     * 分包量
+     */
+    @JsonProperty("subcontractAmount")
+    private BigDecimal subcontractAmount;
+
+    /**
+     * 运价
+     */
+    @JsonProperty("price")
+    private BigDecimal price;
+
+    /**
+     * 运输总额
+     */
+    @JsonProperty("totalPrice")
+    private BigDecimal totalPrice;
+
+    /**
+     * 环比
+     */
+    @JsonProperty("chainRatio")
+    private String chainRatio;
+
+    /**
+     * 1 增长 2下降
+     */
+    @JsonProperty("flag")
+    private Integer flag;
+}

+ 112 - 1
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/AcceptCarriageOrderService.java

@@ -21,6 +21,7 @@ import com.sckw.core.utils.*;
 import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.core.web.context.LoginUserHolder;
 import com.sckw.core.web.response.HttpResult;
+import com.sckw.excel.utils.DateUtil;
 import com.sckw.excel.utils.ValidUtil;
 import com.sckw.fleet.api.RemoteFleetService;
 import com.sckw.fleet.api.model.vo.RTruckVo;
@@ -44,13 +45,13 @@ import com.sckw.system.api.model.dto.res.EntCacheResDto;
 import com.sckw.system.api.model.dto.res.SysDictResDto;
 import com.sckw.system.api.model.dto.res.UserCacheResDto;
 import com.sckw.transport.dao.*;
+import com.sckw.transport.enums.OrderTypeEnum;
 import com.sckw.transport.model.*;
 import com.sckw.transport.model.dto.*;
 import com.sckw.transport.model.param.AcceptCarriageOrderQuery;
 import com.sckw.transport.model.param.DriverParam;
 import com.sckw.transport.model.vo.*;
 import com.sckw.transport.model.vo.execlVo.AcceptCarriageOrderExcelVo;
-import com.sckw.transport.model.vo.AcceptCarriageOrderVO;
 import jakarta.annotation.Resource;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboReference;
@@ -64,6 +65,8 @@ import org.springframework.util.ObjectUtils;
 
 import java.math.BigDecimal;
 import java.text.DecimalFormat;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -2611,4 +2614,112 @@ public class AcceptCarriageOrderService {
         }
         return exportList;
     }
+
+    /**
+     * 工作台-承运业务统计
+     *
+     * @param dateType
+     * @return
+     */
+    public HttpResult workbenchStatistics(String dateType) {
+        EntCacheResDto entCacheResDto = remoteSystemService.queryEntCacheById(LoginUserHolder.getEntId());
+        Long id = entCacheResDto.getId();
+        //周
+        if (String.valueOf(NumberConstant.ONE).equals(dateType)) {
+
+            //本周时间
+
+            //开始时间
+            String weekDateStart = DateUtil.getLastWeekDateStartToString(LocalDate.now(), 6);
+            //结束时间
+            String weekDateEnd = DateUtil.getLastWeekDateEndToString(0);
+            //环比上周
+            //开始时间
+            String lastWeekDateStart = DateUtil.getLastWeekDateStartToString(LocalDate.now(), 13);
+            //结束时间
+            String lastWeekDateEnd = DateUtil.getLastWeekDateEndToString(7);
+            return computeCompare(id, weekDateStart, weekDateEnd, lastWeekDateStart, lastWeekDateEnd);
+        } else if (String.valueOf(NumberConstant.TWO).equals(dateType)) {
+
+            //本月
+            //开始时间
+            String monthDateStart = DateUtil.getBeforeMonthDateAndDaysStartToString(LocalDateTime.now(), 1, -1);
+            //结束时间
+            String monthDateEnd = DateUtil.getLastWeekDateEndToString(0);
+
+
+            //环比上月
+
+            //上个月
+            //开始时间
+            String lastMonthDateStart = DateUtil.getBeforeMonthDateAndDaysStartToString(LocalDateTime.now(), 2, -1);
+            //结束时间
+            String lastMonthDateEnd = DateUtil.getBeforeMonthDateAndDaysEndToString(LocalDateTime.now(), 1, 0);
+            return computeCompare(id, monthDateStart, monthDateEnd, lastMonthDateStart, lastMonthDateEnd);
+        } else if (String.valueOf(NumberConstant.THREE).equals(dateType)) {
+            //年
+            // 获取当前日期
+            String currentDateEnd = DateUtil.format(LocalDate.now()) + " 23:59:59";
+            LocalDate currentDate = LocalDate.now();
+            // 计算一年前的日期
+            LocalDate oneYearAgo = currentDate.minusYears(1);
+            LocalDateTime currentDateStart = oneYearAgo.atStartOfDay();
+
+        } else {
+            HttpResult.error("统计纬度错误!");
+        }
+        return null;
+    }
+
+    /**
+     * 环比计算
+     *
+     * @param id                企业集团id
+     * @param weekDateStart     环比本次开始时间
+     * @param weekDateEnd       环比本次结束时间
+     * @param lastWeekDateStart 环比上次开始时间
+     * @param lastWeekDateEnd   环比上次结束时间
+     * @return
+     */
+    private HttpResult computeCompare(Long id, String weekDateStart, String weekDateEnd, String lastWeekDateStart, String lastWeekDateEnd) {
+        HttpResult httpResult = new HttpResult();
+        //获取完结的单据-排除掉不做统计中的数据
+        List<Integer> statusList = new ArrayList<>();
+        statusList.add(LogisticsOrderEnum.TO_BE_PLANNED.getCode());
+        statusList.add(LogisticsOrderEnum.PENDING_ORDER.getCode());
+        statusList.add(LogisticsOrderEnum.WAIT_DELIVERY.getCode());
+        statusList.add(LogisticsOrderEnum.IN_TRANSIT.getCode());
+        statusList.add(LogisticsOrderEnum.HAVE_FINISHED.getCode());
+        statusList.add(LogisticsOrderEnum.HAVE_RECONCILED.getCode());
+        statusList.add(LogisticsOrderEnum.HAVE_ALREADY_SETTLED.getCode());
+        //本周
+        StatisticsByOrderVO currentWeek = logisticsOrderMapper.selectStatisticsByOrder(statusList, weekDateStart, weekDateEnd, id, OrderTypeEnum.ACCEPT_CARRIAGE_ORDER.getType());
+
+        //上周
+        StatisticsByOrderVO lastWeek = logisticsOrderMapper.selectStatisticsByOrder(statusList, lastWeekDateStart, lastWeekDateEnd, id, OrderTypeEnum.ACCEPT_CARRIAGE_ORDER.getType());
+        //环比计算
+        StatisticsByOrderVO vo = new StatisticsByOrderVO();
+        BeanUtils.copyProperties(currentWeek, vo);
+        Integer flag = 1;
+        BigDecimal chainRatio = new BigDecimal("0.00");
+        if (currentWeek.getWaitingAmount().compareTo(new BigDecimal("0.00")) == 0
+                && lastWeek.getWaitingAmount().compareTo(new BigDecimal("0.00")) == 0) {
+            chainRatio = new BigDecimal("0.00");
+        } else if (currentWeek.getWaitingAmount().compareTo(new BigDecimal("0.00")) == 0) {
+            chainRatio = chainRatio.subtract(new BigDecimal("100.00"));
+            flag = 2;
+        } else if (lastWeek.getWaitingAmount().compareTo(new BigDecimal("0.00")) == 0) {
+            chainRatio = new BigDecimal("100.00").subtract(chainRatio);
+        } else {
+            chainRatio = (currentWeek.getWaitingAmount().subtract(lastWeek.getWaitingAmount())).divide(lastWeek.getWaitingAmount(),NumberConstant.SIX, BigDecimal.ROUND_HALF_UP)
+                    .multiply(new BigDecimal("100.00")).setScale(NumberConstant.TWO, BigDecimal.ROUND_HALF_UP);
+        }
+        if (chainRatio.compareTo(new BigDecimal("0.00")) == -1) {
+            flag = 2;
+        }
+        vo.setFlag(flag);
+        vo.setChainRatio(chainRatio.abs() + "%");
+        httpResult.setData(vo);
+        return httpResult;
+    }
 }

+ 38 - 35
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/CommonService.java

@@ -218,14 +218,14 @@ public class CommonService {
         //用户数据集
         userIds = userIds.stream().distinct().collect(Collectors.toList());
         Map<Long, UserCacheResDto> users = remoteSystemService.queryUserCacheMapByIds(userIds);
-        users.forEach((key,value) -> {
+        users.forEach((key, value) -> {
             UserInfoVo userInfo = new UserInfoVo();
             BeanUtils.copyProperties(value, userInfo);
             userList.add(userInfo);
         });
 
         Map<Long, RDriverVo> drivers = remoteFleetService.findDriver(userIds);
-        drivers.forEach((key,value) -> {
+        drivers.forEach((key, value) -> {
             UserInfoVo userInfo = new UserInfoVo();
             BeanUtils.copyProperties(value, userInfo);
             userList.add(userInfo);
@@ -345,9 +345,9 @@ public class CommonService {
         Map<String, Object> map = new HashMap<>(NumberConstant.SIXTEEN);
         map.put("orderNo", lOrderNo);
         if (flag && createBy.equals(checkUnit.getContactsId())) {
-            sendMessageNewLogisticsOrder(checkUnit, map,MessageEnum.NEW_LOGISTICS_ORDER,consignLogisticsOrderUrl);
+            sendMessageNewLogisticsOrder(checkUnit, map, MessageEnum.NEW_LOGISTICS_ORDER, consignLogisticsOrderUrl);
         } else if (flag && createBy.equals(carriageUnit.getContactsId())) {
-            sendMessageNewLogisticsOrder(carriageUnit, map,MessageEnum.NEW_CARRIAGE_ORDER,carriageLogisticsOrderUrl);
+            sendMessageNewLogisticsOrder(carriageUnit, map, MessageEnum.NEW_CARRIAGE_ORDER, carriageLogisticsOrderUrl);
         } else {
             UserCacheResDto userCacheResDto = remoteSystemService.queryUserCacheById(createBy);
             //给订单创建人发消息
@@ -365,8 +365,8 @@ public class CommonService {
                     .setCreateBy(LoginUserHolder.getUserId());
             log.info("托运订单/承运订单自建物流订单-创建人:{}", JSON.toJSONString(msg));
             streamBridge.send("sckw-message", JSON.toJSONString(msg));
-            sendMessageNewLogisticsOrder(checkUnit, map,MessageEnum.NEW_LOGISTICS_ORDER,consignLogisticsOrderUrl);
-            sendMessageNewLogisticsOrder(carriageUnit, map,MessageEnum.NEW_CARRIAGE_ORDER,carriageLogisticsOrderUrl);
+            sendMessageNewLogisticsOrder(checkUnit, map, MessageEnum.NEW_LOGISTICS_ORDER, consignLogisticsOrderUrl);
+            sendMessageNewLogisticsOrder(carriageUnit, map, MessageEnum.NEW_CARRIAGE_ORDER, carriageLogisticsOrderUrl);
         }
 
     }
@@ -374,9 +374,10 @@ public class CommonService {
     /**
      * 托运订单-新建订单
      * 承运订单-新建订单
-     * @param checkUnit 托运单位
-     * @param map   请求参数
-     * @param messageEnum   消息枚举
+     *
+     * @param checkUnit                托运单位
+     * @param map                      请求参数
+     * @param messageEnum              消息枚举
      * @param consignLogisticsOrderUrl 页面地址url
      */
     private void sendMessageNewLogisticsOrder(KwtLogisticsOrderUnit checkUnit, Map<String, Object> map, MessageEnum messageEnum, String consignLogisticsOrderUrl) {
@@ -400,16 +401,17 @@ public class CommonService {
 
     /**
      * 撤销托运
-     * @param consignUnit 托运订单
-     * @param carriageUnit 承运订单
-     * @param orderNo  物流订单
-     * @param createBy  创建人
-     * @param entId 当前单据企业id
-     * @param consignMessageEnum 托运单位使用的消息枚举
+     *
+     * @param consignUnit         托运订单
+     * @param carriageUnit        承运订单
+     * @param orderNo             物流订单
+     * @param createBy            创建人
+     * @param entId               当前单据企业id
+     * @param consignMessageEnum  托运单位使用的消息枚举
      * @param carriageMessageEnum 承运单位使用的消息枚举
      */
-    public void cancelLogisticsConsignment(KwtLogisticsOrderUnit consignUnit,KwtLogisticsOrderUnit carriageUnit ,String orderNo, Long createBy, Long entId,
-                                           MessageEnum consignMessageEnum,MessageEnum carriageMessageEnum) {
+    public void cancelLogisticsConsignment(KwtLogisticsOrderUnit consignUnit, KwtLogisticsOrderUnit carriageUnit, String orderNo, Long createBy, Long entId,
+                                           MessageEnum consignMessageEnum, MessageEnum carriageMessageEnum) {
         boolean flag = false;
         if (createBy.equals(consignUnit.getContactsId()) || createBy.equals(carriageUnit.getContactsId())) {
             flag = true;
@@ -417,9 +419,9 @@ public class CommonService {
         Map<String, Object> map = new HashMap<>(NumberConstant.SIXTEEN);
         map.put("orderNo", orderNo);
         if (flag && createBy.equals(consignUnit.getContactsId())) {
-            sendMessagePublicLogistics(consignUnit, carriageUnit, map,consignMessageEnum);
+            sendMessagePublicLogistics(consignUnit, carriageUnit, map, consignMessageEnum);
         } else if (flag && createBy.equals(carriageUnit.getContactsId())) {
-            sendMessagePublicLogistics(consignUnit, carriageUnit, map,carriageMessageEnum);
+            sendMessagePublicLogistics(consignUnit, carriageUnit, map, carriageMessageEnum);
         } else {
             UserCacheResDto userCacheResDto = remoteSystemService.queryUserCacheById(createBy);
             //给订单创建人发消息
@@ -435,8 +437,8 @@ public class CommonService {
                     .setMsgUrl(consignLogisticsOrderUrl)
                     .setUserInfos(userInfos)
                     .setCreateBy(LoginUserHolder.getUserId());
-            log.info(MessageEnum.getDesc(consignMessageEnum)+"-创建人:{}", JSON.toJSONString(msg));
-
+            log.info(MessageEnum.getDesc(consignMessageEnum) + "-创建人:{}", JSON.toJSONString(msg));
+            streamBridge.send("sckw-message", JSON.toJSONString(msg));
             sendMessagePublicLogistics(consignUnit, carriageUnit, map,consignMessageEnum);
         }
     }
@@ -444,16 +446,17 @@ public class CommonService {
 
     /**
      * 公共推送消息处理
-     * @param consignUnit 托运订单
-     * @param carriageUnit 承运订单
-     * @param orderNo  物流订单
-     * @param createBy  创建人
-     * @param entId 当前单据企业id
-     * @param consignMessageEnum 托运单位使用的消息枚举
+     *
+     * @param consignUnit         托运订单
+     * @param carriageUnit        承运订单
+     * @param orderNo             物流订单
+     * @param createBy            创建人
+     * @param entId               当前单据企业id
+     * @param consignMessageEnum  托运单位使用的消息枚举
      * @param carriageMessageEnum 承运单位使用的消息枚举
      */
-    public void publicLogisticsConsignmentPushMessage(KwtLogisticsOrderUnit consignUnit,KwtLogisticsOrderUnit carriageUnit ,String orderNo, Long createBy, Long entId,
-                                           MessageEnum consignMessageEnum,MessageEnum carriageMessageEnum) {
+    public void publicLogisticsConsignmentPushMessage(KwtLogisticsOrderUnit consignUnit, KwtLogisticsOrderUnit carriageUnit, String orderNo, Long createBy, Long entId,
+                                                      MessageEnum consignMessageEnum, MessageEnum carriageMessageEnum) {
         boolean flag = false;
         if (createBy.equals(consignUnit.getContactsId()) || createBy.equals(carriageUnit.getContactsId())) {
             flag = true;
@@ -461,9 +464,9 @@ public class CommonService {
         Map<String, Object> map = new HashMap<>(NumberConstant.SIXTEEN);
         map.put("orderNo", orderNo);
         if (flag && createBy.equals(consignUnit.getContactsId())) {
-            sendMessagePublicLogistics(consignUnit, carriageUnit, map,consignMessageEnum);
+            sendMessagePublicLogistics(consignUnit, carriageUnit, map, consignMessageEnum);
         } else if (flag && createBy.equals(carriageUnit.getContactsId())) {
-            sendMessagePublicLogistics(consignUnit, carriageUnit, map,carriageMessageEnum);
+            sendMessagePublicLogistics(consignUnit, carriageUnit, map, carriageMessageEnum);
         } else {
             UserCacheResDto userCacheResDto = remoteSystemService.queryUserCacheById(createBy);
             //给订单创建人发消息
@@ -479,14 +482,14 @@ public class CommonService {
                     .setMsgUrl(consignLogisticsOrderUrl)
                     .setUserInfos(userInfos)
                     .setCreateBy(LoginUserHolder.getUserId());
-            log.info(MessageEnum.getDesc(consignMessageEnum)+"-创建人:{}", JSON.toJSONString(msg));
+            log.info(MessageEnum.getDesc(consignMessageEnum) + "-创建人:{}", JSON.toJSONString(msg));
             streamBridge.send("sckw-message", JSON.toJSONString(msg));
 //            sendMessagePublicLogistics(consignUnit, carriageUnit, map,consignMessageEnum);
         }
     }
 
 
-    private void sendMessagePublicLogistics(KwtLogisticsOrderUnit consignUnit, KwtLogisticsOrderUnit carriageUnit, Map<String, Object> map,MessageEnum consignMessageEnum) {
+    private void sendMessagePublicLogistics(KwtLogisticsOrderUnit consignUnit, KwtLogisticsOrderUnit carriageUnit, Map<String, Object> map, MessageEnum consignMessageEnum) {
         //给业务联系人发消息[承运方]
         List<UserInfo> userInfoList = new ArrayList<>();
         UserInfo userInfo = new UserInfo();
@@ -500,7 +503,7 @@ public class CommonService {
                 .setMsgUrl(carriageLogisticsOrderUrl)
                 .setUserInfos(userInfoList)
                 .setCreateBy(LoginUserHolder.getUserId());
-        log.info(MessageEnum.getDesc(consignMessageEnum)+"-[承运方]-业务联系人:{}", JSON.toJSONString(sckwMessage));
+        log.info(MessageEnum.getDesc(consignMessageEnum) + "-[承运方]-业务联系人:{}", JSON.toJSONString(sckwMessage));
         streamBridge.send("sckw-message", JSON.toJSONString(sckwMessage));
 
 
@@ -517,7 +520,7 @@ public class CommonService {
                 .setMsgUrl(carriageLogisticsOrderUrl)
                 .setUserInfos(list)
                 .setCreateBy(LoginUserHolder.getUserId());
-        log.info(MessageEnum.getDesc(consignMessageEnum)+"-[托运方]-业务联系人:{}", JSON.toJSONString(message));
+        log.info(MessageEnum.getDesc(consignMessageEnum) + "-[托运方]-业务联系人:{}", JSON.toJSONString(message));
         streamBridge.send("sckw-message", JSON.toJSONString(message));
     }
 }

+ 133 - 8
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/ConsignOrderService.java

@@ -41,6 +41,7 @@ import com.sckw.system.api.model.dto.res.EntCacheResDto;
 import com.sckw.system.api.model.dto.res.SysDictResDto;
 import com.sckw.system.api.model.dto.res.UserCacheResDto;
 import com.sckw.transport.dao.*;
+import com.sckw.transport.enums.OrderTypeEnum;
 import com.sckw.transport.model.*;
 import com.sckw.transport.model.dto.*;
 import com.sckw.transport.model.param.AcceptCarriageOrderQuery;
@@ -61,6 +62,8 @@ import org.springframework.util.ObjectUtils;
 
 import java.math.BigDecimal;
 import java.text.DecimalFormat;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -786,7 +789,7 @@ public class ConsignOrderService {
         logisticsOrder.setUpdateBy(LoginUserHolder.getUserId());
         logisticsOrder.setIgnoreAmount(ignoreAmount);
         kwtLogisticsOrderMapper.updateById(logisticsOrder);
-        updateLogisticOrderTrack(logisticsOrder.getId(),LogisticsOrderEnum.HAVE_FINISHED,orderFinishDTO.getRemark());
+        updateLogisticOrderTrack(logisticsOrder.getId(), LogisticsOrderEnum.HAVE_FINISHED, orderFinishDTO.getRemark());
         //获取物流订单下的子单
         /**完结订单-对应物流订单下子订单都要进行完结*/
         List<KwtLogisticsOrder> kwtLogisticsOrders = kwtLogisticsOrderMapper.selectList(new LambdaQueryWrapper<KwtLogisticsOrder>()
@@ -899,15 +902,13 @@ public class ConsignOrderService {
     }
 
 
-
     /**
      * 修改物流表+新增物流状态记录
      *
      * @param lOrderId
      * @param logisticsOrderEnum
-
      */
-    private void updateLogisticOrderTrack(Long lOrderId,LogisticsOrderEnum logisticsOrderEnum,String remark) {
+    private void updateLogisticOrderTrack(Long lOrderId, LogisticsOrderEnum logisticsOrderEnum, String remark) {
         KwtLogisticsOrderTrack track = kwtLogisticsOrderTrackMapper.selectOne(new LambdaQueryWrapper<KwtLogisticsOrderTrack>()
                 .eq(KwtLogisticsOrderTrack::getLOrderId, lOrderId).eq(KwtLogisticsOrderTrack::getStatus, logisticsOrderEnum.getCode())
         );
@@ -1219,7 +1220,7 @@ public class ConsignOrderService {
         /**保存mongodb*/
         saveMongoDb(addOrderDTO, orderStatus, lOrderId, lOrderNo, infoResDto);
         /**消息主体*/
-        commonService.newLogisticsOrder(addOrderDTO,lOrderNo,LoginUserHolder.getUserId(),LoginUserHolder.getEntId());
+        commonService.newLogisticsOrder(addOrderDTO, lOrderNo, LoginUserHolder.getUserId(), LoginUserHolder.getEntId());
         return HttpResult.ok();
     }
 
@@ -1641,7 +1642,7 @@ public class ConsignOrderService {
         List<Long> longs = LoginUserHolder.getAuthUserIdList();
         longs.add(LoginUserHolder.getUserId());
         List<Long> longList = longs.stream().distinct().collect(Collectors.toList());
-        List<AcceptCarriageOrderVO> list = kwtLogisticsOrderMapper.selectLogisticsOrderList(query, orderList, type, entId,longList,longList);
+        List<AcceptCarriageOrderVO> list = kwtLogisticsOrderMapper.selectLogisticsOrderList(query, orderList, type, entId, longList, longList);
         PageInfo<AcceptCarriageOrderVO> pageInfo = new PageInfo<>(list);
         if (CollectionUtils.isEmpty(list)) {
             return PageRes.build(pageInfo, list);
@@ -1750,7 +1751,7 @@ public class ConsignOrderService {
         List<Long> longs = LoginUserHolder.getAuthUserIdList();
         longs.add(LoginUserHolder.getUserId());
         List<Long> longList = longs.stream().distinct().collect(Collectors.toList());
-        List<TableTops> list = kwtLogisticsOrderMapper.countLogisticsOrderListByStatus(query, orderList, type, entId,longList,longList);
+        List<TableTops> list = kwtLogisticsOrderMapper.countLogisticsOrderListByStatus(query, orderList, type, entId, longList, longList);
         List<TableTops> arrayList = new ArrayList<>();
         arrayList.addAll(list);
         /**补全数据状态不齐的情况*/
@@ -1844,7 +1845,7 @@ public class ConsignOrderService {
         List<Long> longs = LoginUserHolder.getAuthUserIdList();
         longs.add(LoginUserHolder.getUserId());
         List<Long> longList = longs.stream().distinct().collect(Collectors.toList());
-        List<ConsignOrderVO> list = kwtLogisticsOrderMapper.selectConsignLogisticsOrderList(query, orderList, type, entId,longList,longList);
+        List<ConsignOrderVO> list = kwtLogisticsOrderMapper.selectConsignLogisticsOrderList(query, orderList, type, entId, longList, longList);
         /**计费方式*/
         Map<String, String> chargingDictData = commonService.getDictData(DictTypeEnum.CHARGING_TYPE.getType());
         /**结算周期*/
@@ -1917,4 +1918,128 @@ public class ConsignOrderService {
         }
         return exportList;
     }
+
+    public HttpResult workbenchStatistics(String dateType) {
+        EntCacheResDto entCacheResDto = remoteSystemService.queryEntCacheById(LoginUserHolder.getEntId());
+        if (entCacheResDto == null) {
+            return HttpResult.ok(new StatisticsByOrderVO());
+        }
+        //周
+        if (String.valueOf(NumberConstant.ONE).equals(dateType)) {
+            //本周时间
+
+            //开始时间
+            String weekDateStart = DateUtil.getLastWeekDateStartToString(LocalDate.now(), 6);
+            //结束时间
+            String weekDateEnd = DateUtil.getLastWeekDateEndToString(0);
+            //环比上周
+            //开始时间
+            String lastWeekDateStart = DateUtil.getLastWeekDateStartToString(LocalDate.now(), 13);
+            //结束时间
+            String lastWeekDateEnd = DateUtil.getLastWeekDateEndToString(7);
+            return computeCompare(entCacheResDto.getId(), weekDateStart, weekDateEnd, lastWeekDateStart, lastWeekDateEnd);
+        } else if (String.valueOf(NumberConstant.TWO).equals(dateType)) {
+            //月
+            //开始时间
+            String monthDateStart = DateUtil.getBeforeMonthDateAndDaysStartToString(LocalDateTime.now(), 1, -1);
+            //结束时间
+            String monthDateEnd = DateUtil.getLastWeekDateEndToString(0);
+            //环比上月
+            //开始时间
+            String lastMonthDateStart = DateUtil.getBeforeMonthDateAndDaysStartToString(LocalDateTime.now(), 2, -1);
+            //结束时间
+            String lastMonthDateEnd = DateUtil.getBeforeMonthDateAndDaysEndToString(LocalDateTime.now(), 1, 0);
+            return computeCompare(entCacheResDto.getId(), monthDateStart, monthDateEnd, lastMonthDateStart, lastMonthDateEnd);
+        } else if (String.valueOf(NumberConstant.THREE).equals(dateType)) {
+            //年
+
+        } else {
+            HttpResult.error("统计纬度错误!");
+        }
+        return null;
+    }
+
+
+    /**
+     * 托运订单计算环比
+     *
+     * @param id                集团id
+     * @param weekDateStart     环比本次开始时间
+     * @param weekDateEnd       环比本次结束时间
+     * @param lastWeekDateStart 环比上次开始时间
+     * @param lastWeekDateEnd   环比上次结束时间
+     * @return
+     */
+    private HttpResult computeCompare(Long id, String weekDateStart, String weekDateEnd, String lastWeekDateStart, String lastWeekDateEnd) {
+        HttpResult httpResult = new HttpResult();
+        //本周
+        //排除掉不做统计中的数据
+        //获取完结的单据
+        List<Integer> statusList = new ArrayList<>();
+        statusList.add(LogisticsOrderEnum.HAVE_FINISHED.getCode());
+        statusList.add(LogisticsOrderEnum.HAVE_RECONCILED.getCode());
+        statusList.add(LogisticsOrderEnum.HAVE_ALREADY_SETTLED.getCode());
+        StatisticsByOrderVO statistics = kwtLogisticsOrderMapper.selectAcceptCarriageFinishOrder(statusList, weekDateStart, weekDateEnd, id, OrderTypeEnum.CONSIGN_ORDER.getType());
+        //获取完结中的单据
+        statusList.clear();
+        statusList.add(LogisticsOrderEnum.TO_BE_PLANNED.getCode());
+        statusList.add(LogisticsOrderEnum.PENDING_ORDER.getCode());
+        statusList.add(LogisticsOrderEnum.WAIT_DELIVERY.getCode());
+        statusList.add(LogisticsOrderEnum.IN_TRANSIT.getCode());
+        StatisticsByOrderVO statisticsByOrderVO = kwtLogisticsOrderMapper.selectAcceptCarriageAwaitFinishOrder(statusList, weekDateStart, weekDateEnd, id, OrderTypeEnum.CONSIGN_ORDER.getType());
+        //全部的未履约量
+        BigDecimal waitingAmount = statistics.getWaitingAmount().add(statisticsByOrderVO.getWaitingAmount());
+        BigDecimal amount = statistics.getAmount().add(statisticsByOrderVO.getAmount());
+        BigDecimal entrustAmount = statistics.getEntrustAmount().add(statisticsByOrderVO.getEntrustAmount());
+        BigDecimal subcontractAmount = statistics.getSubcontractAmount().add(statisticsByOrderVO.getSubcontractAmount());
+        BigDecimal totalPrice = statistics.getTotalPrice().add(statisticsByOrderVO.getTotalPrice());
+
+
+        StatisticsByOrderVO vo = new StatisticsByOrderVO();
+        vo.setWaitingAmount(waitingAmount);
+        vo.setAmount(amount);
+        vo.setEntrustAmount(entrustAmount);
+        vo.setSubcontractAmount(subcontractAmount);
+        vo.setTotalPrice(totalPrice);
+
+        //上周
+
+        //获取完结的单据
+        statusList.clear();
+        statusList.add(LogisticsOrderEnum.HAVE_FINISHED.getCode());
+        statusList.add(LogisticsOrderEnum.HAVE_RECONCILED.getCode());
+        statusList.add(LogisticsOrderEnum.HAVE_ALREADY_SETTLED.getCode());
+        StatisticsByOrderVO lastStatistics = kwtLogisticsOrderMapper.selectAcceptCarriageFinishOrder(statusList, lastWeekDateStart, lastWeekDateEnd, id, OrderTypeEnum.CONSIGN_ORDER.getType());
+        //获取完结中的单据
+        statusList.clear();
+        statusList.add(LogisticsOrderEnum.TO_BE_PLANNED.getCode());
+        statusList.add(LogisticsOrderEnum.PENDING_ORDER.getCode());
+        statusList.add(LogisticsOrderEnum.WAIT_DELIVERY.getCode());
+        statusList.add(LogisticsOrderEnum.IN_TRANSIT.getCode());
+        StatisticsByOrderVO lastStatisticsByOrderVO = kwtLogisticsOrderMapper.selectAcceptCarriageAwaitFinishOrder(statusList, lastWeekDateStart, lastWeekDateEnd, id, OrderTypeEnum.CONSIGN_ORDER.getType());
+        //全部的未履约量
+        BigDecimal lastWaitingAmount = lastStatistics.getWaitingAmount().add(lastStatisticsByOrderVO.getWaitingAmount());
+        //环比计算
+        BigDecimal chainRatio = new BigDecimal("0.00");
+        Integer flag = 1;
+        if (waitingAmount.compareTo(new BigDecimal("0.00")) == 0
+                && lastWaitingAmount.compareTo(new BigDecimal("0.00")) == 0) {
+            chainRatio = new BigDecimal("0.00");
+        } else if (waitingAmount.compareTo(new BigDecimal("0.00")) == 0) {
+            chainRatio = chainRatio.subtract(new BigDecimal("100.00"));
+            flag = 2;
+        } else if (lastWaitingAmount.compareTo(new BigDecimal("0.00")) == 0) {
+            chainRatio = new BigDecimal("100.00").subtract(chainRatio);
+        } else {
+            chainRatio = (waitingAmount.subtract(lastWaitingAmount)).divide(lastWaitingAmount,NumberConstant.SIX, BigDecimal.ROUND_HALF_UP)
+                    .multiply(new BigDecimal("100.00")).setScale(NumberConstant.TWO, BigDecimal.ROUND_HALF_UP);
+        }
+        if (chainRatio.compareTo(new BigDecimal("0.00")) == -1) {
+            flag = 2;
+        }
+        vo.setFlag(flag);
+        vo.setChainRatio(chainRatio.abs() + "%");
+        httpResult.setData(vo);
+        return httpResult;
+    }
 }

+ 6 - 6
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/LogisticsConsignmentService.java

@@ -1083,15 +1083,15 @@ public class LogisticsConsignmentService {
                 //托运
                 KwtLogisticsOrderUnit consignUnit = kwtLogisticsOrderUnitMapper.selectOne(
                         new LambdaQueryWrapper<KwtLogisticsOrderUnit>()
-                                .eq(KwtLogisticsOrderUnit::getLOrderId,s)
+                                .eq(KwtLogisticsOrderUnit::getLOrderId,kwtLogisticsOrder.getId())
                                 .eq(KwtLogisticsOrderUnit::getUnitType, NumberConstant.ONE));
                 //承运
                 KwtLogisticsOrderUnit carriageUnit = kwtLogisticsOrderUnitMapper.selectOne(
                         new LambdaQueryWrapper<KwtLogisticsOrderUnit>()
-                                .eq(KwtLogisticsOrderUnit::getLOrderId,s)
+                                .eq(KwtLogisticsOrderUnit::getLOrderId,kwtLogisticsOrder.getId())
                                 .eq(KwtLogisticsOrderUnit::getUnitType, NumberConstant.TWO));
-                commonService.cancelLogisticsConsignment(consignUnit,carriageUnit,logisticsOrder.getLOrderNo(),logisticsOrder.getCreateBy(),
-                        logisticsOrder.getEntId(), MessageEnum.CANCELLATION_LOGISTICS,MessageEnum.CARRIAGE_CANCELLATION_LOGISTICS);
+                commonService.cancelLogisticsConsignment(consignUnit,carriageUnit,kwtLogisticsOrder.getLOrderNo(),kwtLogisticsOrder.getCreateBy(),
+                        kwtLogisticsOrder.getEntId(), MessageEnum.CANCELLATION_LOGISTICS,MessageEnum.CARRIAGE_CANCELLATION_LOGISTICS);
             } else {
                 result.setMsg("操作失败:" + httpResult.getMsg());
                 result.setCode(HttpStatus.GLOBAL_EXCEPTION_CODE);
@@ -1184,8 +1184,8 @@ public class LogisticsConsignmentService {
                         new LambdaQueryWrapper<KwtLogisticsOrderUnit>()
                                 .eq(KwtLogisticsOrderUnit::getLOrderId,id)
                                 .eq(KwtLogisticsOrderUnit::getUnitType, NumberConstant.TWO));
-                commonService.cancelLogisticsConsignment(consignUnit,carriageUnit,logisticsOrder.getLOrderNo(),logisticsOrder.getCreateBy(),
-                        logisticsOrder.getEntId(), MessageEnum.CANCELLATION_LOGISTICS,MessageEnum.CARRIAGE_CANCELLATION_LOGISTICS);
+                commonService.cancelLogisticsConsignment(consignUnit,carriageUnit,kwtLogisticsOrder.getLOrderNo(),kwtLogisticsOrder.getCreateBy(),
+                        kwtLogisticsOrder.getEntId(), MessageEnum.CANCELLATION_LOGISTICS,MessageEnum.CARRIAGE_CANCELLATION_LOGISTICS);
             } else {
                 result.setCode(HttpStatus.GLOBAL_EXCEPTION_CODE);
                 result.setMsg("操作失败:" + httpResult.getMsg());

+ 135 - 17
sckw-modules/sckw-transport/src/main/resources/mapper/KwtLogisticsOrderMapper.xml

@@ -964,8 +964,6 @@
     </select>
 
 
-
-
     <select id="selectManagementLogisticsOrderList" resultType="com.sckw.transport.model.vo.ManagementLogsiticsOrderVO">
         SELECT
         <include refid="Query_Column_List">
@@ -1522,30 +1520,150 @@
     </select>
 
     <select id="statisticsLogistics" resultType="java.lang.Long">
-        SELECT
-            DISTINCT a.id
-        FROM
-            kwt_logistics_order a
-                LEFT JOIN kwt_logistics_order_unit b ON b.l_order_id = a.id
-        WHERE
-            a.del_flag = 0
+        SELECT DISTINCT a.id
+        FROM kwt_logistics_order a
+                 LEFT JOIN kwt_logistics_order_unit b ON b.l_order_id = a.id
+        WHERE a.del_flag = 0
           AND b.del_flag = 0
-          AND ( b.ent_id = #{topEntId} OR b.top_ent_id = #{topEntId} )
+          AND (b.ent_id = #{topEntId} OR b.top_ent_id = #{topEntId})
     </select>
 
     <select id="statisticsLogisticsByTopEntIdAndOrderStatus" resultType="java.lang.Integer">
         SELECT
-            count(DISTINCT a.id)
+        count(DISTINCT a.id)
         FROM
-            kwt_logistics_order a
-                LEFT JOIN kwt_logistics_order_unit b ON b.l_order_id = a.id
+        kwt_logistics_order a
+        LEFT JOIN kwt_logistics_order_unit b ON b.l_order_id = a.id
         WHERE
-            a.del_flag = 0
-          AND b.del_flag = 0
-          AND ( b.ent_id = #{topEntId} OR b.top_ent_id = #{topEntId} )
+        a.del_flag = 0
+        AND b.del_flag = 0
+        AND ( b.ent_id = #{topEntId} OR b.top_ent_id = #{topEntId} )
         And a.status in
-            <foreach collection="orderList" open="(" close=")" separator="," item="item">
+        <foreach collection="orderList" open="(" close=")" separator="," item="item">
+            #{item}
+        </foreach>
+    </select>
+
+    <select id="selectAcceptCarriageFinishOrder" resultType="com.sckw.transport.model.vo.StatisticsByOrderVO">
+        SELECT
+        IFNULL( SUM( t1.WaitingAmount ), 0 ) AS WaitingAmount ,
+        IFNULL( SUM( t1.amount ), 0 ) AS amount ,
+        IFNULL( SUM( t1.entrustAmount ), 0 ) AS entrustAmount ,
+        IFNULL( SUM( t1.subcontractAmount ), 0 ) AS subcontractAmount ,
+        IFNULL( SUM( t1.totalPrice ), 0 ) AS totalPrice
+        FROM
+        (
+        SELECT
+        ( a.amount - IFNULL(a.total_load_amount,0)) AS WaitingAmount,
+        a.amount,
+        a.entrust_amount AS entrustAmount,
+        a.subcontract_amount AS subcontractAmount,
+        a.price ,
+        a.amount * IFNULL(a.price,0) AS totalPrice
+        FROM
+        kwt_logistics_order a
+        LEFT JOIN kwt_logistics_order_unit b ON a.id = b.l_order_id
+        AND a.del_flag = 0
+        AND b.del_flag = 0
+        WHERE
+        b.unit_type = #{unitType}
+        <if test="topId != null and topId !=''">
+            and b.top_ent_id = #{topId}
+        </if>
+        <if test="statusList != null and statusList.size()>0">
+            and a.`status` IN
+            <foreach collection="statusList" item="item" separator="," open="(" close=")">
                 #{item}
             </foreach>
+        </if>
+        <if test="dateStart != null and dateStart != ''">
+            and a.create_time &gt;= #{dateStart,jdbcType=TIMESTAMP}
+        </if>
+        <if test="dateEnd != null and dateEnd != ''">
+            and a.create_time &lt;= #{dateEnd,jdbcType=TIMESTAMP}
+        </if>
+        ) t1
+    </select>
+
+    <select id="selectStatisticsByOrder" resultType="com.sckw.transport.model.vo.StatisticsByOrderVO">
+        SELECT
+        IFNULL( SUM( t1.WaitingAmount ), 0 ) AS WaitingAmount ,
+        IFNULL( SUM( t1.amount ), 0 ) AS amount ,
+        IFNULL( SUM( t1.entrustAmount ), 0 ) AS entrustAmount ,
+        IFNULL( SUM( t1.subcontractAmount ), 0 ) AS subcontractAmount ,
+        IFNULL( SUM( t1.totalPrice ), 0 ) AS totalPrice
+        FROM
+        (
+        SELECT
+        ( a.amount - a.entrust_amount - a.subcontract_amount ) AS WaitingAmount,
+        a.amount,
+        a.entrust_amount AS entrustAmount,
+        a.subcontract_amount AS subcontractAmount,
+        a.price ,
+        a.amount * IFNULL(a.price,0) AS totalPrice
+        FROM
+        kwt_logistics_order a
+        LEFT JOIN kwt_logistics_order_unit b ON a.id = b.l_order_id
+        AND a.del_flag = 0
+        AND b.del_flag = 0
+        WHERE
+        b.unit_type =  #{unitType}
+        <if test="topId != null and topId !=''">
+            and b.top_ent_id = #{topId}
+        </if>
+        <if test="statusList != null and statusList.size()>0">
+            and a.`status` IN
+            <foreach collection="statusList" item="item" separator="," open="(" close=")">
+                #{item}
+            </foreach>
+        </if>
+        <if test="dateStart != null and dateStart != ''">
+            and a.create_time &gt;= #{dateStart,jdbcType=TIMESTAMP}
+        </if>
+        <if test="dateEnd != null and dateEnd != ''">
+            and a.create_time &lt;= #{dateEnd,jdbcType=TIMESTAMP}
+        </if>
+        ) t1
+    </select>
+
+    <select id="selectAcceptCarriageAwaitFinishOrder" resultType="com.sckw.transport.model.vo.StatisticsByOrderVO">
+        SELECT
+        IFNULL( SUM( t1.WaitingAmount ), 0 ) AS WaitingAmount ,
+        IFNULL( SUM( t1.amount ), 0 ) AS amount ,
+        IFNULL( SUM( t1.entrustAmount ), 0 ) AS entrustAmount ,
+        IFNULL( SUM( t1.subcontractAmount ), 0 ) AS subcontractAmount ,
+        IFNULL( SUM( t1.totalPrice ), 0 ) AS totalPrice
+        FROM
+        (
+        SELECT
+        ( a.amount - a.entrust_amount - a.subcontract_amount) AS WaitingAmount,
+        a.amount,
+        a.entrust_amount AS entrustAmount,
+        a.subcontract_amount AS subcontractAmount,
+        a.price ,
+        a.amount * IFNULL(a.price,0) AS totalPrice
+        FROM
+        kwt_logistics_order a
+        LEFT JOIN kwt_logistics_order_unit b ON a.id = b.l_order_id
+        AND a.del_flag = 0
+        AND b.del_flag = 0
+        WHERE
+        b.unit_type = #{unitType}
+        <if test="topId != null and topId !=''">
+            and b.top_ent_id = #{topId}
+        </if>
+        <if test="statusList != null and statusList.size()>0">
+            and a.`status` IN
+            <foreach collection="statusList" item="item" separator="," open="(" close=")">
+                #{item}
+            </foreach>
+        </if>
+        <if test="dateStart != null and dateStart != ''">
+            and a.create_time &gt;= #{dateStart,jdbcType=TIMESTAMP}
+        </if>
+        <if test="dateEnd != null and dateEnd != ''">
+            and a.create_time &lt;= #{dateEnd,jdbcType=TIMESTAMP}
+        </if>
+        ) t1
     </select>
 </mapper>