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

1.工作台首页统计查询
2.新增工具类
3.修复消息列表发送取值null

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

+ 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
  **/

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