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

修改工作台承运业务
修改工作台托运业务

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

+ 201 - 0
sckw-modules/sckw-payment/src/main/resources/bootstrap-lfdc.yml

@@ -0,0 +1,201 @@
+spring:
+  cloud:
+    nacos:
+      discovery:
+        # 服务注册地址
+        server-addr: 10.10.10.230:8848
+        # 命名空间
+        namespace: sckw_lfdc
+        # 共享配置
+        group: sckw-service-platform
+      config:
+        # 配置中心地址
+        server-addr: 10.10.10.230:8848
+        # 配置文件格式
+        file-extension: yaml
+        # 命名空间
+        namespace: sckw_lfdc
+        # 共享配置
+        group: sckw-service-platform
+        #可以读多个配置文件  需要在同一个命名空间下面可以是不同的组
+        extension-configs:
+          - dataId: sckw-common.yml
+            group: sckw-service-platform
+            refresh: true
+#spring:
+#  rabbitmq:
+#    username: admin
+#    password: admin
+#    host: 10.10.10.138
+#    port: 5672
+#    virtual-host: /
+#  cloud:
+#    nacos:
+#      discovery:
+#        # 服务注册地址
+##        server-addr: 47.108.162.14:8848
+#        server-addr: 127.0.0.1:8848
+#        # 命名空间
+#        namespace: sckw-service-platform-dev
+#        # nacos用户名
+#        username: nacos
+#        # nacos密码
+#        password: nacos
+#        # 共享配置
+#        group: sckw-service-platform
+#        # 权重 1-100 数值越大权重越大分配的流量就越大,通常结合权重负载均衡策略
+#      #        weight: 100
+#      config:
+#        # 配置中心地址
+##        server-addr: 47.108.162.14:8848
+#        server-addr: 127.0.0.1:8848
+#        # 配置文件格式
+#        file-extension: yaml
+#        # 命名空间
+#        namespace: sckw-service-platform-dev
+#        # 共享配置
+#        group: sckw-service-platform
+#        enabled: true
+#    stream:
+#      bindings:
+#        sckwSms-out-0:
+#          destination: sckw-sms
+#          content-type: application/json
+#          default-binder: defaultRabbit
+#          group: sckw
+#        sckwMessage-out-0:
+#          destination: sckw-message
+#          content-type: application/json
+#          default-binder: defaultRabbit
+#          group: sckw
+#      binders:
+#        defaultRabbit:
+#          type: rabbit
+#          environment:
+#            spring:
+#              rabbitmq:
+#                virtual-host: /
+#                host: 39.104.134.114
+#                port: 5672
+#                username: wph
+#                password: Yy123...
+#    # sentinel降级配置
+#    sentinel:
+#      transport:
+#        client-ip: ${spring.cloud.client.ip-address} # 获取本机IP地址
+#        port: 8719  #默认8719端口,如果被占用会向上扫描。
+#        #控制台地址
+#        #dashboard: 47.108.162.14:19527
+#        dashboard: 127.0.0.1:19527
+#      log:
+#        #日志路径
+#        dir: logs/sentinel
+#        # 默认将调用链路收敛,导致链路流控效果无效
+#        web-context-unify: false
+#        #持久化nacos配置中
+#      datasource:
+#        #sentinel-rule: # 唯一名称可自定义
+#        #限流
+#        flow:
+#          nacos:
+#            # 设置Nacos的连接地址、命名空间和Group ID
+#            namespace:  sckw-service-platform-dev
+#            server-addr:  ${spring.cloud.nacos.discovery.server-addr}
+#            # username: ${spring.cloud.nacos.discovery.username}
+#            # password: ${spring.cloud.nacos.discovery.password}
+#            # 设置Nacos中配置文件的命名规则
+#            #            data-id:  ${spring.application.name}-sentinel-flow-rules
+#            data-id:  sckw-file-sentinel-flow-rules
+#            group-id: SENTINEL_GROUP
+#            data-type: json
+#            # 必填的重要字段,指定当前规则类型是"限流"
+#            rule-type: flow
+#        #熔断
+#        degrade:
+#          nacos:
+#            namespace:  sckw-service-platform-dev
+#            server-addr: ${spring.cloud.nacos.discovery.server-addr}
+#            #data-id: ${spring.application.name}-sentinel-degrade-rules
+#            data-id: sckw-file-sentinel-degrade-rules
+#            group-id: SENTINEL_GROUP
+#            #熔断
+#            rule-type: degrade
+#      #取消慢加载
+#      eager: true
+#  datasource:
+#    dynamic:
+#      seata: true
+##sfs:
+##  nacos:
+##    server-addr: 127.0.0.1:8848
+##    namespace: 967df0d8-156b-441a-a5ab-615b4a865168
+##    group: MY_GROUP
+##
+##    nacos:
+##      server-addr: ${sfs.nacos.server-addr}
+##      namespace: ${sfs.nacos.namespace}
+##      group: ${sfs.nacos.group}
+#
+##seata:
+##  # seata 服务分组,要与服务端nacos-config.txt中service.vgroup_mapping的后缀对应
+##  # 事务分组名称,要和服务端对应
+##  tx-service-group: sckw-transport-seata-service-group
+##  service:
+##    vgroup-mapping:
+##      # key是事务分组名称 value要和服务端的机房名称保持一致
+##      sckw-transport-seata-service-group: default
+##  registry:
+##    # 指定nacos作为注册中心
+##    type: nacos
+##    nacos:
+##      server-addr: ${spring.cloud.nacos.discovery.server-addr}
+##      #server-addr: 47.108.162.14:8848
+##      namespace: ${spring.cloud.nacos.discovery.namespace}
+##      #      group: SEATA_GROUP
+##      group: ${spring.cloud.nacos.discovery.group}
+##  config:
+##    # 指定nacos作为配置中心
+##    type: nacos
+##    nacos:
+##      server-addr: ${spring.cloud.nacos.discovery.server-addr}
+##      #server-addr: 47.108.162.14:8848
+##      namespace: ${spring.cloud.nacos.discovery.namespace}
+##      group: ${spring.cloud.nacos.discovery.group}
+##  application-id: ${spring.application.name}
+##  #  当前不生效,使用驼峰
+##  enabled: true
+##  #  enable-auto-data-source-proxy: false
+##  enableAutoDataSourceProxy: false
+##  application-id: sckw-seata-file
+## 支持feign对sentinel支持
+##feign:
+##  sentinel:
+##    enabled: true
+#
+#dubbo:
+#  application:
+#    # 此处没有延用spring.application.name是因为当前项目本身也会注册到nacos中,如果dubbo也延用相同的名称,在nacos服务里会看到注册的producer-server服务数为2
+#    name: transport-dubbo-server
+#  protocol:
+#    name: dubbo
+#    port: -1
+#    prefer-serialization: java
+#  registry:
+#    # 配置dubbo的注册中心为nacos
+#    address: nacos://${spring.cloud.nacos.discovery.server-addr}
+#    group: ${spring.cloud.nacos.config.group}
+#    protocol: nacos
+#    #use-as-config-center: false
+#    #use-as-metadata-center: false
+#aliyun:
+#  oss:
+#    endpoint: oss-cn-chengdu.aliyuncs.com
+#    accessKeyId: LTAI5tPEbubCGq5Rdwygbz4Q
+#    secret: 7mQLWMaBJeZPRV1SRGogctYGXwppjQ
+#    bucket: kaiwu-saas
+#links:
+#isBindManyRole:
+#mybatis-plus:
+#  configuration:
+#    # 是否将sql打印到控制面板(该配置会将sql语句和查询的结果都打印到控制台)
+#    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

+ 5 - 0
sckw-modules/sckw-transport/pom.xml

@@ -65,6 +65,11 @@
             <version>1.0.0</version>
         </dependency>
 
+        <dependency>
+            <groupId>com.sckw</groupId>
+            <artifactId>sckw-payment-api</artifactId>
+        </dependency>
+
         <dependency>
             <groupId>com.sckw</groupId>
             <artifactId>sckw-common-seata</artifactId>

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

@@ -386,10 +386,10 @@ public class AcceptCarriageOrderController {
 
     /**
      * 工作台-承运业务统计
-     *
+     * @param dateType 1代表周 2代表月
      * @return
      */
-    @RequestMapping(value = "/workbenchStatistics", method = RequestMethod.GET)
+    @RequestMapping(value = "/workbenchStatisticsByAcceptCarriage", method = RequestMethod.GET)
     public HttpResult workbenchStatistics(@RequestParam("dateType") @NotBlank(message = "类型不能为空") String dateType) {
         log.info("工作台-承运业务统计 {}", dateType);
         try {

+ 39 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/StatisticsAmountVO.java

@@ -0,0 +1,39 @@
+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 工作台-统计承运量
+ * @date 2023-09-18 18:09:06
+ */
+@Data
+public class StatisticsAmountVO implements Serializable {
+    /**
+     * 承运量/托运量
+     */
+    @JsonProperty("amount")
+    private BigDecimal amount;
+
+    /**
+     * 环比
+     */
+    @JsonProperty("chainRatio")
+    private String chainRatio;
+
+    /**
+     * 1 增长 2下降
+     */
+    @JsonProperty("flag")
+    private Integer flag;
+
+    /**
+     * 环比上次承运量
+     */
+    @JsonProperty("lastAmount")
+    private BigDecimal lastAmount;
+}

+ 34 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/StatisticsMoneyVO.java

@@ -0,0 +1,34 @@
+package com.sckw.transport.model.vo;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * @author lfdc
+ * @description 工作台-统计未履约量
+ * @date 2023-09-18 18:09:06
+ */
+@Data
+public class StatisticsMoneyVO implements Serializable {
+    @Serial
+    private static final long serialVersionUID = 339614434734438926L;
+    /**
+     * 当月/周 金额
+     */
+    private String current;
+    /**
+     * 上月/周 金额
+     */
+    private String before;
+    /**
+     * 环比
+     */
+    private String chainRatio;
+    /**
+     * 1-增长 2-下降
+     */
+    private Integer flag;
+
+}

+ 18 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/StatisticsResultVO.java

@@ -0,0 +1,18 @@
+package com.sckw.transport.model.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author lfdc
+ * @description 工作台-统计承运量
+ * @date 2023-09-18 18:09:06
+ */
+@Data
+public class StatisticsResultVO implements Serializable {
+   private StatisticsWaitingAmountVO waitingAmountVO;
+   private StatisticsAmountVO amountVO;
+   private StatisticsTotalPriceVO totalPriceVO;
+   private StatisticsMoneyVO moneyVO;
+}

+ 39 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/StatisticsTotalPriceVO.java

@@ -0,0 +1,39 @@
+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 工作台-总金额(费用)
+ * @date 2023-09-18 18:09:06
+ */
+@Data
+public class StatisticsTotalPriceVO implements Serializable {
+    /**
+     * 承运收入/托运费用
+     */
+    @JsonProperty("totalPrice")
+    private BigDecimal totalPrice;
+
+    /**
+     * 环比
+     */
+    @JsonProperty("chainRatio")
+    private String chainRatio;
+
+    /**
+     * 1 增长 2下降
+     */
+    @JsonProperty("flag")
+    private Integer flag;
+
+    /**
+     * 环比上次待分配量
+     */
+    @JsonProperty("lastTotalPrice")
+    private BigDecimal lastTotalPrice;
+}

+ 39 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/StatisticsWaitingAmountVO.java

@@ -0,0 +1,39 @@
+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 工作台-统计未履约量
+ * @date 2023-09-18 18:09:06
+ */
+@Data
+public class StatisticsWaitingAmountVO implements Serializable {
+    /**
+     * 待分配量
+     */
+    @JsonProperty("waitingAmount")
+    private BigDecimal waitingAmount;
+
+    /**
+     * 环比
+     */
+    @JsonProperty("chainRatio")
+    private String chainRatio;
+
+    /**
+     * 1 增长 2下降
+     */
+    @JsonProperty("flag")
+    private Integer flag;
+
+    /**
+     * 环比上次待分配量
+     */
+    @JsonProperty("lastWaitingAmount")
+    private BigDecimal lastWaitingAmount;
+}

+ 93 - 7
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/AcceptCarriageOrderService.java

@@ -38,6 +38,8 @@ import com.sckw.order.api.model.CompleteLogisticsOrderParam;
 import com.sckw.order.api.model.CreateOrCancelLogisticsOrderParam;
 import com.sckw.order.api.model.OrderDetailRes;
 import com.sckw.order.api.model.UnitInfoDetailRes;
+import com.sckw.payment.api.dubbo.PaymentDubboService;
+import com.sckw.payment.api.model.dto.SettlementMoney;
 import com.sckw.product.api.dubbo.GoodsInfoService;
 import com.sckw.product.api.model.KwpGoods;
 import com.sckw.stream.enums.MessageEnum;
@@ -102,6 +104,9 @@ public class AcceptCarriageOrderService {
     @DubboReference(version = "1.0.0", group = "design", check = false, timeout = 6000)
     RemoteManageService remoteManageService;
 
+    @DubboReference(version = "1.0.0", group = "design", check = false, timeout = 6000)
+    PaymentDubboService paymentDubboService;
+
     @Autowired
     public CommonService commonService;
 
@@ -2671,7 +2676,7 @@ public class AcceptCarriageOrderService {
             String lastWeekDateStart = DateUtil.getLastWeekDateStartToString(LocalDate.now(), 13);
             //结束时间
             String lastWeekDateEnd = DateUtil.getLastWeekDateEndToString(7);
-            return computeCompare(id, weekDateStart, weekDateEnd, lastWeekDateStart, lastWeekDateEnd);
+            return computeCompare(id, weekDateStart, weekDateEnd, lastWeekDateStart, lastWeekDateEnd, 2);
         } else if (String.valueOf(NumberConstant.TWO).equals(dateType)) {
 
             //本月
@@ -2688,7 +2693,7 @@ public class AcceptCarriageOrderService {
             String lastMonthDateStart = DateUtil.getBeforeMonthDateAndDaysStartToString(LocalDateTime.now(), 2, -1);
             //结束时间
             String lastMonthDateEnd = DateUtil.getBeforeMonthDateAndDaysEndToString(LocalDateTime.now(), 1, 0);
-            return computeCompare(id, monthDateStart, monthDateEnd, lastMonthDateStart, lastMonthDateEnd);
+            return computeCompare(id, monthDateStart, monthDateEnd, lastMonthDateStart, lastMonthDateEnd, 3);
         } else if (String.valueOf(NumberConstant.THREE).equals(dateType)) {
             //年
             // 获取当前日期
@@ -2714,8 +2719,9 @@ public class AcceptCarriageOrderService {
      * @param lastWeekDateEnd   环比上次结束时间
      * @return
      */
-    private HttpResult computeCompare(Long id, String weekDateStart, String weekDateEnd, String lastWeekDateStart, String lastWeekDateEnd) {
+    private HttpResult computeCompare(Long id, String weekDateStart, String weekDateEnd, String lastWeekDateStart, String lastWeekDateEnd, Integer dateType) {
         HttpResult httpResult = new HttpResult();
+        StatisticsResultVO resultVO = new StatisticsResultVO();
         //获取完结的单据-排除掉不做统计中的数据
         List<Integer> statusList = new ArrayList<>();
         statusList.add(LogisticsOrderEnum.TO_BE_PLANNED.getCode());
@@ -2743,6 +2749,83 @@ public class AcceptCarriageOrderService {
         vo.setLastEntrustAmount(lastWeek.getEntrustAmount());
         vo.setLastSubcontractAmount(lastWeek.getSubcontractAmount());
         vo.setLastTotalPrice(lastWeek.getTotalPrice());
+
+        /**计算待承运量*/
+        computeCompareWaitingAmount(resultVO,currentWeek,lastWeek);
+
+        /**承运量*/
+        computeCompareAmount(resultVO,currentWeek,lastWeek);
+
+        /**总金额(费用)*/
+        computeCompareTotalPrice(resultVO,currentWeek,lastWeek);
+
+        /**待处理的金额*/
+        SettlementMoney settlementMoney = paymentDubboService.countCarrier(id, dateType);
+        StatisticsMoneyVO moneyVO = new StatisticsMoneyVO();
+        moneyVO.setCurrent(settlementMoney.getCurrent());
+        moneyVO.setBefore(settlementMoney.getBefore());
+        moneyVO.setChainRatio(settlementMoney.getPercent());
+        moneyVO.setFlag(settlementMoney.getFlag());
+        resultVO.setMoneyVO(moneyVO);
+        httpResult.setData(resultVO);
+        return httpResult;
+    }
+
+    private void computeCompareTotalPrice(StatisticsResultVO resultVO, StatisticsByOrderVO currentWeek, StatisticsByOrderVO lastWeek) {
+        Integer flag = 1;
+        BigDecimal chainRatio = new BigDecimal("0.00");
+        if (currentWeek.getTotalPrice().compareTo(new BigDecimal("0.00")) == 0
+                && lastWeek.getTotalPrice().compareTo(new BigDecimal("0.00")) == 0) {
+            chainRatio = new BigDecimal("0.00");
+        } else if (currentWeek.getTotalPrice().compareTo(new BigDecimal("0.00")) == 0) {
+            chainRatio = chainRatio.subtract(new BigDecimal("100.00"));
+            flag = 2;
+        } else if (lastWeek.getTotalPrice().compareTo(new BigDecimal("0.00")) == 0) {
+            chainRatio = new BigDecimal("100.00").subtract(chainRatio);
+        } else {
+            chainRatio = (currentWeek.getTotalPrice().subtract(lastWeek.getTotalPrice())).divide(lastWeek.getTotalPrice(), 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;
+        }
+        StatisticsTotalPriceVO priceVO = new StatisticsTotalPriceVO();
+        priceVO.setTotalPrice(currentWeek.getTotalPrice());
+        priceVO.setChainRatio(chainRatio.abs() + "%");
+        priceVO.setFlag(flag);
+        priceVO.setLastTotalPrice(lastWeek.getTotalPrice());
+        resultVO.setTotalPriceVO(priceVO);
+    }
+
+    private void computeCompareAmount(StatisticsResultVO resultVO, StatisticsByOrderVO currentWeek, StatisticsByOrderVO lastWeek) {
+        Integer amountFlag = 1;
+        BigDecimal amountChainRatio = new BigDecimal("0.00");
+        if (currentWeek.getAmount().compareTo(new BigDecimal("0.00")) == 0
+                && lastWeek.getAmount().compareTo(new BigDecimal("0.00")) == 0) {
+            amountChainRatio = new BigDecimal("0.00");
+        } else if (currentWeek.getAmount().compareTo(new BigDecimal("0.00")) == 0) {
+            amountChainRatio = amountChainRatio.subtract(new BigDecimal("100.00"));
+            amountFlag = 2;
+        } else if (lastWeek.getAmount().compareTo(new BigDecimal("0.00")) == 0) {
+            amountChainRatio = new BigDecimal("100.00").subtract(amountChainRatio);
+        } else {
+            amountChainRatio = (currentWeek.getAmount().subtract(lastWeek.getAmount())).divide(lastWeek.getAmount(), NumberConstant.SIX, BigDecimal.ROUND_HALF_UP)
+                    .multiply(new BigDecimal("100.00")).setScale(NumberConstant.TWO, BigDecimal.ROUND_HALF_UP);
+        }
+        if (amountChainRatio.compareTo(new BigDecimal("0.00")) == -1) {
+            amountFlag = 2;
+        }
+
+        /**承运量*/
+        StatisticsAmountVO amountVO = new StatisticsAmountVO();
+        amountVO.setAmount(currentWeek.getAmount());
+        amountVO.setChainRatio(amountChainRatio.abs() + "%");
+        amountVO.setFlag(amountFlag);
+        amountVO.setLastAmount(lastWeek.getAmount());
+        resultVO.setAmountVO(amountVO);
+    }
+
+    private void computeCompareWaitingAmount(StatisticsResultVO resultVO,StatisticsByOrderVO currentWeek,StatisticsByOrderVO lastWeek) {
         Integer flag = 1;
         BigDecimal chainRatio = new BigDecimal("0.00");
         if (currentWeek.getWaitingAmount().compareTo(new BigDecimal("0.00")) == 0
@@ -2760,10 +2843,13 @@ public class AcceptCarriageOrderService {
         if (chainRatio.compareTo(new BigDecimal("0.00")) == -1) {
             flag = 2;
         }
-        vo.setFlag(flag);
-        vo.setChainRatio(chainRatio.abs() + "%");
-        httpResult.setData(vo);
-        return httpResult;
+        /**待分配量*/
+        StatisticsWaitingAmountVO waitingAmountVO = new StatisticsWaitingAmountVO();
+        waitingAmountVO.setWaitingAmount(currentWeek.getWaitingAmount());
+        waitingAmountVO.setChainRatio(chainRatio.abs() + "%");
+        waitingAmountVO.setFlag(flag);
+        waitingAmountVO.setLastWaitingAmount(lastWeek.getWaitingAmount());
+        resultVO.setWaitingAmountVO(waitingAmountVO);
     }
 
     /**

+ 114 - 32
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/ConsignOrderService.java

@@ -36,6 +36,8 @@ import com.sckw.order.api.dubbo.TradeOrderInfoService;
 import com.sckw.order.api.model.CompleteLogisticsOrderParam;
 import com.sckw.order.api.model.OrderDetailRes;
 import com.sckw.order.api.model.UnitInfoDetailRes;
+import com.sckw.payment.api.dubbo.PaymentDubboService;
+import com.sckw.payment.api.model.dto.SettlementMoney;
 import com.sckw.stream.model.SckwBusSum;
 import com.sckw.system.api.RemoteSystemService;
 import com.sckw.system.api.model.dto.res.AreaTreeFrontResDto;
@@ -99,6 +101,9 @@ public class ConsignOrderService {
     @DubboReference(version = "1.0.0", group = "design", check = false, timeout = 8000)
     RemoteFleetService fleetService;
 
+    @DubboReference(version = "1.0.0", group = "design", check = false, timeout = 6000)
+    PaymentDubboService paymentDubboService;
+
     @Autowired
     public CommonService commonService;
 
@@ -1965,7 +1970,7 @@ public class ConsignOrderService {
             String lastWeekDateStart = DateUtil.getLastWeekDateStartToString(LocalDate.now(), 13);
             //结束时间
             String lastWeekDateEnd = DateUtil.getLastWeekDateEndToString(7);
-            return computeCompare(entCacheResDto.getId(), weekDateStart, weekDateEnd, lastWeekDateStart, lastWeekDateEnd);
+            return computeCompare(entCacheResDto.getId(), weekDateStart, weekDateEnd, lastWeekDateStart, lastWeekDateEnd,2);
         } else if (String.valueOf(NumberConstant.TWO).equals(dateType)) {
             //月
             //开始时间
@@ -1977,7 +1982,7 @@ public class ConsignOrderService {
             String lastMonthDateStart = DateUtil.getBeforeMonthDateAndDaysStartToString(LocalDateTime.now(), 2, -1);
             //结束时间
             String lastMonthDateEnd = DateUtil.getBeforeMonthDateAndDaysEndToString(LocalDateTime.now(), 1, 0);
-            return computeCompare(entCacheResDto.getId(), monthDateStart, monthDateEnd, lastMonthDateStart, lastMonthDateEnd);
+            return computeCompare(entCacheResDto.getId(), monthDateStart, monthDateEnd, lastMonthDateStart, lastMonthDateEnd,3);
         } else if (String.valueOf(NumberConstant.THREE).equals(dateType)) {
             //年
 
@@ -1998,8 +2003,9 @@ public class ConsignOrderService {
      * @param lastWeekDateEnd   环比上次结束时间
      * @return
      */
-    private HttpResult computeCompare(Long id, String weekDateStart, String weekDateEnd, String lastWeekDateStart, String lastWeekDateEnd) {
+    private HttpResult computeCompare(Long id, String weekDateStart, String weekDateEnd, String lastWeekDateStart, String lastWeekDateEnd,Integer dateType) {
         HttpResult httpResult = new HttpResult();
+        StatisticsResultVO resultVO = new StatisticsResultVO();
         //本周
         //排除掉不做统计中的数据
         //获取完结的单据
@@ -2007,28 +2013,28 @@ public class ConsignOrderService {
         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());
+        StatisticsByOrderVO currentFinish = 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());
+        StatisticsByOrderVO currentFinishIng= 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());
+        BigDecimal waitingAmount = currentFinish.getWaitingAmount().add(currentFinishIng.getWaitingAmount());
+        BigDecimal amount = currentFinish.getAmount().add(currentFinishIng.getAmount());
+        BigDecimal entrustAmount = currentFinish.getEntrustAmount().add(currentFinishIng.getEntrustAmount());
+        BigDecimal subcontractAmount = currentFinish.getSubcontractAmount().add(currentFinishIng.getSubcontractAmount());
+        BigDecimal totalPrice = currentFinish.getTotalPrice().add(currentFinishIng.getTotalPrice());
 
 
-        StatisticsByOrderVO vo = new StatisticsByOrderVO();
-        vo.setWaitingAmount(waitingAmount);
-        vo.setAmount(amount);
-        vo.setEntrustAmount(entrustAmount);
-        vo.setSubcontractAmount(subcontractAmount);
-        vo.setTotalPrice(totalPrice);
+        StatisticsByOrderVO current = new StatisticsByOrderVO();
+        current.setWaitingAmount(waitingAmount);
+        current.setAmount(amount);
+        current.setEntrustAmount(entrustAmount);
+        current.setSubcontractAmount(subcontractAmount);
+        current.setTotalPrice(totalPrice);
 
         //上周
 
@@ -2052,37 +2058,113 @@ public class ConsignOrderService {
         BigDecimal lastSubcontractAmount = lastStatistics.getSubcontractAmount().add(lastStatisticsByOrderVO.getSubcontractAmount());
         BigDecimal lastTotalPrice = lastStatistics.getTotalPrice().add(lastStatisticsByOrderVO.getTotalPrice());
 
-        vo.setLastWaitingAmount(lastWaitingAmount);
-        vo.setLastAmount(lastAmount);
-        vo.setLastEntrustAmount(lastEntrustAmount);
-        vo.setLastSubcontractAmount(lastSubcontractAmount);
-        vo.setLastTotalPrice(lastTotalPrice);
+        StatisticsByOrderVO last = new StatisticsByOrderVO();
+        last.setWaitingAmount(lastWaitingAmount);
+        last.setAmount(lastAmount);
+        last.setEntrustAmount(lastEntrustAmount);
+        last.setSubcontractAmount(lastSubcontractAmount);
+        last.setTotalPrice(lastTotalPrice);
+
+        /**计算待承运量*/
+        computeCompareWaitingAmount(resultVO,current,last);
+
+        /**承运量*/
+        computeCompareAmount(resultVO,current,last);
+
+        /**总金额(费用)*/
+        computeCompareTotalPrice(resultVO,current,last);
+
+        /**待处理的金额*/
+        SettlementMoney settlementMoney = paymentDubboService.countShipper(id, dateType);
+        StatisticsMoneyVO moneyVO = new StatisticsMoneyVO();
+        moneyVO.setCurrent(settlementMoney.getCurrent());
+        moneyVO.setBefore(settlementMoney.getBefore());
+        moneyVO.setChainRatio(settlementMoney.getPercent());
+        moneyVO.setFlag(settlementMoney.getFlag());
+        resultVO.setMoneyVO(moneyVO);
+        httpResult.setData(resultVO);
+        return httpResult;
+    }
 
-        //环比计算
-        BigDecimal chainRatio = new BigDecimal("0.00");
+    private void computeCompareTotalPrice(StatisticsResultVO resultVO, StatisticsByOrderVO currentWeek, StatisticsByOrderVO lastWeek) {
         Integer flag = 1;
-        if (waitingAmount.compareTo(new BigDecimal("0.00")) == 0
-                && lastWaitingAmount.compareTo(new BigDecimal("0.00")) == 0) {
+        BigDecimal chainRatio = new BigDecimal("0.00");
+        if (currentWeek.getTotalPrice().compareTo(new BigDecimal("0.00")) == 0
+                && lastWeek.getTotalPrice().compareTo(new BigDecimal("0.00")) == 0) {
             chainRatio = new BigDecimal("0.00");
-        } else if (waitingAmount.compareTo(new BigDecimal("0.00")) == 0) {
+        } else if (currentWeek.getTotalPrice().compareTo(new BigDecimal("0.00")) == 0) {
             chainRatio = chainRatio.subtract(new BigDecimal("100.00"));
             flag = 2;
-        } else if (lastWaitingAmount.compareTo(new BigDecimal("0.00")) == 0) {
+        } else if (lastWeek.getTotalPrice().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)
+            chainRatio = (currentWeek.getTotalPrice().subtract(lastWeek.getTotalPrice())).divide(lastWeek.getTotalPrice(), 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;
+        StatisticsTotalPriceVO priceVO = new StatisticsTotalPriceVO();
+        priceVO.setTotalPrice(currentWeek.getTotalPrice());
+        priceVO.setChainRatio(chainRatio.abs() + "%");
+        priceVO.setFlag(flag);
+        priceVO.setLastTotalPrice(lastWeek.getTotalPrice());
+        resultVO.setTotalPriceVO(priceVO);
     }
 
+    private void computeCompareAmount(StatisticsResultVO resultVO, StatisticsByOrderVO currentWeek, StatisticsByOrderVO lastWeek) {
+        Integer amountFlag = 1;
+        BigDecimal amountChainRatio = new BigDecimal("0.00");
+        if (currentWeek.getAmount().compareTo(new BigDecimal("0.00")) == 0
+                && lastWeek.getAmount().compareTo(new BigDecimal("0.00")) == 0) {
+            amountChainRatio = new BigDecimal("0.00");
+        } else if (currentWeek.getAmount().compareTo(new BigDecimal("0.00")) == 0) {
+            amountChainRatio = amountChainRatio.subtract(new BigDecimal("100.00"));
+            amountFlag = 2;
+        } else if (lastWeek.getAmount().compareTo(new BigDecimal("0.00")) == 0) {
+            amountChainRatio = new BigDecimal("100.00").subtract(amountChainRatio);
+        } else {
+            amountChainRatio = (currentWeek.getAmount().subtract(lastWeek.getAmount())).divide(lastWeek.getAmount(), NumberConstant.SIX, BigDecimal.ROUND_HALF_UP)
+                    .multiply(new BigDecimal("100.00")).setScale(NumberConstant.TWO, BigDecimal.ROUND_HALF_UP);
+        }
+        if (amountChainRatio.compareTo(new BigDecimal("0.00")) == -1) {
+            amountFlag = 2;
+        }
 
+        /**承运量*/
+        StatisticsAmountVO amountVO = new StatisticsAmountVO();
+        amountVO.setAmount(currentWeek.getAmount());
+        amountVO.setChainRatio(amountChainRatio.abs() + "%");
+        amountVO.setFlag(amountFlag);
+        amountVO.setLastAmount(lastWeek.getAmount());
+        resultVO.setAmountVO(amountVO);
+    }
+    private void computeCompareWaitingAmount(StatisticsResultVO resultVO,StatisticsByOrderVO currentWeek,StatisticsByOrderVO lastWeek) {
+        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;
+        }
+        /**待分配量*/
+        StatisticsWaitingAmountVO waitingAmountVO = new StatisticsWaitingAmountVO();
+        waitingAmountVO.setWaitingAmount(currentWeek.getWaitingAmount());
+        waitingAmountVO.setChainRatio(chainRatio.abs() + "%");
+        waitingAmountVO.setFlag(flag);
+        waitingAmountVO.setLastWaitingAmount(lastWeek.getWaitingAmount());
+        resultVO.setWaitingAmountVO(waitingAmountVO);
+    }
     /**
      * 工作台-物流运输数据统计
      *