18 Commits e4ccf04d87 ... d4b8cfff6a

Autor SHA1 Mensagem Data
  lengfaqiang d4b8cfff6a 1.托运订单设置停止接单查询-允许循环单和单趟的查询 1 ano atrás
  lengfaqiang ebe8662624 1.修改运单实体字段类型double->bigDecimal 1 ano atrás
  lengfaqiang b95f751dc8 1.设置停止接单逻辑修改 1 ano atrás
  lengfaqiang 77efa183c5 1.查询bugfix 1 ano atrás
  lengfaqiang 623bfa6bdd Merge remote-tracking branch 'origin/dev' into dev 1 ano atrás
  lengfaqiang 0031039baa 1.修改企业app查询统计接口 1 ano atrás
  zk 72817d11e1 1、4.2运营端接口; 1 ano atrás
  lengfaqiang bafc19efff Merge remote-tracking branch 'origin/dev' into dev 1 ano atrás
  lengfaqiang 2d56ac420d 自建物流订单去掉商品id校验 1 ano atrás
  zk 3cb16ec4c4 1、4.2接口调整; 1 ano atrás
  zk 2fc9a65055 1、4.2接口调整; 1 ano atrás
  lengfaqiang b60c31710c 修改分页工具类pageHelPerUtil 1 ano atrás
  zk a67c1d678d 1、4.2接口调整; 1 ano atrás
  lengfaqiang 65e4aa2e60 1.修复分包托运列表新增多装多卸地址处理 1 ano atrás
  zk ba56a0258f Merge remote-tracking branch 'origin/dev' into dev 1 ano atrás
  zk 6e240ff09c 1、4.2接口调整; 1 ano atrás
  lengfaqiang b9e286bdbe 1.修复分包托运地址管理bug 1 ano atrás
  lengfaqiang f2a9c9b52c 1.修复分包托运事务管理bug 1 ano atrás
33 arquivos alterados com 1020 adições e 552 exclusões
  1. 7 1
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/page/PageHelperUtil.java
  2. 1 2
      sckw-modules-api/sckw-transport-api/src/main/java/com/sckw/transport/api/dubbo/RemoteTransportLineFreightRateService.java
  3. 44 5
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/KwtWaybillOrderController.java
  4. 92 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/operate/ManagementWaybillOrderController.java
  5. 2 2
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/dao/KwtLogisticsOrderMapper.java
  6. 6 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/dao/KwtWaybillOrderSubtaskMapper.java
  7. 10 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/dao/KwtWaybillOrderTicketMapper.java
  8. 1 1
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/KwtWaybillOrderAddress.java
  9. 7 5
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/KwtWaybillOrderSubtask.java
  10. 71 290
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/dto/LogisticsConsignmentDto.java
  11. 100 86
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/dto/LogisticsOrderSubcontractDto.java
  12. 2 2
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/dto/SendCarEntrustDto.java
  13. 6 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/dto/WaybillOrderQueryDto.java
  14. 0 1
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/dto/WaybillOrderTicketV4Dto.java
  15. 24 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/SubcontractConsignmentVO.java
  16. 20 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/WaybillDetailVo.java
  17. 175 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/WaybillOrderExportVo.java
  18. 5 4
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/WaybillOrderSelectVo.java
  19. 11 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/WaybillSubtaskDetailVo.java
  20. 1 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/WaybillSubtaskSelectVo.java
  21. 4 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/WaybillTicketVO.java
  22. 85 16
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtAcceptCarriageOrderService.java
  23. 48 33
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtConsignOrderService.java
  24. 16 11
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtLogisticsOrderConsignmentService.java
  25. 1 1
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtTransportCommonService.java
  26. 45 38
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtWaybillOrderService.java
  27. 3 3
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtWaybillOrderSubtaskService.java
  28. 4 3
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtWaybillOrderTicketService.java
  29. 140 42
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtWaybillOrderV1Service.java
  30. 5 4
      sckw-modules/sckw-transport/src/main/resources/mapper/KwtLogisticsOrderMapper.xml
  31. 66 0
      sckw-modules/sckw-transport/src/main/resources/mapper/KwtWaybillOrderSubtaskMapper.xml
  32. 15 0
      sckw-modules/sckw-transport/src/main/resources/mapper/KwtWaybillOrderTicketMapper.xml
  33. 3 2
      sckw-modules/sckw-transport/src/main/resources/mapper/KwtWaybillOrderV1Mapper.xml

+ 7 - 1
sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/page/PageHelperUtil.java

@@ -8,6 +8,7 @@ import java.util.List;
 
 /**
  * MyBatis 分页查询助手
+ *
  * @author zk
  * @date Nov 24, 2018
  */
@@ -73,7 +74,12 @@ public class PageHelperUtil {
         pageResult.setPage(pageInfo.getPageNum());
         pageResult.setPageSize(pageInfo.getPageSize());
         pageResult.setSize(pageInfo.getTotal());
-        pageResult.setPages((int)(pageResult.getSize() + pageResult.getPageSize() - 1) / pageResult.getPageSize());
+//        pageResult.setPages((int)(pageResult.getSize() + pageResult.getPageSize() - 1) / pageResult.getPageSize());
+        if (pageResult.getPageSize() < 1) {
+            pageResult.setPages((int) ((pageResult.getSize() + pageResult.getPageSize()) < 1 ? 0 : (pageResult.getSize() + pageResult.getPageSize() - 1)));
+        }else {
+            pageResult.setPages((int) ((pageResult.getSize() + pageResult.getPageSize()) < 1 ? 0 : (pageResult.getSize() + pageResult.getPageSize() - 1)) / pageResult.getPageSize());
+        }
         pageResult.setList(pageInfo.getList());
         return pageResult;
     }

+ 1 - 2
sckw-modules-api/sckw-transport-api/src/main/java/com/sckw/transport/api/dubbo/RemoteTransportLineFreightRateService.java

@@ -6,8 +6,7 @@ import java.util.List;
  * @author lfdc
  * @version 1.0
  * @className RemoteTransportLineFreightRateService
- * @description 物流订单线路dubbo
- * @company sckw
+ * @description 物流订单线路
  * @date 2024-03-13 10:06:27
  */
 public interface RemoteTransportLineFreightRateService {

+ 44 - 5
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/KwtWaybillOrderController.java

@@ -1,9 +1,12 @@
 package com.sckw.transport.controller;
 
+import com.alibaba.excel.annotation.ExcelProperty;
 import com.alibaba.fastjson2.JSONObject;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
+import com.sckw.core.exception.CustomPromptException;
 import com.sckw.core.exception.SystemException;
+import com.sckw.core.model.constant.Global;
 import com.sckw.core.model.page.PageHelperUtil;
 import com.sckw.core.model.page.PageResult;
 import com.sckw.core.utils.CollectionUtils;
@@ -12,18 +15,25 @@ import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.core.web.context.LoginUserHolder;
 import com.sckw.core.web.model.ValiList;
 import com.sckw.core.web.response.HttpResult;
+import com.sckw.excel.utils.ExcelUtil;
 import com.sckw.mongo.model.TableTops;
 import com.sckw.transport.model.dto.*;
 import com.sckw.transport.model.vo.WaybillOrderDriverVo;
+import com.sckw.transport.model.vo.WaybillOrderExportVo;
 import com.sckw.transport.model.vo.WaybillOrderSelectVo;
 import com.sckw.transport.service.KwtWaybillOrderService;
 import com.sckw.transport.service.KwtWaybillOrderV1Service;
 import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 import jakarta.validation.Valid;
 import jakarta.validation.constraints.NotBlank;
+import jdk.jshell.execution.FailOverExecutionControlProvider;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.MediaType;
 import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
@@ -61,7 +71,39 @@ public class KwtWaybillOrderController {
      **/
     @PostMapping("/select")
     public HttpResult findListPage(@RequestBody WaybillOrderQueryDto params) throws SystemException {
-        return HttpResult.ok(waybillOrderV1Service.findListPage(params));
+        params.setEntId(LoginUserHolder.getEntId());
+        // 设置分页参数
+        PageHelper.startPage(params.getPage(), params.getPageSize());
+        List<WaybillOrderSelectVo> list = waybillOrderV1Service.findListPage(params);
+        PageResult result = PageHelperUtil.getPageResult(new PageInfo<>(list));
+        return HttpResult.ok(result);
+    }
+
+    /**
+     * @param params 查询参数
+     * @desc 司机导出
+     * @author zk
+     * @date 2023/07/11
+     **/
+    @PostMapping(value = "/export", produces = MediaType.APPLICATION_JSON_VALUE)
+    public void export(@RequestBody WaybillOrderQueryDto params, HttpServletResponse response) {
+        params.setEntId(LoginUserHolder.getEntId());
+        /*查询数据*/
+        List<WaybillOrderSelectVo> list = waybillOrderV1Service.findListPage(params);
+        if (CollectionUtils.isEmpty(list)) {
+            throw new CustomPromptException(HttpStatus.SUCCESS_CODE, "暂无数据,请确认!");
+        }
+        //数据处理
+        List<WaybillOrderExportVo> orders = new ArrayList<>();
+        for (WaybillOrderSelectVo select:list) {
+            WaybillOrderExportVo exportVo = new WaybillOrderExportVo();
+            exportVo.setLoadName(String.join(Global.COMMA, select.getLoadName()));
+            exportVo.setLoadAddress(String.join(Global.COMMA, select.getLoadAddress()));
+            exportVo.setUnloadName(String.join(Global.COMMA, select.getUnloadName()));
+            exportVo.setUnloadAddress(String.join(Global.COMMA, select.getUnloadAddress()));
+            orders.add(exportVo);
+        }
+        ExcelUtil.downData(response, WaybillOrderExportVo.class, orders);
     }
 
     /**
@@ -212,7 +254,7 @@ public class KwtWaybillOrderController {
     }
 
     /**
-     * 派车-查询已派车量、待运量数据
+     * 派车-查询已派车量、待运量数据(4.2废弃)
      * @param orderId
      * @return
      */
@@ -538,9 +580,6 @@ public class KwtWaybillOrderController {
     }
 
 
-
-
-
     /**
      * @param params {}
      * @desc 单证审核

+ 92 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/operate/ManagementWaybillOrderController.java

@@ -1,13 +1,22 @@
 package com.sckw.transport.controller.operate;
 
 import com.alibaba.fastjson.JSONObject;
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
 import com.sckw.core.exception.CustomPromptException;
+import com.sckw.core.model.constant.Global;
+import com.sckw.core.model.page.PageHelperUtil;
+import com.sckw.core.model.page.PageResult;
 import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.core.web.response.HttpResult;
 import com.sckw.excel.config.easyexcel.RequestHolder;
 import com.sckw.excel.utils.ExcelUtil;
+import com.sckw.transport.model.dto.WaybillOrderQueryDto;
 import com.sckw.transport.model.param.ManagementWaybillOrderQuery;
+import com.sckw.transport.model.vo.WaybillOrderExportVo;
+import com.sckw.transport.model.vo.WaybillOrderSelectVo;
 import com.sckw.transport.model.vo.execlVo.ManagementWaybillOrderExcelVO;
+import com.sckw.transport.service.KwtWaybillOrderV1Service;
 import com.sckw.transport.service.operateService.KwtManagementWaybillOrderService;
 import jakarta.servlet.http.HttpServletResponse;
 import jakarta.validation.Valid;
@@ -18,6 +27,7 @@ import org.springframework.util.CollectionUtils;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -34,6 +44,8 @@ public class ManagementWaybillOrderController {
 
     @Autowired
     KwtManagementWaybillOrderService managementWaybillOrderService;
+    @Autowired
+    KwtWaybillOrderV1Service waybillOrderV1Service;
 
 
     /**
@@ -52,6 +64,27 @@ public class ManagementWaybillOrderController {
         }
     }
 
+    /**
+     * 运营管理端-运单-首页条件查询
+     *
+     * @param query 查询参数
+     * @return  运单响应结果数据
+     */
+    @RequestMapping(value = "/selectV1", method = RequestMethod.POST)
+    public HttpResult selectWaybillOrder(@Valid @RequestBody WaybillOrderQueryDto query) {
+        try {
+            //return managementWaybillOrderService.selectWaybillOrder(query);
+            // 设置分页参数
+            PageHelper.startPage(query.getPage(), query.getPageSize());
+            List<WaybillOrderSelectVo> list = waybillOrderV1Service.findListPage(query);
+            PageResult result = PageHelperUtil.getPageResult(new PageInfo<>(list));
+            return HttpResult.ok(result);
+        } catch (Exception e) {
+            log.error("运营管理端-运单-首页条件查询 查询失败:{}", e.getMessage(), e);
+            return HttpResult.error(HttpStatus.GLOBAL_EXCEPTION_CODE, e.getMessage());
+        }
+    }
+
 
     /**
      * 运营管理端-运单-top统计
@@ -70,6 +103,24 @@ public class ManagementWaybillOrderController {
         }
     }
 
+    /**
+     * 运营管理端-运单-top统计
+     *
+     * @param query 查询参数
+     * @return  运单统计结果
+     */
+    @RequestMapping(value = "/statisticsV1", method = RequestMethod.POST)
+    public HttpResult statisticsWaybillOrder(@Valid @RequestBody WaybillOrderQueryDto query) {
+        log.error("运营管理端-运单-top统计 查询 :{}", JSONObject.toJSONString(query));
+        try {
+            return HttpResult.ok(waybillOrderV1Service.statistics(query));
+        } catch (Exception e) {
+            log.error("运营管理端-运单-top统计 失败 :{}", e.getMessage(), e);
+            return HttpResult.error(HttpStatus.GLOBAL_EXCEPTION_CODE, e.getMessage());
+        }
+    }
+
+
     /***
      * 运营管理端-运单-导出
      * @param query 查询参数
@@ -85,6 +136,31 @@ public class ManagementWaybillOrderController {
         ExcelUtil.downData(response, ManagementWaybillOrderExcelVO.class, list);
     }
 
+    /***
+     * 运营管理端-运单-导出
+     * @param query 查询参数
+     */
+    @RequestMapping(value = "/exportV1", method = RequestMethod.POST)
+    public void exportWaybillOrder(@Validated @RequestBody WaybillOrderQueryDto query, HttpServletResponse response) {
+        log.error("运营管理端-运单-导出 query :{}", JSONObject.toJSONString(query));
+        /*查询数据*/
+        List<WaybillOrderSelectVo> list = waybillOrderV1Service.findListPage(query);
+        if (CollectionUtils.isEmpty(list)) {
+            throw new CustomPromptException(HttpStatus.SUCCESS_CODE, "暂无数据,请确认!");
+        }
+        //数据处理
+        List<WaybillOrderExportVo> orders = new ArrayList<>();
+        for (WaybillOrderSelectVo select:list) {
+            WaybillOrderExportVo exportVo = new WaybillOrderExportVo();
+            exportVo.setLoadName(String.join(Global.COMMA, select.getLoadName()));
+            exportVo.setLoadAddress(String.join(Global.COMMA, select.getLoadAddress()));
+            exportVo.setUnloadName(String.join(Global.COMMA, select.getUnloadName()));
+            exportVo.setUnloadAddress(String.join(Global.COMMA, select.getUnloadAddress()));
+            orders.add(exportVo);
+        }
+        ExcelUtil.downData(response, WaybillOrderExportVo.class, orders);
+    }
+
 
     /**
      * 运营端-运单-获取订单详情
@@ -102,4 +178,20 @@ public class ManagementWaybillOrderController {
         }
     }
 
+    /**
+     * 运营端-运单-获取订单详情
+     *
+     * @param id 订单id
+     * @return  订单数据
+     */
+    @RequestMapping(value = "/getOrderDetailV1", method = RequestMethod.GET)
+    public HttpResult getOrderDetailV1(@RequestParam("id") Long id) {
+        try {
+            return waybillOrderV1Service.waybillDetail(id);
+        } catch (Exception e) {
+            log.error("运营端-运单-获取订单详情失败:error :单据id:{}, errorMessage:{}", id, e.getMessage(), e);
+            return HttpResult.error(HttpStatus.GLOBAL_EXCEPTION_CODE, e.getMessage());
+        }
+    }
+
 }

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

@@ -136,7 +136,7 @@ public interface KwtLogisticsOrderMapper extends BaseMapper<KwtLogisticsOrder> {
      * @param driverParam
      * @return
      */
-    List<DriverListVo> selectDriverListById(@Param("driverParam") DriverParam driverParam);
+    List<DriverListVo> selectDriverListById(@Param("driverParam") DriverParam driverParam, @Param("orderStatus") List<Integer> orderStatus);
 
     /**
      * 通过物流订单查看单据下运力司机数据【趟次】
@@ -144,7 +144,7 @@ public interface KwtLogisticsOrderMapper extends BaseMapper<KwtLogisticsOrder> {
      * @param driverParam
      * @return
      */
-    List<DriverListVo> selectDriverCountById(@Param("driverParam") DriverParam driverParam);
+    List<DriverListVo> selectDriverCountById(@Param("driverParam") DriverParam driverParam, @Param("type") Integer type);
 
     /**
      * @param ids

+ 6 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/dao/KwtWaybillOrderSubtaskMapper.java

@@ -3,6 +3,8 @@ package com.sckw.transport.dao;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.sckw.transport.model.KwtWaybillOrderSubtask;
 import com.sckw.transport.model.dto.WaybillSubtaskOrderQueryDto;
+import com.sckw.transport.model.param.DriverParam;
+import com.sckw.transport.model.vo.DriverListVo;
 import com.sckw.transport.model.vo.WaybillSubtaskSelectVo;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
@@ -21,4 +23,8 @@ public interface KwtWaybillOrderSubtaskMapper extends BaseMapper<KwtWaybillOrder
     KwtWaybillOrderSubtask findByOrderId(@Param("wOrderId") Long wOrderId, @Param("lOrderId") Long lOrderId);
 
     List<WaybillSubtaskSelectVo> findListPage(WaybillSubtaskOrderQueryDto params);
+
+    Integer selectCountByOrderId(@Param("orderId") String orderId, @Param("orderStatusList") List<Integer> orderStatusList);
+
+    List<DriverListVo> selectLoopOrderAndDriverListByOrderId(@Param("driverParam") DriverParam driverParam, @Param("type") Integer type, @Param("orderStatus") List<Integer> orderStatus);
 }

+ 10 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/dao/KwtWaybillOrderTicketMapper.java

@@ -51,6 +51,16 @@ public interface KwtWaybillOrderTicketMapper extends BaseMapper<KwtWaybillOrderT
      **/
     KwtWaybillOrderTicket findWaybillOrderTicketV2(@Param("wAddressId") Long wAddressId, @Param("unit") String unit);
 
+    /**
+     * 查询车辆运单榜单信息
+     * @param wAddressId 车辆订单地址id
+     * @desc 查询车辆运单榜单信息
+     * @author zk
+     * @date 2023/7/27
+     * @return 榜单信息
+     **/
+    List<KwtWaybillOrderTicket> findWaybillOrderTicketV3(@Param("wAddressId") Long wAddressId, @Param("unit") String unit);
+
     /**
      * 修改榜单删除标识
      * @param wOrderId 运单ID

+ 1 - 1
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/KwtWaybillOrderAddress.java

@@ -82,7 +82,7 @@ public class KwtWaybillOrderAddress implements Serializable {
     private String lat;
 
     /**
-     * 
+     * 
      */
     private String lng;
 

+ 7 - 5
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/KwtWaybillOrderSubtask.java

@@ -3,6 +3,8 @@ package com.sckw.transport.model;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.sckw.core.model.base.BaseModel;
 import lombok.Data;
+
+import java.math.BigDecimal;
 import java.util.Date;
 
 /**
@@ -42,12 +44,12 @@ public class KwtWaybillOrderSubtask extends BaseModel {
     /**
      * 已委托量
      */
-    private Double entrustAmount;
+    private BigDecimal entrustAmount;
 
     /**
      * 卸货重量
      */
-    private Double unloadAmount;
+    private BigDecimal unloadAmount;
 
     /**
      * 计划结束日期
@@ -57,7 +59,7 @@ public class KwtWaybillOrderSubtask extends BaseModel {
     /**
      * 装货重量
      */
-    private Double loadAmount;
+    private BigDecimal loadAmount;
 
     /**
      * 计划开始日期
@@ -67,10 +69,10 @@ public class KwtWaybillOrderSubtask extends BaseModel {
     /**
      * 亏吨重量
      */
-    private Double deficitAmount;
+    private BigDecimal deficitAmount;
 
     /**
      * 亏吨扣款
      */
-    private Double deficitPrice;
+    private BigDecimal deficitPrice;
 }

+ 71 - 290
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/dto/LogisticsConsignmentDto.java

@@ -19,7 +19,7 @@ import java.util.List;
 
 /**
  * @author lfdc
- * @description LogisticsConsignmentDto-V4.2
+ * @desc LogisticsConsignmentDto-V4.2
  * @date 2023-07-06 14:07:50
  */
 
@@ -29,7 +29,7 @@ import java.util.List;
 public class LogisticsConsignmentDto implements Serializable {
 
     /**
-     * 单据类型
+     * 单据类型采购订单1,销售订单2
      */
     @NotBlank(message = "单据类型不能为空")
     private String type;
@@ -41,11 +41,80 @@ public class LogisticsConsignmentDto implements Serializable {
     @com.fasterxml.jackson.annotation.JsonProperty("tOrderId")
     private String tOrderId;
 
+    /**
+     * 贸易订单编号
+     */
+    @NotBlank(message = "贸易订单编号不能为空")
+    @JsonProperty("tOrderNo")
+    private String tOrderNo;
+
+    /**
+     * 托运单位
+     */
+    @NotNull(message = "托运单位名称不能为空")
+    private String checkCompany;
+    /**
+     * 托运单位id
+     */
+    @NotNull(message = "托运单位id不能为空")
+    private String checkCompanyId;
+
+    /**
+     * 联系电话
+     */
+    @NotNull(message = "托运联系电话不能为空")
+    private String checkContactPhone;
+    /**
+     * 联系人
+     */
+    @NotNull(message = "托运联系人不能为空")
+    private String checkContacts;
+    /**
+     * 托运联系人id
+     */
+    @NotNull(message = "托运联系人不能为空")
+    private String checkContactsId;
+
+    /**
+     * 承运单位
+     */
+    @NotBlank(message = "承运单位不能为空")
+    private String consignCompany;
+
+    /**
+     * 承运单位ID
+     */
+    @NotBlank(message = "承运单位ID不能为空")
+    private String consignCompanyId;
+
+    /**
+     * 联系电话
+     */
+    @NotNull(message = "承运联系电话不能为空")
+    private String consignContactPhone;
+    /**
+     * 联系人
+     */
+    @NotNull(message = "承运联系人不能为空")
+    private String consignContacts;
+
+    /**
+     * 承运联系人id
+     */
+    @NotNull(message = "承运联系人id不能为空")
+    private String consignContactsId;
+
     /**
      * 商品ID
      */
+    @NotNull(message = "商品id不能为空")
     private Long goodsId;
 
+    /**
+     * 商品类型
+     */
+    private String goodsType;
+
     /**
      * goodsName
      */
@@ -56,13 +125,6 @@ public class LogisticsConsignmentDto implements Serializable {
      */
     private String skuId;
 
-    /**
-     * 贸易订单编号
-     */
-    @NotBlank(message = "贸易订单编号不能为空")
-    @JsonProperty("tOrderNo")
-    private String tOrderNo;
-
     /**
      * 结算周期
      */
@@ -160,62 +222,6 @@ public class LogisticsConsignmentDto implements Serializable {
      */
     private String remark;
 
-    /**
-     * 托运单位
-     */
-    @NotNull(message = "托运单位名称不能为空")
-    private String checkCompany;
-    /**
-     * 托运单位id
-     */
-    @NotNull(message = "托运单位id不能为空")
-    private String checkCompanyId;
-
-    /**
-     * 联系电话
-     */
-    @NotNull(message = "托运联系电话不能为空")
-    private String checkContactPhone;
-    /**
-     * 联系人
-     */
-    @NotNull(message = "托运联系人不能为空")
-    private String checkContacts;
-    /**
-     * 托运联系人id
-     */
-    @NotNull(message = "托运联系人不能为空")
-    private String checkContactsId;
-
-    /**
-     * 承运单位
-     */
-    @NotBlank(message = "承运单位不能为空")
-    private String consignCompany;
-
-    /**
-     * 承运单位ID
-     */
-    @NotBlank(message = "承运单位ID不能为空")
-    private String consignCompanyId;
-
-    /**
-     * 联系电话
-     */
-    @NotNull(message = "承运联系电话不能为空")
-    private String consignContactPhone;
-    /**
-     * 联系人
-     */
-    @NotNull(message = "承运联系人不能为空")
-    private String consignContacts;
-
-    /**
-     * 承运联系人id
-     */
-    @NotNull(message = "承运联系人id不能为空")
-    private String consignContactsId;
-
 
     /**
      * 合同信息
@@ -242,229 +248,4 @@ public class LogisticsConsignmentDto implements Serializable {
     @JsonProperty("lineFreightList")
     private List<LineFreightDto> lineFreightList;
 
-
-//
-//    /**
-//     *总量
-//     */
-//    @Digits(integer = 10,fraction = 2,message = "总量格式不正确")
-//    @DecimalMin(value = "0.00",message = "分配总量量不能小于{value}")
-//    private BigDecimal amount;
-//    /**
-//     * 分配承运量
-//     */
-//    @Digits(integer = 10,fraction = 2,message = "分配承运量格式不正确")
-//    @DecimalMin(value = "0.00",message = "分配承运量不能小于{value}")
-//    private BigDecimal carryingCapacity;
-//    /**
-//     * 分配承运量使用的单位(吨、方、箱、件))
-//     */
-//    @NotNull(message = "分配承运量单位不能为空")
-//    private String carryingCapacityUnit;
-//
-//    /**
-//     * 托运单位
-//     */
-//    @NotNull(message = "托运单位名称不能为空")
-//    private String checkCompany;
-//    /**
-//     * 托运单位id
-//     */
-//    @NotNull(message = "托运单位id不能为空")
-//    private String checkCompanyId;
-//
-//    /**
-//     * 联系电话
-//     */
-//    @NotNull(message = "托运联系电话不能为空")
-//    private String checkContactPhone;
-//    /**
-//     * 联系人
-//     */
-//    @NotNull(message = "托运联系人不能为空")
-//    private String checkContacts;
-//    /**
-//     * 托运联系人id
-//     */
-//    @NotNull(message = "托运联系人不能为空")
-//    private String checkContactsId;
-//
-//    /**
-//     * 合理损耗
-//     */
-////    @NotNull(message = "合理损耗不能为空")
-////    @DecimalMin(value = "0.00",message = "必须为大于0的正整数")
-//    @Digits(integer = 5, fraction = 2, message = "合理损耗超长")
-//    private BigDecimal loss;
-//    /**
-//     * 合理损耗单位
-//     */
-//    private String lossUnit;
-//
-//    /**
-//     * 商品价值(扣亏货值)
-//     */
-////    @NotNull(message = "扣亏货值不能为空")
-////    @DecimalMin(value = "0.00",message = "必须为大于0的正整数")
-//    private BigDecimal goodsPrice;
-//    /**
-//     * 商品价值(扣亏货值)单位
-//     */
-//    private String goodsPriceUnit;
-//    /**
-//     * 承运单位
-//     */
-//    @NotBlank(message = "承运单位不能为空")
-//    private String consignCompany;
-//
-//    /**
-//     * 承运单位ID
-//     */
-//    @NotBlank(message = "承运单位ID不能为空")
-//    private String consignCompanyId;
-//
-//    /**
-//     * 联系电话
-//     */
-//    @NotNull(message = "承运联系电话不能为空")
-//    private String consignContactPhone;
-//    /**
-//     * 联系人
-//     */
-//    @NotNull(message = "承运联系人不能为空")
-//    private String consignContacts;
-//
-//    /**
-//     * 承运联系人id
-//     */
-//    @NotNull(message = "承运联系人id不能为空")
-//    private String consignContactsId;
-//
-//    /**
-//     * 结算周期(周结、月结、季结)
-//     */
-////    @NotNull(message = "结算周期不能为空")
-//    @Digits(integer = 5, fraction = 0, message = "合理损耗超长")
-//    private Long settlementCycle;
-//
-//    /**
-//     * 合同id
-//     */
-//    @NotNull(message = "合同id不能为空")
-//    private String contractId;
-//    /**
-//     * 合同编号
-//     */
-//    @NotNull(message = "合同编号不能为空")
-//    private String contractNo;
-//
-//    /**
-//     * 合同名称
-//     */
-//    @NotNull(message = "合同名称不能为空")
-//    private String contractName;
-//
-//    /**
-//     * 支付方式
-//     */
-//    @NotNull(message = "支付方式不能为空")
-//    private String payment;
-//
-//    /**
-//     * 签约方式
-//     */
-//    @NotNull(message = "签约方式不能为空")
-//    private String signingWay;
-//
-//    /**
-//     * 货物名称
-//     */
-//    @NotNull(message = "货物名称不能为空")
-//    private String goodsName;
-//
-//    /**
-//     * 货物id
-//     */
-//    @NotNull(message = "货物id不能为空")
-//    private String goodsId;
-//
-//    /**
-//     * skuId
-//     */
-//    private String skuId;
-//    /**
-//     * 是否全量
-//     */
-//    @NotNull(message = "是否全量不能为空")
-//    private Boolean isFullDose;
-//    /**
-//     * 订单id-分包时要使用
-//     */
-//    @JsonProperty("lOrderId")
-//    private String lOrderId;
-//    /**
-//     * 订单编号-分包时要使用
-//     */
-//    @JsonProperty("lOrderNo")
-//    private String lOrderNo;
-//    /**
-//     * 贸易订单id
-//     */
-//    @JsonProperty("tOrderId")
-//    @NotNull(message = "贸易订单id不能为空")
-//    private String tOrderId;
-//    /**
-//     * 贸易订单编号
-//     */
-//    @JsonProperty("tOrderNo")
-//    @NotNull(message = "贸易订单编号不能为空")
-//    private String tOrderNo;
-//    /**
-//     * 运价
-//     */
-//    @NotNull(message = "运价不能为空")
-//    @DecimalMin(value = "0.00",message = "运价必须为大于0的正整数")
-//    @Digits(integer = 6,fraction = 2,message = "运价格式填写错误")
-//    private BigDecimal price;
-//    /**
-//     * 运价方式
-//     */
-//    @NotNull(message = "运价方式不能为空")
-//    private String priceType;
-//    /**
-//     * 计划卸货时间
-//     */
-//    @NotNull(message = "计划卸货时间不能为空")
-//    @JsonFormat(pattern="yyyy-MM-dd", timezone = "GMT+8")
-////    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-//    private LocalDate receiveGoodsDateTime;
-//    /**
-//     * 计划发货时间
-//     */
-//    @NotNull(message = "计划发货时间不能为空")
-//    @JsonFormat(pattern="yyyy-MM-dd", timezone = "GMT+8")
-////    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-//    private LocalDate shipmentsDateTime;
-//    /**
-//     * 税率
-//     */
-//    @NotNull(message = "税率不能为空")
-//    private Long taxRate;
-////    /**
-////     * 税率类型
-////     */
-////    @NotNull(message = "税率类型不能为空")
-////    private String taxRateType;
-//    /**
-//     * 备注
-//     */
-//    @Length(max = 100,message = "单据编号长度错误最大长度:{max}")
-//    private String remark;
-//    /**
-//     * 计费方式
-//     */
-//    @NotNull(message = "计费方式不能为空")
-//    private String billingMode;
-
-
 }

+ 100 - 86
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/dto/LogisticsOrderSubcontractDto.java

@@ -19,7 +19,7 @@ import java.util.List;
 
 /**
  * @author lfdc
- * @description 物流订单-分包托运-v4.2
+ * @desc 物流订单-分包托运-v4.2
  * @date 2024-03-05 14:03:45
  */
 @Data
@@ -28,29 +28,29 @@ import java.util.List;
 public class LogisticsOrderSubcontractDto implements Serializable {
 
     /**
-     * 订单类型-托运订单1-承运订单2
-     */
-    private String type;
-    /**
-     *总量
+     * 订单id-分包时要使用
      */
-    private BigDecimal amount;
+    @JsonProperty("lOrderId")
+    private String lOrderId;
+
     /**
-     * 分配承运量
+     * 订单编号-分包时要使用
      */
-    @Digits(integer = 10,fraction = 2,message = "分配承运量填写错误")
-    @DecimalMin(value = "0.00",message = "委托量不能小于{value}")
-    private BigDecimal carryingCapacity;
+    @JsonProperty("lOrderNo")
+    private String lOrderNo;
+
     /**
-     * 分配承运量使用的单位
+     * 订单类型-托运订单1-承运订单2
      */
-    private String carryingCapacityUnit;
+    @NotBlank(message = "订单类型不能为空")
+    private String type;
 
     /**
      * 托运单位
      */
     @NotNull(message = "托运单位名称不能为空")
     private String consignCompany;
+
     /**
      * 托运单位id
      */
@@ -62,6 +62,7 @@ public class LogisticsOrderSubcontractDto implements Serializable {
      */
     @NotNull(message = "托运联系电话不能为空")
     private String consignContactPhone;
+
     /**
      * 托运联系人
      */
@@ -73,33 +74,7 @@ public class LogisticsOrderSubcontractDto implements Serializable {
      */
     @NotNull(message = "托运联系人id不能为空")
     private String consignContactsId;
-    /**
-     * 承运联系人id
-     */
-    @NotNull(message = "承运联系人id不能为空")
-    private String acceptContactsId;
 
-    /**
-     * 合理损耗
-     */
-//    @NotNull(message = "合理损耗不能为空")
-    @Digits(integer = 5, fraction = 2,message = "合理损耗格式填写错误")
-    private BigDecimal loss;
-    /**
-     * 合理损耗单位
-     */
-    private String lossUnit;
-
-    /**
-     * 商品价值(扣亏货值)
-     */
-//    @NotNull(message = "扣亏货值不能为空")
-    @Digits(integer = 5, fraction = 2,message = "商品价值(扣亏货值)格式填写错误")
-    private BigDecimal goodsPrice;
-    /**
-     * 商品价值(扣亏货值)单位
-     */
-    private String goodsPriceUnit;
     /**
      * 承运单位
      */
@@ -117,6 +92,7 @@ public class LogisticsOrderSubcontractDto implements Serializable {
      */
     @NotNull(message = "承运联系电话不能为空")
     private String acceptContactPhone;
+
     /**
      * 承运联系人
      */
@@ -124,67 +100,97 @@ public class LogisticsOrderSubcontractDto implements Serializable {
     private String acceptContacts;
 
     /**
-     * 结算周期(周结、月结、季结)
+     * 承运联系人id
      */
-//    @NotNull(message = "结算周期不能为空")
-    private Long settlementCycle;
+    @NotNull(message = "承运联系人id不能为空")
+    private String acceptContactsId;
 
     /**
-     * 合同id
+     * 货物id
      */
-    @NotNull(message = "合同id不能为空")
-    private String contractId;
+    //@NotNull(message = "货物id不能为空")
+    private String goodsId;
+
     /**
-     * 合同编号
+     * 商品类型
      */
-    @NotNull(message = "合同编号不能为空")
-    private String contractNo;
+    private String goodsType;
 
     /**
-     * 合同名称
+     * 货物名称
      */
-    @NotNull(message = "合同名称不能为空")
-    private String contractName;
+    @NotNull(message = "货物名称不能为空")
+    private String goodsName;
+
+    /**
+     * skuId
+     */
+    private String skuId;
+
+    /**
+     * 结算周期(周结、月结、季结)
+     */
+    // @NotNull(message = "结算周期不能为空")
+    private Long settlementCycle;
+
+    /**
+     * 税率
+     */
+    @NotNull(message = "税率不能为空")
+    private Long taxRate;
 
     /**
      * 合同签约方式
      */
     @NotNull(message = "合同签约方式不能为空")
     private String payment;
+
     /**
-     * 货物名称
+     * 分配承运量使用的单位
      */
-    @NotNull(message = "货物名称不能为空")
-    private String goodsName;
+    private String carryingCapacityUnit;
 
     /**
-     * 货物id
+     * 商品价值(扣亏货值)
      */
-//    @NotNull(message = "货物id不能为空")
-    private String goodsId;
+    // @NotNull(message = "扣亏货值不能为空")
+    @Digits(integer = 5, fraction = 2,message = "商品价值(扣亏货值)格式填写错误")
+    private BigDecimal goodsPrice;
 
     /**
-     * skuId
+     * 商品价值(扣亏货值)单位
      */
-    private String skuId;
+    private String goodsPriceUnit;
 
     /**
-     * 是否全量
+     * 合理损耗
      */
-    @NotNull(message = "是否全量不能为空")
-    private Boolean isFullDose;
+    // @NotNull(message = "合理损耗不能为空")
+    @Digits(integer = 5, fraction = 2,message = "合理损耗格式填写错误")
+    private BigDecimal loss;
 
     /**
-     * 订单id-分包时要使用
+     * 合理损耗单位
      */
-    @JsonProperty("lOrderId")
-    private String lOrderId;
+    private String lossUnit;
 
     /**
-     * 订单编号-分包时要使用
+     * 扣亏货值
      */
-    @JsonProperty("lOrderNo")
-    private String lOrderNo;
+    @Digits(integer = 5,fraction = 2,message = "扣亏货值格式填写错误")
+    private BigDecimal defectiveValue;
+
+    /**
+     * 计费方式
+     */
+    @NotNull(message = "计费方式不能为空")
+    private String billingMode;
+
+    /**
+     * 是否全量
+     */
+    @NotNull(message = "是否全量不能为空")
+    private Boolean isFullDose;
 
     /**
      * 运价
@@ -199,6 +205,18 @@ public class LogisticsOrderSubcontractDto implements Serializable {
     @NotNull(message = "运价方式不能为空")
     private String priceType;
 
+    /**
+     *总量
+     */
+    private BigDecimal amount;
+
+    /**
+     * 分配承运量
+     */
+    @Digits(integer = 10,fraction = 2,message = "分配承运量填写错误")
+    @DecimalMin(value = "0.00",message = "委托量不能小于{value}")
+    private BigDecimal carryingCapacity;
+
     /**
      * 计划卸货日期
      */
@@ -216,26 +234,28 @@ public class LogisticsOrderSubcontractDto implements Serializable {
     private LocalDate endTime;
 
     /**
-     * 税率
+     * 合同id
      */
-    @NotNull(message = "税率不能为空")
-    private Long taxRate;
+    @NotNull(message = "合同id不能为空")
+    private String contractId;
+
     /**
-     * 备注
+     * 合同编号
      */
-    @Length(max = 200, message = "单据编号长度错误最大长度:{max}")
-    private String remark;
+    @NotNull(message = "合同编号不能为空")
+    private String contractNo;
+
     /**
-     * 计费方式
+     * 合同名称
      */
-    @NotNull(message = "计费方式不能为空")
-    private String billingMode;
+    @NotNull(message = "合同名称不能为空")
+    private String contractName;
 
     /**
-     * 扣亏货值
+     * 备注
      */
-    @Digits(integer = 5,fraction = 2,message = "扣亏货值格式填写错误")
-    private BigDecimal defectiveValue;
+    @Length(max = 200, message = "单据编号长度错误最大长度:{max}")
+    private String remark;
 
     /**
      * 地址信息
@@ -244,12 +264,6 @@ public class LogisticsOrderSubcontractDto implements Serializable {
     @JsonProperty("addressInfo")
     private List<AddressInfoDto> addressInfo;
 
-//    /**
-//     * 辅助单位
-//     */
-//    @JsonProperty("assistUnit")
-//    private List<GoodsUnitParam> assistUnit;
-
     /**
      * 线路分配
      */

+ 2 - 2
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/dto/SendCarEntrustDto.java

@@ -41,8 +41,8 @@ public class SendCarEntrustDto {
      * 计划时间
      */
     @JsonProperty("planTime")
-    @JsonFormat(locale="zh", pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
-    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(locale="zh", pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
     @NotNull(message = "计划时间不能为空")
     private Date planTime;
 

+ 6 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/dto/WaybillOrderQueryDto.java

@@ -6,6 +6,7 @@ import com.sckw.core.model.page.PageRequest;
 import jakarta.validation.constraints.NotNull;
 import lombok.Data;
 import java.util.Date;
+import java.util.List;
 
 /**
  * @author zk
@@ -22,6 +23,11 @@ public class WaybillOrderQueryDto extends PageRequest{
      */
     private Long  entId;
 
+    /**
+     * 多企业ID
+     */
+    private List<Long> entIds;
+
     /**
      * 关键字搜索
      */

+ 0 - 1
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/dto/WaybillOrderTicketV4Dto.java

@@ -52,7 +52,6 @@ public class WaybillOrderTicketV4Dto {
     @JsonProperty("operateTime")
     @JsonFormat(locale="zh", pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
-    @NotNull(message = "时间不能为空")
     private Date operateTime;
 
     /**

+ 24 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/SubcontractConsignmentVO.java

@@ -5,6 +5,7 @@ import lombok.Data;
 
 import java.math.BigDecimal;
 import java.util.Date;
+import java.util.List;
 
 /**
  * @author lfdc
@@ -264,4 +265,27 @@ public class SubcontractConsignmentVO {
      */
     private String taxRateLabel;
 
+    /**
+     * 多装货地4.2
+     */
+    private List<String> loadNames;
+
+    private List<String> loadAddresses;
+
+
+    /**
+     * 多卸货地4.2
+     */
+    private List<String> unloadNames;
+
+    private List<String> unloadAddresses;
+
+
+    /**
+     * 多装货地4.2
+     */
+    private List<LoadAddressVo> loading;
+
+    private List<UnLoadAddressVo> unloading;
+
 }

+ 20 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/WaybillDetailVo.java

@@ -1,6 +1,7 @@
 package com.sckw.transport.model.vo;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
+import com.sckw.core.model.constant.NumberConstant;
 import lombok.Data;
 
 import java.util.List;
@@ -29,6 +30,7 @@ public class WaybillDetailVo {
     /**
      * 关联承运订单
      */
+    @JsonProperty("lOrderNo")
     private String lOrderNo;
 
     /**
@@ -46,6 +48,11 @@ public class WaybillDetailVo {
      */
     private int type;
 
+    /**
+     * 运单类型
+     */
+    private String typeName;
+
     /**
      * 车辆ID
      */
@@ -56,6 +63,16 @@ public class WaybillDetailVo {
      */
     private String truckNo;
 
+    /**
+     * 车辆类型
+     */
+    private String truckType;
+
+    /**
+     * 挂车牌号
+     */
+    private String trailerNo;
+
     /**
      * 司机ID
      */
@@ -111,4 +128,7 @@ public class WaybillDetailVo {
      */
     private List<Map<String, Object>> trajectory;
 
+    public String getTypeName() {
+        return type == NumberConstant.ONE ? "趟次运单" : "循环运单";
+    }
 }

+ 175 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/WaybillOrderExportVo.java

@@ -0,0 +1,175 @@
+package com.sckw.transport.model.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.sckw.core.model.constant.Global;
+import com.sckw.excel.annotation.ExcelContext;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author zk
+ * @desc 车辆运单列表
+ * @date 2024/3/11 0011
+ */
+@Data
+@Accessors(chain = true)
+@ExcelContext(fileName = "运单信息", sheetName = "运单信息")
+public class WaybillOrderExportVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 4526063761808958350L;
+
+    /**
+     * 运单号
+     */
+    @ExcelProperty(value = "运单号")
+    @JsonProperty(value="wOrderNo")
+    private String wOrderNo;
+
+    /**
+     * 物流订单编号
+     */
+    @ExcelProperty(value = "物流订单编号")
+    private String lOrderNo;
+
+    /**
+     * 车辆牌照
+     */
+    @ExcelProperty(value = "车辆牌照")
+    private String truckNo;
+
+    /**
+     * 司机
+     */
+    @ExcelProperty(value = "司机")
+    private String driverName;
+
+    /**
+     * 司机手机号
+     */
+    @ExcelProperty(value = "司机手机号")
+    private String driverPhone;
+
+    /**
+     * 运单类型字符
+     */
+    @ExcelIgnore
+    private Integer type;
+
+    /**
+     * 运单类型字符
+     */
+    @ExcelProperty(value = "运单类型字符")
+    private String typeLabel;
+
+    /**
+     * 采购企业名称
+     */
+    @ExcelProperty(value = "采购企业名称")
+    private String procureFirmName;
+
+    /**
+     * 供应企业名称
+     */
+    @ExcelProperty(value = "供应企业名称")
+    private String supplyFirmName;
+
+    /**
+     * 计划开始时间
+     */
+    @ExcelProperty(value = "计划开始时间")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date startTime;
+
+    /**
+     * 计划结束时间
+     */
+    @ExcelProperty(value = "计划结束时间")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date endTime;
+
+    /**
+     * 派单量/吨
+     */
+    @ExcelProperty(value = "派单量")
+    private String entrustAmount;
+
+    /**
+     * 装货地点名称
+     */
+    @ExcelProperty(value = "装货地点名称")
+    private String loadName;
+
+    /**
+     * 装货地点
+     */
+    @ExcelProperty(value = "装货地点")
+    private String loadAddress;
+
+    /**
+     * 卸货地点点名称
+     */
+    @ExcelProperty(value = "卸货地点点名称")
+    private String unloadName;
+
+    /**
+     * 卸货地点
+     */
+    @ExcelProperty(value = "卸货地点")
+    private String unloadAddress;
+
+    /**
+     * 实装量/吨
+     */
+    @ExcelProperty(value = "实装量")
+    private String loadAmount;
+
+    /**
+     * 实卸量/吨
+     */
+    @ExcelProperty(value = "实卸量")
+    private String unloadAmount;
+
+    /**
+     * 亏吨重量
+     */
+    @ExcelProperty(value = "亏吨重量")
+    private String deficitAmount;
+
+    /**
+     * 扣亏量(合理损耗-(实装-实卸))-单位
+     */
+    @ExcelProperty(value = "扣亏量")
+    private String deficitRealAmount;
+
+    /**
+     * 派车时间
+     */
+    @ExcelProperty(value = "派车时间")
+    private String sendCarTime;
+
+    /**
+     * 运单状态字符
+     */
+    @ExcelProperty(value = "运单状态")
+    private String  statusLabel;
+
+    /**
+     * 装载量
+     */
+    @ExcelProperty(value = "装载量")
+    private Double actualWeight;
+
+    public String getTypeLabel() {
+        return type != null && type == Global.NUMERICAL_ONE ? "趟次" : "循环";
+    }
+
+}

+ 5 - 4
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/WaybillOrderSelectVo.java

@@ -8,6 +8,7 @@ import lombok.experimental.Accessors;
 import java.io.Serial;
 import java.io.Serializable;
 import java.util.Date;
+import java.util.List;
 
 /**
  * @author zk
@@ -108,22 +109,22 @@ public class WaybillOrderSelectVo implements Serializable {
     /**
      * 装货地点名称
      */
-    private String loadName;
+    private List<String> loadName;
 
     /**
      * 装货地点
      */
-    private String loadAddress;
+    private List<String> loadAddress;
 
     /**
      * 卸货地点点名称
      */
-    private String unloadName;
+    private List<String> unloadName;
 
     /**
      * 卸货地点
      */
-    private String unloadAddress;
+    private List<String> unloadAddress;
 
     /**
      * 实装量/吨

+ 11 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/WaybillSubtaskDetailVo.java

@@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonProperty;
 import com.sckw.core.model.constant.Global;
 import lombok.Data;
 
+import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
@@ -154,6 +155,16 @@ public class WaybillSubtaskDetailVo {
      */
     private Double deficitPrice;
 
+    /**
+     * 合理损耗
+     */
+    private BigDecimal loss;
+
+    /**
+     * 合理损耗单位(‰/kG)
+     */
+    private String lossUnitLabe;
+
     /**
      * 地址信息
      */

+ 1 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/WaybillSubtaskSelectVo.java

@@ -39,6 +39,7 @@ public class WaybillSubtaskSelectVo {
     /**
      * 关联承运订单
      */
+    @JsonProperty("lOrderNo")
     private String lOrderNo;
 
     /**

+ 4 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/WaybillTicketVO.java

@@ -16,6 +16,10 @@ import java.util.List;
 @Data
 @Accessors(chain = true)
 public class WaybillTicketVO {
+    /**
+     * 单位
+     */
+    private String unitLabe;
     /**
      * 装载图片
      */

+ 85 - 16
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtAcceptCarriageOrderService.java

@@ -160,6 +160,9 @@ public class KwtAcceptCarriageOrderService {
     @Autowired
     private KwtLogisticsOrderMapper logisticsOrderMapper;
 
+    @Autowired
+    private KwtWaybillOrderSubtaskMapper waybillOrderSubtaskMapper;
+
     @Autowired
     private KwtWaybillOrderMapper waybillOrderMapper;
 
@@ -1061,6 +1064,38 @@ public class KwtAcceptCarriageOrderService {
                 subcontractConsignmentVO.setUnloadAddressDetail(subcontractConsignmentVO.getUnloadCityName() + subcontractConsignmentVO.getUnloadAddress());
                 subcontractConsignmentVO.setOrderSourceLabel(orderSource == null ? null : orderSource.get(subcontractConsignmentVO.getOrderSource()));
                 subcontractConsignmentVO.setTaxRateLabel(subcontractConsignmentVO.getTaxRate() + "%");
+                String lOrderId = subcontractConsignmentVO.getId();
+                List<KwtLogisticsOrderAddress> loadAddress = logisticsOrderAddressMapper.selectList(new LambdaQueryWrapper<KwtLogisticsOrderAddress>()
+                        .eq(KwtLogisticsOrderAddress::getAddressType, NumberConstant.ONE)
+                        .eq(KwtLogisticsOrderAddress::getDelFlag, NumberConstant.ZERO)
+                        .eq(KwtLogisticsOrderAddress::getLOrderId, Long.parseLong(lOrderId))
+                );
+                List<String> loadName = new ArrayList<String>();
+                List<String> loadAddressList = new ArrayList<String>();
+                loadAddress.forEach(address -> {
+                    loadName.add(address.getName());
+                    loadAddressList.add(address.getDetailAddress());
+                });
+
+                List<String> unloadName = new ArrayList<String>();
+                List<String> unloadAddressList = new ArrayList<String>();
+                List<KwtLogisticsOrderAddress> unloadAddress = logisticsOrderAddressMapper.selectList(new LambdaQueryWrapper<KwtLogisticsOrderAddress>()
+                        .eq(KwtLogisticsOrderAddress::getAddressType, NumberConstant.TWO)
+                        .eq(KwtLogisticsOrderAddress::getDelFlag, NumberConstant.ZERO)
+                        .eq(KwtLogisticsOrderAddress::getLOrderId, Long.parseLong(lOrderId))
+                );
+                unloadAddress.forEach(address -> {
+                    unloadName.add(address.getName());
+                    unloadAddressList.add(address.getDetailAddress());
+                });
+                subcontractConsignmentVO.setLoadNames(loadName);
+                subcontractConsignmentVO.setLoadAddresses(loadAddressList);
+                subcontractConsignmentVO.setUnloadNames(unloadName);
+                subcontractConsignmentVO.setUnloadAddresses(unloadAddressList);
+                List<LoadAddressVo> loadAddressAmount = logisticsOrderAddressMapper.findByAddressAndLoadAmount(Long.parseLong(lOrderId), NumberConstant.ONE);
+                subcontractConsignmentVO.setLoading(loadAddressAmount);
+                List<UnLoadAddressVo> unloadAddressAmount = logisticsOrderAddressMapper.findByAddressAndUnLoadAmount(Long.parseLong(lOrderId), NumberConstant.TWO);
+                subcontractConsignmentVO.setUnloading(unloadAddressAmount);
             }
             allList.addAll(voList);
         }
@@ -1121,7 +1156,14 @@ public class KwtAcceptCarriageOrderService {
         Map<String, RTruckVo> truck = new HashMap<>(Global.NUMERICAL_SIXTEEN);
         if (String.valueOf(NumberConstant.ONE).equals(driverParam.getType())) {
             //只展示待接单数据
-            List<DriverListVo> list = logisticsOrderMapper.selectDriverListById(driverParam);
+            List<Integer> orderStatus = new ArrayList<>() {{
+                add(CarWaybillEnum.APPROVAL_PASS.getCode());
+                add(CarWaybillEnum.APPROVAL_IN.getCode());
+                add(CarWaybillEnum.APPROVAL_NO_PASS.getCode());
+                add(CarWaybillEnum.APPROVAL_TREAT.getCode());
+            }};
+//            List<DriverListVo> list = logisticsOrderMapper.selectDriverListById(driverParam,orderStatus);
+            List<DriverListVo> list = waybillOrderSubtaskMapper.selectLoopOrderAndDriverListByOrderId(driverParam,Integer.valueOf(driverParam.getType()),orderStatus);
             if (CollectionUtils.isNotEmpty(list)) {
                 List<String> collect = list.stream().map(DriverListVo::getTruckNo).distinct().collect(Collectors.toList());
                 if (CollectionUtils.isNotEmpty(collect)) {
@@ -1129,7 +1171,7 @@ public class KwtAcceptCarriageOrderService {
                 }
             }
             //只展示待接单数据统计
-            List<DriverListVo> truckCount = logisticsOrderMapper.selectDriverCountById(driverParam);
+            List<DriverListVo> truckCount = logisticsOrderMapper.selectDriverCountById(driverParam,Integer.valueOf(driverParam.getType()));
             Map<String, Integer> truckMap = new HashMap<>(Global.NUMERICAL_SIXTEEN);
             truckCount.forEach(entity -> {
                 truckMap.put(entity.getTruckNo(), entity.getCount());
@@ -1155,7 +1197,14 @@ public class KwtAcceptCarriageOrderService {
             }
             result.setData(list);
         } else if (String.valueOf(NumberConstant.TWO).equals(driverParam.getType())) {
-            List<DriverListVo> list = logisticsOrderMapper.selectLoopOrderAndDriverListByOrderId(driverParam);
+            List<Integer> orderStatus = new ArrayList<>() {{
+                add(CarWaybillEnum.APPROVAL_PASS.getCode());
+                add(CarWaybillEnum.APPROVAL_IN.getCode());
+                add(CarWaybillEnum.APPROVAL_NO_PASS.getCode());
+                add(CarWaybillEnum.APPROVAL_TREAT.getCode());
+            }};
+//            List<DriverListVo> list1 = logisticsOrderMapper.selectLoopOrderAndDriverListByOrderId(driverParam);
+            List<DriverListVo> list = waybillOrderSubtaskMapper.selectLoopOrderAndDriverListByOrderId(driverParam,Integer.valueOf(driverParam.getType()),orderStatus);
             if (CollectionUtils.isNotEmpty(list)) {
                 List<String> collect = list.stream().map(DriverListVo::getTruckNo).distinct().collect(Collectors.toList());
                 if (CollectionUtils.isNotEmpty(collect)) {
@@ -1234,24 +1283,44 @@ public class KwtAcceptCarriageOrderService {
      */
     @Transactional(rollbackFor = Exception.class)
     public HttpResult stopDocumentCommit(StopOrderTakingDTO stopOrderTakingDTO) {
-        List<String> stringList = StringUtils.splitStrToList(stopOrderTakingDTO.getIds(), ",", String.class);
-        List<Long> circulateIds = logisticsOrderCirculateMapper.selectEntityBylOrderIdAndOrderIds(stopOrderTakingDTO.getLOrderId(), stringList);
-        if (CollectionUtils.isEmpty(circulateIds)) {
+        List<Long> ids = StringUtils.splitStrToList(stopOrderTakingDTO.getIds(), ",", Long.class);
+        List<KwtWaybillOrderSubtask> subtasks = waybillOrderSubtaskMapper.selectList(new LambdaQueryWrapper<KwtWaybillOrderSubtask>()
+                        .eq(KwtWaybillOrderSubtask::getDelFlag,0)
+                        .eq(KwtWaybillOrderSubtask::getLOrderId,Long.parseLong(stopOrderTakingDTO.getLOrderId()))
+                                .in(KwtWaybillOrderSubtask::getId,ids)
+        );
+        if (CollectionUtils.isEmpty(subtasks)) {
             return HttpResult.error("循环停止接单,单据不存在!");
         }
-        List<JSONObject> list = new ArrayList<>(stringList.size());
-        acceptStopDocumentCommit(stopOrderTakingDTO, list, circulateIds);
-//        String type = stopOrderTakingDTO.getType();
-//        if (String.valueOf(NumberConstant.TWO).equals(type)) {
-//            acceptStopDocumentCommit(stopOrderTakingDTO, list, wOrderIds);
-//        } else if (String.valueOf(NumberConstant.ONE).equals(type)) {
-//            consignStopDocumentCommit(stopOrderTakingDTO, list, wOrderIds);
-//        } else {
-//            return HttpResult.error("单据类型错误!");
-//        }
+        List<JSONObject> list = new ArrayList<>(subtasks.size());
+        updateWayBillOrderSubtask(stopOrderTakingDTO, list,ids );
         return HttpResult.ok(list);
     }
 
+    /**
+     * 承运订单设置停止接单
+     *
+     * @param stopOrderTakingDTO
+     */
+    private void updateWayBillOrderSubtask(StopOrderTakingDTO stopOrderTakingDTO, List<JSONObject> list, List<Long> ids) {
+        if (CollectionUtils.isNotEmpty(ids)) {
+            ids.forEach(id -> {
+                JSONObject jsonObject = new JSONObject();
+                jsonObject.put("id", id);
+                waybillOrderSubtaskMapper.update(null, new LambdaUpdateWrapper<KwtWaybillOrderSubtask>()
+                        .set(KwtWaybillOrderSubtask::getStatus, NumberConstant.ONE)
+                        .set(KwtWaybillOrderSubtask::getUpdateBy, LoginUserHolder.getUserId())
+                        .set(KwtWaybillOrderSubtask::getUpdateTime, new Date())
+                        .eq(KwtWaybillOrderSubtask::getId, id)
+                );
+                jsonObject.put("status", HttpStatus.SUCCESS_CODE);
+                jsonObject.put("message", "停止接单成功");
+                list.add(jsonObject);
+            });
+        }
+    }
+
+
     /**
      * 托运订单-设置停止接单
      *

+ 48 - 33
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtConsignOrderService.java

@@ -10,10 +10,10 @@ import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.sckw.contract.api.RemoteContractService;
 import com.sckw.contract.api.model.dto.res.ContractCommonInfoResDto;
-import com.sckw.core.model.constant.NumberConstant;
 import com.sckw.core.common.enums.enums.DictTypeEnum;
 import com.sckw.core.exception.BusinessException;
 import com.sckw.core.model.constant.Global;
+import com.sckw.core.model.constant.NumberConstant;
 import com.sckw.core.model.enums.*;
 import com.sckw.core.model.page.PageRes;
 import com.sckw.core.model.page.PageResult;
@@ -30,10 +30,12 @@ import com.sckw.manage.api.RemoteManageService;
 import com.sckw.manage.api.model.dto.res.FindEntCooperateResVo;
 import com.sckw.mongo.enums.BusinessTypeEnum;
 import com.sckw.mongo.model.SckwLogisticsOrder;
-import com.sckw.mongo.model.SckwWaybillOrder;
 import com.sckw.mongo.model.TableTops;
 import com.sckw.order.api.dubbo.TradeOrderInfoService;
-import com.sckw.order.api.model.*;
+import com.sckw.order.api.model.CompleteLogisticsOrderParam;
+import com.sckw.order.api.model.GoodsLoadingParam;
+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.redis.config.RedisLockUtil;
@@ -216,6 +218,8 @@ public class KwtConsignOrderService {
         if (ObjectUtils.isEmpty(order)) {
             return HttpResult.ok();
         }
+        List<KwtWaybillOrderSubtask> waybillOrderSubtasks = waybillOrderSubtaskMapper.selectList(new LambdaQueryWrapper<KwtWaybillOrderSubtask>()
+                        .eq(StringUtils.isNotBlank(order.getId()), KwtWaybillOrderSubtask::getLOrderId, order.getId()));
         List<KwtWaybillOrder> kwtWaybillOrders = kwtWaybillOrderMapper.selectList(new LambdaQueryWrapper<KwtWaybillOrder>()
                         .eq(StringUtils.isNotBlank(order.getId()), KwtWaybillOrder::getLOrderId, order.getId())
                 /**.eq(KwtWaybillOrder::getEntId, LoginUserHolder.getEntId())*/);
@@ -235,8 +239,8 @@ public class KwtConsignOrderService {
         BigDecimal defectiveWeighNumber = NumberConstant.ZERO_TWO;
         //扣亏量/吨
         BigDecimal deductWeighNumber = NumberConstant.ZERO_TWO;
-        if (CollectionUtils.isNotEmpty(kwtWaybillOrders)) {
-            for (KwtWaybillOrder kwtWaybillOrder : kwtWaybillOrders) {
+        if (CollectionUtils.isNotEmpty(waybillOrderSubtasks)) {
+            for (KwtWaybillOrderSubtask kwtWaybillOrder : waybillOrderSubtasks) {
                 //派车量
                 BigDecimal sendCarWeigh = kwtWaybillOrder.getEntrustAmount() == null ? NumberConstant.ZERO_TWO : kwtWaybillOrder.getEntrustAmount();
                 /**亏吨量/吨->装货量-卸货量
@@ -267,7 +271,7 @@ public class KwtConsignOrderService {
                 deductWeighNumber = deductWeighNumber.add(deduct);
             }
         }
-        statistics.put("count", kwtWaybillOrders.size());
+        statistics.put("count", waybillOrderSubtasks.size());
         statistics.put("sendCarWeighNumber", sendCarWeighNumber);
         statistics.put("loadAmountNumber", loadAmountNumber);
         statistics.put("unloadAmountNumber", unloadAmountNumber);
@@ -473,37 +477,41 @@ public class KwtConsignOrderService {
         if (CollectionUtils.isNotEmpty(list)) {
             list.forEach(circulateId -> {
                 JSONObject jsonObject = new JSONObject();
-                jsonObject.put("circulateId", circulateId);
-                KwtLogisticsOrderCirculate circulate = kwtLogisticsOrderCirculateMapper.selectOne(new LambdaUpdateWrapper<KwtLogisticsOrderCirculate>()
-                        .eq(KwtLogisticsOrderCirculate::getId, circulateId)
+                jsonObject.put("id", circulateId);
+//                KwtLogisticsOrderCirculate circulate = kwtLogisticsOrderCirculateMapper.selectOne(new LambdaUpdateWrapper<KwtLogisticsOrderCirculate>()
+//                        .eq(KwtLogisticsOrderCirculate::getId, circulateId)
+//                );
+                List<KwtWaybillOrderSubtask> subtasks = waybillOrderSubtaskMapper.selectList(new LambdaQueryWrapper<KwtWaybillOrderSubtask>()
+                        .eq(KwtWaybillOrderSubtask::getId, circulateId)
+                        .eq(KwtWaybillOrderSubtask::getDelFlag, 0)
                 );
-                if (circulate == null) {
+                if (subtasks == null) {
                     jsonObject.put("status", HttpStatus.GLOBAL_EXCEPTION_CODE);
                     jsonObject.put("message", "单据不存在或者单据异常");
                 } else {
                     /**循环单逻辑失效 如果已生成趟次数据,则不处理趟次数据*/
-                    kwtLogisticsOrderCirculateMapper.update(null, new LambdaUpdateWrapper<KwtLogisticsOrderCirculate>()
-                            .set(KwtLogisticsOrderCirculate::getStatus, NumberConstant.ONE)
-                            .set(KwtLogisticsOrderCirculate::getUpdateBy, LoginUserHolder.getUserId())
-                            .set(KwtLogisticsOrderCirculate::getUpdateTime, new Date())
-                            .eq(KwtLogisticsOrderCirculate::getId, circulateId)
-                            .eq(KwtLogisticsOrderCirculate::getLOrderId, Long.parseLong(lOrderId))
+                    waybillOrderSubtaskMapper.update(null, new LambdaUpdateWrapper<KwtWaybillOrderSubtask>()
+                            .set(KwtWaybillOrderSubtask::getStatus, NumberConstant.ONE)
+                            .set(KwtWaybillOrderSubtask::getUpdateBy, LoginUserHolder.getUserId())
+                            .set(KwtWaybillOrderSubtask::getUpdateTime, new Date())
+                            .eq(KwtWaybillOrderSubtask::getId, circulateId)
+                            .eq(KwtWaybillOrderSubtask::getLOrderId, Long.parseLong(lOrderId))
                     );
-                    /**更新MongoDB*/
-                    if (circulate.getWOrderId() != null) {
-                        SckwWaybillOrder order = new SckwWaybillOrder();
-                        order.set_id(circulate.getWOrderId());
-                        order.setWOrderId(circulate.getWOrderId());
-//                        order.setStatus(NumberConstant.ONE);
-                        order.setUpdateTime(new Date());
-                        order.setUpdateByName(LoginUserHolder.getUserName());
-                        order.setUpdateBy(LoginUserHolder.getUserId());
-                        SckwBusSum busSum = new SckwBusSum();
-                        busSum.setBusSumType(BusinessTypeEnum.WAYBILL_ORDER_TYPE.getName());
-                        busSum.setMethod(NumberConstant.TWO);
-                        busSum.setObject(order);
-                        streamBridge.send("sckw-busSum", com.alibaba.fastjson2.JSON.toJSONString(busSum));
-                    }
+//                    /**更新MongoDB*/
+//                    if (circulate.getWOrderId() != null) {
+//                        SckwWaybillOrder order = new SckwWaybillOrder();
+//                        order.set_id(circulate.getWOrderId());
+//                        order.setWOrderId(circulate.getWOrderId());
+////                        order.setStatus(NumberConstant.ONE);
+//                        order.setUpdateTime(new Date());
+//                        order.setUpdateByName(LoginUserHolder.getUserName());
+//                        order.setUpdateBy(LoginUserHolder.getUserId());
+//                        SckwBusSum busSum = new SckwBusSum();
+//                        busSum.setBusSumType(BusinessTypeEnum.WAYBILL_ORDER_TYPE.getName());
+//                        busSum.setMethod(NumberConstant.TWO);
+//                        busSum.setObject(order);
+//                        streamBridge.send("sckw-busSum", com.alibaba.fastjson2.JSON.toJSONString(busSum));
+//                    }
                     jsonObject.put("status", HttpStatus.SUCCESS_CODE);
                     jsonObject.put("message", "停止接单成功");
                 }
@@ -572,7 +580,14 @@ public class KwtConsignOrderService {
         }
         /**请求参数校验*/
         checkParam(driverParam);
-        List<DriverListVo> list = kwtLogisticsOrderMapper.selectLoopOrderAndDriverListByOrderId(driverParam);
+//        List<DriverListVo> list = kwtLogisticsOrderMapper.selectLoopOrderAndDriverListByOrderId(driverParam);
+        List<Integer> orderStatus = new ArrayList<>() {{
+            add(CarWaybillEnum.APPROVAL_PASS.getCode());
+            add(CarWaybillEnum.APPROVAL_IN.getCode());
+            add(CarWaybillEnum.APPROVAL_NO_PASS.getCode());
+            add(CarWaybillEnum.APPROVAL_TREAT.getCode());
+        }};
+        List<DriverListVo> list = waybillOrderSubtaskMapper.selectLoopOrderAndDriverListByOrderId(driverParam, Integer.valueOf(driverParam.getType()), orderStatus);
         Map<String, RTruckVo> truck = new HashMap<>(Global.NUMERICAL_SIXTEEN);
         if (CollectionUtils.isNotEmpty(list)) {
             List<String> collect = list.stream().map(DriverListVo::getTruckNo).distinct().collect(Collectors.toList());
@@ -1277,7 +1292,7 @@ public class KwtConsignOrderService {
             put("upperlOrderId", orderId);
             put("passStatus", Global.NUMERICAL_ONE);
         }};
-        WaybillCountVo waybillOrderCount = kwtWaybillOrderMapper.findWaybillOrderCount(map);
+        //WaybillCountVo waybillOrderCount = kwtWaybillOrderMapper.findWaybillOrderCount(map);
         OrderFinishVO orderFinishVO = new OrderFinishVO();
         List<OrderGoodsLoadingVo> assistUnit = new ArrayList<>();
         //单位

+ 16 - 11
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtLogisticsOrderConsignmentService.java

@@ -149,6 +149,7 @@ public class KwtLogisticsOrderConsignmentService {
      *
      * @param dto
      */
+    @Transactional
     public void logisticsConsignmentSave(LogisticsConsignmentDto dto) {
         commonService.getRedisGenerateOrderNo();
         Long count = logisticsOrderMapper.selectCount(new LambdaQueryWrapper<KwtLogisticsOrder>().eq(KwtLogisticsOrder::getTOrderId, dto.getTOrderId()));
@@ -893,9 +894,9 @@ public class KwtLogisticsOrderConsignmentService {
     private void checkLogisticsOrder(AddLogisticsOrderParam addOrderDTO) {
         /**计费方式验证*/
         if (!DictEnum.CHARGING_TYPE_4.getValue().equals(addOrderDTO.getBillingMode())) {
-            if (Objects.isNull(addOrderDTO.getGoodsId())) {
-                throw new RuntimeException("商品id不能为空");
-            }
+//            if (Objects.isNull(addOrderDTO.getGoodsId())) {
+//                throw new RuntimeException("商品id不能为空");
+//            }
             if (addOrderDTO.getPrice() == null || addOrderDTO.getPrice().compareTo(NumberConstant.ZERO_TWO) < 1) {
                 throw new RuntimeException("运价填写错误");
             }
@@ -1410,6 +1411,7 @@ public class KwtLogisticsOrderConsignmentService {
      * @param logisticsOrderSubcontractDto
      * @return
      */
+    @Transactional
     public HttpResult logisticsOrderSubcontract(LogisticsOrderSubcontractDto bo) {
         HttpResult httpResult = ValidUtil.serviceValid(bo);
         String key = String.format(RedisConstant.LOGISTICS_ORDER_SUBCONTRACT_KEY, bo.getLOrderId());
@@ -1570,6 +1572,7 @@ public class KwtLogisticsOrderConsignmentService {
                             MessageEnum.INITIATING_LOGISTICS_CONSIGNMENT, MessageEnum.NEW_CARRIAGE_ORDER,
                             "1");
                 }
+                /** 2024-03-26 停止mq->mongodb数据*/
                 //修改父级mongodb数据
                 //更新mongodb
                 SckwLogisticsOrder lOrder = new SckwLogisticsOrder();
@@ -1589,10 +1592,10 @@ public class KwtLogisticsOrderConsignmentService {
                 //操作对象(1新增/2修改/3替换数据)
                 busSum.setMethod(2);
                 //业务汇总数据对象
-                busSum.setObject(lOrder);
-                streamBridge.send("sckw-busSum", com.alibaba.fastjson2.JSON.toJSONString(busSum));
-                //新增当前分包mongodb数据
-                subcontractSendMongoDB(lOrderNo, orderId, bo, logisticsOrder, orderStatus);
+//                busSum.setObject(lOrder);
+//                streamBridge.send("sckw-busSum", com.alibaba.fastjson2.JSON.toJSONString(busSum));
+//                //新增当前分包mongodb数据
+//                subcontractSendMongoDB(lOrderNo, orderId, bo, logisticsOrder, orderStatus);
             } finally {
                 redisLockUtil.unlock(key);
             }
@@ -1758,8 +1761,8 @@ public class KwtLogisticsOrderConsignmentService {
                 if (address.getAmount().compareTo(new BigDecimal("0.00")) == 0) {
                     continue;
                 }
-                if (parentLoadOrderMap.get(address.getAddressId()) != null) {
-                    KwtLogisticsOrderAddress loadAddressData = parentLoadOrderMap.get(address.getAddressId());
+                if (parentLoadOrderMap.get(Long.parseLong(address.getAddressId())) != null) {
+                    KwtLogisticsOrderAddress loadAddressData = parentLoadOrderMap.get(Long.parseLong(address.getAddressId()));
                     KwtLogisticsOrderAddress loadOrderAddress = new KwtLogisticsOrderAddress();
                     long addressId = new IdWorker(NumberConstant.ONE).nextId();
                     loadOrderAddress.setId(addressId);
@@ -1769,6 +1772,7 @@ public class KwtLogisticsOrderConsignmentService {
                     loadOrderAddress.setDetailAddress(loadAddressData.getDetailAddress());
                     loadOrderAddress.setContacts(loadAddressData.getContacts());
                     loadOrderAddress.setLOrderId(orderId);
+                    loadOrderAddress.setSort(address.getSort());
                     loadOrderAddress.setLat(loadAddressData.getLat());
                     loadOrderAddress.setFence(loadAddressData.getFence());
                     loadOrderAddress.setCityName(loadAddressData.getCityName());
@@ -1826,8 +1830,8 @@ public class KwtLogisticsOrderConsignmentService {
                 if (address.getAmount().compareTo(new BigDecimal("0.00")) == 0) {
                     continue;
                 }
-                if (parentLoadOrderMap.get(address.getAddressId()) != null) {
-                    KwtLogisticsOrderAddress loadAddressData = parentLoadOrderMap.get(address.getAddressId());
+                if (parentUnloadOrderMap.get(Long.parseLong(address.getAddressId())) != null) {
+                    KwtLogisticsOrderAddress loadAddressData = parentUnloadOrderMap.get(Long.parseLong(address.getAddressId()));
                     KwtLogisticsOrderAddress unloadOrderAddress = new KwtLogisticsOrderAddress();
                     long addressId = new IdWorker(NumberConstant.ONE).nextId();
                     unloadOrderAddress.setId(addressId);
@@ -1853,6 +1857,7 @@ public class KwtLogisticsOrderConsignmentService {
                     unloadOrderAddress.setLng(loadAddressData.getLng());
                     unloadOrderAddress.setRemark(loadAddressData.getRemark());
                     unloadOrderAddress.setStatus(loadAddressData.getStatus());
+                    unloadOrderAddress.setSort(address.getSort());
                     logisticsOrderAddressMapper.insert(unloadOrderAddress);
 
                     KwtLogisticsOrderAmount orderAmount = new KwtLogisticsOrderAmount();

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

@@ -979,7 +979,7 @@ public class KwtTransportCommonService {
             put("upperlOrderId", orderId);
             put("passStatus", Global.NUMERICAL_ONE);
         }};
-        WaybillCountVo waybillOrderCount = waybillOrderMapper.findWaybillOrderCount(map);
+        //WaybillCountVo waybillOrderCount = waybillOrderMapper.findWaybillOrderCount(map);
         OrderFinishVO orderFinishVO = new OrderFinishVO();
         List<OrderGoodsLoadingVo> assistUnit = new ArrayList<>();
         //单位

+ 45 - 38
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtWaybillOrderService.java

@@ -115,7 +115,9 @@ public class KwtWaybillOrderService {
      **/
     public Map<String, Object> findStatisticsCountByDriver(Long driverId, HttpServletRequest request) {
         //参数
-        Map<String, Object> params = new HashMap<>(){{put("driverId", driverId);}};
+        Map<String, Object> params = new HashMap<>() {{
+            put("driverId", driverId);
+        }};
 
         //专场逻辑
         String accessSpecial = request.getHeader("Access-Special");
@@ -475,10 +477,10 @@ public class KwtWaybillOrderService {
         List<Long> lOrderIds = new ArrayList<>();
         //物流订单装卸货地址委派量统计
         Map<Long, BigDecimal> truckTotalEntrustAmount = new HashMap<>(NumberConstant.SIXTEEN);
-        for (SendCarInfoDto sendCar:sends) {
+        for (SendCarInfoDto sendCar : sends) {
             //趟次(循环单默认趟次为1)
             int count = params.getType() == Global.NUMERICAL_ONE ? sendCar.getCount() : Global.NUMERICAL_ONE;
-            for (int i=0; i<count; i++) {
+            for (int i = 0; i < count; i++) {
                 //新增运单信息
                 KwtWaybillOrderV1 waybillOrder = sendCarDriver(sendCar, params.getType());
                 //运输委托信息
@@ -490,7 +492,7 @@ public class KwtWaybillOrderService {
                 //物流订单委派卸货时间
                 Map<Long, List<Date>> unloadTime = new HashMap<>(NumberConstant.SIXTEEN);
                 /**数据组装**/
-                for (SendCarEntrustDto sendCarEntrust:entrusts) {
+                for (SendCarEntrustDto sendCarEntrust : entrusts) {
                     //物流运单ID
                     Long lOrderId = sendCarEntrust.getLOrderId();
                     //委派量
@@ -501,7 +503,9 @@ public class KwtWaybillOrderService {
                     if (sendCarEntrust.getAddressType() == AddressDefaultTypeEnum.SHIPMENT.getCode()) {
                         if (entrustAmount.get(lOrderId) == null) {
                             entrustAmount.put(lOrderId, amount);
-                            loadTime.put(lOrderId, new ArrayList<>(){{add(planTime);}});
+                            loadTime.put(lOrderId, new ArrayList<>() {{
+                                add(planTime);
+                            }});
                         } else {
                             List<Date> time = loadTime.get(lOrderId);
                             time.add(planTime);
@@ -510,7 +514,9 @@ public class KwtWaybillOrderService {
                         }
                     } else {
                         if (entrustAmount.get(lOrderId) == null) {
-                            unloadTime.put(lOrderId, new ArrayList<>(){{add(planTime);}});
+                            unloadTime.put(lOrderId, new ArrayList<>() {{
+                                add(planTime);
+                            }});
                         } else {
                             List<Date> time = unloadTime.get(lOrderId);
                             time.add(planTime);
@@ -537,7 +543,6 @@ public class KwtWaybillOrderService {
         /**4、更新承运订单状态(包括上级承运订单)**/
 
 
-
         System.out.println(JSON.toJSONString(params));
         return HttpResult.ok();
     }
@@ -605,7 +610,7 @@ public class KwtWaybillOrderService {
         if (CollectionUtils.isEmpty(params.getSends())) {
             return HttpResult.error("请选择委派信息!");
         } else {
-            for (SendCarInfoDto sendCar:params.getSends()) {
+            for (SendCarInfoDto sendCar : params.getSends()) {
                 if (CollectionUtils.isEmpty(sendCar.getEntrusts())) {
                     return HttpResult.error("请选择委派信息!");
                 }
@@ -618,7 +623,7 @@ public class KwtWaybillOrderService {
         List<Long> lOrderIds = new ArrayList<>();
         //物流订单装卸货地址委派量统计
         Map<Long, BigDecimal> truckTotalEntrustAmount = new HashMap<>(NumberConstant.SIXTEEN);
-        for (SendCarInfoDto sendCar:sends) {
+        for (SendCarInfoDto sendCar : sends) {
             //运输委托信息
             List<SendCarEntrustDto> entrusts = sendCar.getEntrusts();
             /**数据组装**/
@@ -636,10 +641,10 @@ public class KwtWaybillOrderService {
         List<Long> lOrderIdsList = lOrderIds.stream().distinct().collect(Collectors.toList());
 
         /**校验物流运单是否可以派车**/
-        for (Long lOrderId:lOrderIdsList) {
+        for (Long lOrderId : lOrderIdsList) {
             KwtLogisticsOrder logisticsOrder = logisticsOrderDao.selectById(lOrderId);
             if (logisticsOrder == null) {
-                return HttpResult.error("订单"+lOrderId+"已不存在!");
+                return HttpResult.error("订单" + lOrderId + "已不存在!");
             }
 
             //状态校验
@@ -662,7 +667,7 @@ public class KwtWaybillOrderService {
             queryAmount.setLOrderId(lOrderId);
             queryAmount.setAddressType(AddressDefaultTypeEnum.SHIPMENT.getCode());
             List<KwtLogisticsOrderAmount> logisticsOrderAmounts = logisticsOrderAmountDao.findByAddress(queryAmount);
-            for (KwtLogisticsOrderAmount orderAmount:logisticsOrderAmounts) {
+            for (KwtLogisticsOrderAmount orderAmount : logisticsOrderAmounts) {
                 BigDecimal truckEntrustAmount = truckTotalEntrustAmount.get(orderAmount.getLAddressId());
                 //当前下游司机委派量 + 历史下游司机委派量 + 分包量
                 BigDecimal actualAmount = truckEntrustAmount.add(entrustAmountTotal);
@@ -677,7 +682,7 @@ public class KwtWaybillOrderService {
 
     /**
      * @param sendCar 车辆司机信息
-     * @param type 派车类型(1 趟次、2 循环)
+     * @param type    派车类型(1 趟次、2 循环)
      * @desc 运单信息
      * @author zk
      * @date 2024/3/4
@@ -692,7 +697,7 @@ public class KwtWaybillOrderService {
         //运单信息
         KwtWaybillOrderV1 waybillOrder = new KwtWaybillOrderV1();
         waybillOrder.setEntId(LoginUserHolder.getEntId());
-        waybillOrder.setWOrderNo("W"+System.currentTimeMillis());
+        waybillOrder.setWOrderNo("W" + System.currentTimeMillis());
         waybillOrder.setType(type);
         waybillOrder.setTruckId(sendCar.getTruckId());
         waybillOrder.setTruckNo(truck != null ? truck.getTruckNo() : null);
@@ -706,16 +711,16 @@ public class KwtWaybillOrderService {
     }
 
     /**
-     * @param waybillOrder 运单信息
+     * @param waybillOrder  运单信息
      * @param entrustAmount 运输委托信息
-     * @param loadTime 装货时间
-     * @param unloadTime 卸货时间
+     * @param loadTime      装货时间
+     * @param unloadTime    卸货时间
      * @desc 车辆运单-子运单信息
      * @author zk
      * @date 2024/3/4
      **/
     public List<KwtWaybillOrderSubtask> sendCarSubtask(KwtWaybillOrderV1 waybillOrder, Map<Long, BigDecimal> entrustAmount,
-                                                 Map<Long, List<Date>> loadTime, Map<Long, List<Date>> unloadTime) {
+                                                       Map<Long, List<Date>> loadTime, Map<Long, List<Date>> unloadTime) {
         List<KwtWaybillOrderSubtask> subtasks = new ArrayList<>();
         for (Long key : entrustAmount.keySet()) {
             List<Date> loadTime1 = loadTime.get(key);
@@ -729,7 +734,7 @@ public class KwtWaybillOrderService {
             orderSubtask.setWOrderId(waybillOrder.getId());
             orderSubtask.setWOrderNo(waybillOrder.getWOrderNo());
             orderSubtask.setUnit(logisticsOrder != null ? logisticsOrder.getUnit() : null);
-            orderSubtask.setEntrustAmount(entrustAmount.get(key).doubleValue());
+            orderSubtask.setEntrustAmount(entrustAmount.get(key));
             orderSubtask.setLoadTime(loadTime1.get(Global.NUMERICAL_ZERO));
             orderSubtask.setUnloadTime(unloadTime1.get(Global.NUMERICAL_ZERO));
             orderSubtask.setStatus(waybillOrder.getStatus());
@@ -741,7 +746,7 @@ public class KwtWaybillOrderService {
 
     /**
      * @param sendCarEntrust 运输委托信息
-     * @param waybillOrder 运单信息
+     * @param waybillOrder   运单信息
      * @desc 运单地址信息
      * @author zk
      * @date 2024/3/4
@@ -764,8 +769,6 @@ public class KwtWaybillOrderService {
     }
 
 
-
-
     /**
      * @param params         派车请求参数
      * @param logisticsOrder 物流订单
@@ -2079,10 +2082,10 @@ public class KwtWaybillOrderService {
         }
 
         /**6跟新司机/车辆数据**/
-         //更新司机信息
-         editDriver(waybillOrder.getDriverId());
-         //更新车辆信息
-         editTruck(waybillOrder.getTruckId());
+        //更新司机信息
+        editDriver(waybillOrder.getDriverId());
+        //更新车辆信息
+        editTruck(waybillOrder.getTruckId());
 
         /**7更新承运订单entrustAmount
          //更新卸货量/卸货时间/亏吨/亏吨扣款
@@ -3135,6 +3138,7 @@ public class KwtWaybillOrderService {
 
     /**
      * 承运订单-托运订单-订单详情数据统计
+     *
      * @param orderId
      * @param type
      * @return
@@ -3153,6 +3157,7 @@ public class KwtWaybillOrderService {
 
     /**
      * 承运数据统计
+     *
      * @param orderId
      * @return
      */
@@ -3173,12 +3178,14 @@ public class KwtWaybillOrderService {
         orderStatusList.add(CarWaybillEnum.COMPLETION_UNLOADING.getCode());
         orderStatusList.add(CarWaybillEnum.APPROVAL_NO_PASS.getCode());
         orderStatusList.add(CarWaybillEnum.APPROVAL_IN.getCode());
-        Integer proceed = logisticsOrderDao.selectCountByLorderId(orderId, orderStatusList);
+//        Integer proceed = logisticsOrderDao.selectCountByLorderId(orderId, orderStatusList);
+        Integer proceed = waybillOrderSubtaskDao.selectCountByOrderId(orderId, orderStatusList);
         map.put("proceed", proceed);
         orderStatusList.clear();
 
         orderStatusList.add(CarWaybillEnum.APPROVAL_PASS.getCode());
-        Integer finish = logisticsOrderDao.selectCountByLorderId(orderId, orderStatusList);
+//        Integer finish = logisticsOrderDao.selectCountByLorderId(orderId, orderStatusList);
+        Integer finish = waybillOrderSubtaskDao.selectCountByOrderId(orderId, orderStatusList);
         map.put("finish", finish);
 
         orderStatusList.clear();
@@ -3186,7 +3193,8 @@ public class KwtWaybillOrderService {
         orderStatusList.add(CarWaybillEnum.REFUSE_TRAFFIC.getCode());
         orderStatusList.add(CarWaybillEnum.REVOKED.getCode());
 //        orderStatusList.add(CarWaybillEnum.APPROVAL_NO_PASS.getCode());
-        Integer cancel = logisticsOrderDao.selectCountByLorderId(orderId, orderStatusList);
+//        Integer cancel = logisticsOrderDao.selectCountByLorderId(orderId, orderStatusList);
+        Integer cancel = waybillOrderSubtaskDao.selectCountByOrderId(orderId, orderStatusList);
         map.put("cancel", cancel);
 
         map.put("total", proceed + finish + cancel);
@@ -3195,6 +3203,7 @@ public class KwtWaybillOrderService {
 
     /**
      * 托运数据统计
+     *
      * @param orderId
      * @return
      */
@@ -3217,19 +3226,22 @@ public class KwtWaybillOrderService {
         orderStatusList.add(CarWaybillEnum.APPROVAL_IN.getCode());
         orderStatusList.add(CarWaybillEnum.COMPLETION_UNLOADING.getCode());
         orderStatusList.add(CarWaybillEnum.APPROVAL_NO_PASS.getCode());
-        Integer proceed = logisticsOrderDao.selectCountByLorderId(orderId, orderStatusList);
+//        Integer proceed = logisticsOrderDao.selectCountByLorderId(orderId, orderStatusList);
+        Integer proceed = waybillOrderSubtaskDao.selectCountByOrderId(orderId, orderStatusList);
         map.put("proceed", proceed);
 
         orderStatusList.clear();
         orderStatusList.add(CarWaybillEnum.APPROVAL_PASS.getCode());
-        Integer finish = logisticsOrderDao.selectCountByLorderId(orderId, orderStatusList);
+//        Integer finish = logisticsOrderDao.selectCountByLorderId(orderId, orderStatusList);
+        Integer finish = waybillOrderSubtaskDao.selectCountByOrderId(orderId, orderStatusList);
         map.put("finish", finish);
 
         orderStatusList.clear();
         orderStatusList.add(CarWaybillEnum.REJECT_ORDER.getCode());
         orderStatusList.add(CarWaybillEnum.REFUSE_TRAFFIC.getCode());
         orderStatusList.add(CarWaybillEnum.REVOKED.getCode());
-        Integer cancel = logisticsOrderDao.selectCountByLorderId(orderId, orderStatusList);
+//        Integer cancel = logisticsOrderDao.selectCountByLorderId(orderId, orderStatusList);
+        Integer cancel = waybillOrderSubtaskDao.selectCountByOrderId(orderId, orderStatusList);
         map.put("cancel", cancel);
 
         map.put("total", proceed + finish + cancel);
@@ -3238,6 +3250,7 @@ public class KwtWaybillOrderService {
 
     /**
      * 查询已排量、待运量数据
+     *
      * @param orderId 物流订单id
      * @return
      */
@@ -3273,12 +3286,6 @@ public class KwtWaybillOrderService {
     /*--------------------多装多卸--------------------*/
 
 
-
-
-
-
-
-
     /**
      * @param type  字典类型
      * @param value 字典值

+ 3 - 3
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtWaybillOrderSubtaskService.java

@@ -47,11 +47,11 @@ public class KwtWaybillOrderSubtaskService {
         orderSubtask.setWOrderId(waybillOrder.getId());
         orderSubtask.setWOrderNo(waybillOrder.getWOrderNo());
         orderSubtask.setUnit(logisticsOrder != null ? logisticsOrder.getUnit() : null);
-        orderSubtask.setEntrustAmount(entrustAmount.doubleValue());
+        orderSubtask.setEntrustAmount(entrustAmount);
         orderSubtask.setLoadTime(loadTime.get(Global.NUMERICAL_ZERO));
-        orderSubtask.setLoadAmount(NumberConstant.ZERO_TWO.doubleValue());
+        orderSubtask.setLoadAmount(NumberConstant.ZERO_TWO);
         orderSubtask.setUnloadTime(unloadTime.get(Global.NUMERICAL_ZERO));
-        orderSubtask.setUnloadAmount(NumberConstant.ZERO_TWO.doubleValue());
+        orderSubtask.setUnloadAmount(NumberConstant.ZERO_TWO);
         orderSubtask.setStatus(waybillOrder.getStatus());
         waybillOrderSubtaskDao.insert(orderSubtask);
         return orderSubtask;

+ 4 - 3
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtWaybillOrderTicketService.java

@@ -297,6 +297,7 @@ public class KwtWaybillOrderTicketService {
             unload.setAmount(unloadAmount);
             load.setMain(subtask.getUnit().equals(goodsUnit.getUnit()));
 
+            waybillTicket.setUnitLabe(unitMap.get(goodsUnit.getUnit()));
             waybillTicket.setLoadUrl(loadUrls);
             waybillTicket.setLoadTime(unloadDate.get().getOperateTime());
             waybillTicket.setLoadWeight(loadAmount);
@@ -337,16 +338,16 @@ public class KwtWaybillOrderTicketService {
     /**
      * 单证信息
      * @param subtask 运单-子单
-     * @param type 单证类型
+     * @param wAddressId 运单地址ID
      * @return 运载信息
      */
-    public List<WaybillOrderLoadingVO> agreementV1(KwtWaybillOrderSubtask subtask, int type) {
+    public List<WaybillOrderLoadingVO> agreementV1(KwtWaybillOrderSubtask subtask, Long wAddressId) {
         //运载信息
         List<WaybillOrderLoadingVO> loadLoading = new ArrayList<>();
         //单位数据字典
         Map<String, SysDictResDto> unitType = remoteSystemService.queryDictMapByType(DictTypeEnum.UNIT_TYPE.getType());
         //装载信息
-        List<KwtWaybillOrderTicket> loading = ticketMapper.findWaybillOrderTicket(subtask.getWOrderId(), subtask.getId(), type);
+        List<KwtWaybillOrderTicket> loading = ticketMapper.findWaybillOrderTicketV3(wAddressId, null);
         if (CollectionUtils.isNotEmpty(loading)) {
             loading.forEach(e -> {
                 SysDictResDto sysDict = unitType != null ? unitType.get(e.getUnit()) : null;

+ 140 - 42
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtWaybillOrderV1Service.java

@@ -22,7 +22,11 @@ import com.sckw.fleet.api.model.vo.RDriverVo;
 import com.sckw.fleet.api.model.vo.RTruckVo;
 import com.sckw.mongo.model.SckwWaybillOrder;
 import com.sckw.order.api.dubbo.TradeOrderInfoService;
+import com.sckw.stream.enums.MessageEnum;
+import com.sckw.stream.model.SckwMessage;
+import com.sckw.stream.model.UserInfo;
 import com.sckw.system.api.RemoteSystemService;
+import com.sckw.system.api.RemoteUserService;
 import com.sckw.system.api.model.dto.res.AreaTreeFrontResDto;
 import com.sckw.system.api.model.dto.res.EntCacheResDto;
 import com.sckw.system.api.model.dto.res.SysDictResDto;
@@ -96,6 +100,8 @@ public class KwtWaybillOrderV1Service {
     private StreamBridge streamBridge;
     @DubboReference(version = "1.0.0", group = "design", check = false)
     private RemoteSystemService remoteSystemService;
+    @DubboReference(version = "1.0.0", group = "design", check = false, timeout = 6000)
+    private RemoteUserService remoteUserService;
     @DubboReference(version = "1.0.0", group = "design", check = false)
     private RemoteFleetService remoteFleetService;
     @DubboReference(version = "1.0.0", group = "design", check = false)
@@ -145,12 +151,12 @@ public class KwtWaybillOrderV1Service {
      * @author zk
      * @date 2024/3/8
      **/
-    public PageResult findListPage(WaybillOrderQueryDto params){
-        params.setEntId(LoginUserHolder.getEntId());
-        // 设置分页参数
-        PageHelper.startPage(params.getPage(), params.getPageSize());
+    public List<WaybillOrderSelectVo> findListPage(WaybillOrderQueryDto params){
         params.setQueryWstatus(CarWaybillTableTopEnum.getValue(params.getStatus()));
         List<WaybillOrderSelectVo> list = waybillOrderV1Dao.findListPage(params);
+        if (CollectionUtils.isEmpty(list)) {
+            return list;
+        }
 
         //单位
         Map<String, Map<String, String>> dict = remoteSystemService.queryDictByType(List.of(DictTypeEnum.UNIT_TYPE.getType()));
@@ -161,7 +167,7 @@ public class KwtWaybillOrderV1Service {
             findListPageHandle(waybillOrder, unitMap);
             waybillOrder.setStatusLabel(CarWaybillEnum.getName(waybillOrder.getStatus()));
         }
-        return PageHelperUtil.getPageResult(new PageInfo<>(list));
+        return list;
     }
 
     /**
@@ -198,6 +204,41 @@ public class KwtWaybillOrderV1Service {
         return PageHelperUtil.getPageResult(new PageInfo<>(data));
     }
 
+    /**
+     * @param params {page:页数、pageSize:每页条数、。。。}
+     * @desc 分页查询-运营端
+     * @author zk
+     * @date 2024/3/8
+     **/
+    public List<WaybillOrderSelectVo> findListPageManagement(WaybillOrderQueryDto params) {
+        //客户经理权限过滤
+        List<Long> authEntIdList = LoginUserHolder.getAuthEntIdList();
+        if (CollectionUtils.isEmpty(authEntIdList)) {
+            List<Long> ids = remoteUserService.findEnterpriseIdsByUserIdIsMain(LoginUserHolder.getUserId());
+            if (CollectionUtils.isEmpty(ids)){
+                return new ArrayList<>();
+            }
+            authEntIdList.addAll(ids);
+        }
+        params.setEntIds(authEntIdList);
+        params.setQueryWstatus(CarWaybillTableTopEnum.getValue(params.getStatus()));
+        List<WaybillOrderSelectVo> list = waybillOrderV1Dao.findListPage(params);
+        if (CollectionUtils.isEmpty(list)) {
+            return list;
+        }
+
+        //单位
+        Map<String, Map<String, String>> dict = remoteSystemService.queryDictByType(List.of(DictTypeEnum.UNIT_TYPE.getType()));
+        Map<String, String> unitMap = CollectionUtils.isNotEmpty(dict) ? dict.get(DictTypeEnum.UNIT_TYPE.getType()) : new HashMap<>(NumberConstant.SIXTEEN);
+
+        //数据处理
+        for (WaybillOrderSelectVo waybillOrder:list) {
+            findListPageHandle(waybillOrder, unitMap);
+            waybillOrder.setStatusLabel(CarWaybillEnum.getName(waybillOrder.getStatus()));
+        }
+        return list;
+    }
+
     /**
      * @param wOrderId 运单ID
      * @desc 运单详情
@@ -222,9 +263,14 @@ public class KwtWaybillOrderV1Service {
         List<UserCacheResDto> users = remoteSystemService.queryUserCacheByIds(userIdList);
         Map<Long, UserCacheResDto> usersMap = new HashMap<>(Global.NUMERICAL_SIXTEEN);
         users.forEach(e -> usersMap.put(e.getId(), e));
+        //企业ID
+        List<Long> entIds = new ArrayList<>(){{add(waybillOrder.getEntId());}};
+        Map<Long, EntCacheResDto> ents = remoteSystemService.queryEntCacheMapByIds(entIds);
         //单位
         Map<String, Map<String, String>> dict = remoteSystemService.queryDictByType(List.of(DictTypeEnum.UNIT_TYPE.getType()));
         Map<String, String> unitMap = CollectionUtils.isNotEmpty(dict) ? dict.get(DictTypeEnum.UNIT_TYPE.getType()) : new HashMap<>(NumberConstant.SIXTEEN);
+        //车辆信息
+        RTruckVo truck = remoteFleetService.findTruck(waybillOrder.getTruckId());
 
         //返回信息
         WaybillDetailVo waybillDetail = new WaybillDetailVo();
@@ -250,7 +296,8 @@ public class KwtWaybillOrderV1Service {
             addressData.put("unit", subtask.getUnit());
             addressData.put("unitName", unitMap.get(subtask.getUnit()));
             addressData.put("amount", ticket != null ? ticket.getAmount() : null);
-            addressData.put("urls", ticket != null ? ticket.getUrls() : null);
+            addressData.put("urls", ticket != null ? FileUtils.spliceBatch(ticket.getUrls()) : null);
+            addressData.put("operateStatus", ticket != null);
             addressData.put("operateTime", ticket != null ? DateUtils.format(address.getPlanTime(), DateUtils.FORMAT11) : null);
             addressList.add(addressData);
         }
@@ -260,7 +307,7 @@ public class KwtWaybillOrderV1Service {
         for (KwtWaybillOrderTrack track:tracks) {
             Map<String, Object> trackData = new HashMap<>(NumberConstant.SIXTEEN);
             trackData.put("status", track.getStatus());
-            trackData.put("statusName", CarWaybillEnum.getAlias(waybillOrder.getStatus()));
+            trackData.put("statusName", CarWaybillEnum.getAlias(track.getStatus()));
             trackData.put("remark", track.getRemark());
             trackData.put("operateTime", track.getOperateTime());
             trackData.put("createTime", track.getCreateTime());
@@ -283,6 +330,9 @@ public class KwtWaybillOrderV1Service {
         waybillDetail.setStatusName(CarWaybillEnum.getName(waybillOrder.getStatus()));
         waybillDetail.setCreateByName(usersMap.get(waybillOrder.getCreateBy()) != null ? usersMap.get(waybillOrder.getCreateBy()).getName() : null);
         waybillDetail.setCreateByPhone(usersMap.get(waybillOrder.getCreateBy()) != null ? usersMap.get(waybillOrder.getCreateBy()).getPhone() : null);
+        waybillDetail.setTrailerNo(truck != null ? truck.getTrailerNo() : null);
+        waybillDetail.setTruckType(truck != null ? truck.getTruckType() : null);
+        waybillDetail.setFirmName(ents.get(waybillOrder.getEntId()) != null ? ents.get(waybillOrder.getEntId()).getFirmName() : null);
         waybillDetail.setTracks(trackList);
         waybillDetail.setAddresses(addressList);
         waybillDetail.setTrajectory(trajectory);
@@ -375,6 +425,9 @@ public class KwtWaybillOrderV1Service {
         //单位
         Map<String, Map<String, String>> dict = remoteSystemService.queryDictByType(List.of(DictTypeEnum.UNIT_TYPE.getType()));
         Map<String, String> unitMap = CollectionUtils.isNotEmpty(dict) ? dict.get(DictTypeEnum.UNIT_TYPE.getType()) : new HashMap<>(NumberConstant.SIXTEEN);
+        //合理损耗单位
+        Map<String, Map<String, String>> dictLoss = remoteSystemService.queryDictByType(List.of(DictTypeEnum.TAX_RATE_TYPE.getType()));
+        Map<String, String> lossMap = CollectionUtils.isNotEmpty(dictLoss) ? dictLoss.get(DictTypeEnum.TAX_RATE_TYPE.getType()) : new HashMap<>(NumberConstant.SIXTEEN);
 
         //物流订单
         KwtLogisticsOrder logisticsOrder = logisticsOrderDao.selectById(subtask.getLOrderId());
@@ -406,6 +459,7 @@ public class KwtWaybillOrderV1Service {
             addressData.put("amount", ticket != null ? ticket.getAmount() : null);
             addressData.put("urls", ticket != null ? ticket.getUrls() : null);
             addressData.put("operateTime", ticket != null ? DateUtils.format(address.getPlanTime(), DateUtils.FORMAT11) : null);
+            addressData.put("operateStatus", ticket != null);
             addressList.add(addressData);
         }
 
@@ -415,6 +469,8 @@ public class KwtWaybillOrderV1Service {
         BeanUtils.copyPropertiesValue(subtask, waybillDetail);
         waybillDetail.setWOrderId(waybillOrder.getId());
         waybillDetail.setLOrderNo(logisticsOrder.getLOrderNo());
+        waybillDetail.setLoss(logisticsOrder.getLoss());
+        waybillDetail.setLossUnitLabe(lossMap.get(waybillDetail.getUnit()));
         waybillDetail.setWSubtaskId(subtask.getId());
         waybillDetail.setStatusLabel(CarWaybillEnum.getName(waybillOrder.getStatus()));
         waybillDetail.setUnitLabel(unitMap.get(waybillDetail.getUnit()));
@@ -445,13 +501,13 @@ public class KwtWaybillOrderV1Service {
         //卸货时间
         Optional<KwtWaybillOrderSubtask> loadDate = subtasks.stream().min(Comparator.comparing(KwtWaybillOrderSubtask::getLoadTime));
         //装货地点名称
-        String loadName = loadAddresses.stream().map(KwtWaybillOrderAddress::getCityName).collect(Collectors.joining(", "));
+        List<String> loadName = loadAddresses.stream().map(KwtWaybillOrderAddress::getCityName).toList();
         //装货地点
-        String loadAddress = loadAddresses.stream().map(KwtWaybillOrderAddress::getDetailAddress).collect(Collectors.joining(", "));
+        List<String> loadAddress = loadAddresses.stream().map(KwtWaybillOrderAddress::getDetailAddress).toList();
         //卸货地点点名称
-        String unloadName = unloadAddresses.stream().map(KwtWaybillOrderAddress::getCityName).collect(Collectors.joining(", "));
+        List<String> unloadName = unloadAddresses.stream().map(KwtWaybillOrderAddress::getCityName).toList();
         //卸货地点
-        String unloadAddress = unloadAddresses.stream().map(KwtWaybillOrderAddress::getDetailAddress).collect(Collectors.joining(", "));
+        List<String> unloadAddress = unloadAddresses.stream().map(KwtWaybillOrderAddress::getDetailAddress).toList();
 
         //数据处理
         for (KwtWaybillOrderSubtask subtask:subtasks) {
@@ -584,12 +640,14 @@ public class KwtWaybillOrderV1Service {
                 trackData.put("addressName", address.getName());
                 trackData.put("addressCityName", address.getCityName());
                 trackData.put("addressDetail", address.getDetailAddress());
+                trackData.put("lat", address.getLat());
+                trackData.put("lng", address.getLng());
                 trackList.add(trackData);
             }
         }
 
         //审核状态
-        KwtWaybillOrderTrack track = waybillOrderTrackDao.findWaybillOrderTrackV1(wOrderId, CarWaybillDetailEnum.IN_TRANSIT.getValue());
+        KwtWaybillOrderTrack track = waybillOrderTrackDao.findWaybillOrderTrackV1(wOrderId, CarWaybillDetailEnum.WAIT_APPROVAL.getValue());
         Map<String, Object> trackData = new HashMap<>(NumberConstant.SIXTEEN);
         trackData.put("operateTime", track != null ? DateUtils.format(track.getOperateTime(), DateUtils.FORMAT11) : null);
         trackData.put("operateStatus", track != null);
@@ -653,6 +711,7 @@ public class KwtWaybillOrderV1Service {
                 KwtWaybillOrderTicket ticket = waybillOrderTicketDao.findWaybillOrderTicketV2(address.getId(), subtask.getUnit());
                 //数据组装
                 JSONObject addressJson = new JSONObject();
+                addressJson.put("addressType", address.getAddressType());
                 addressJson.put("addressName", address.getName());
                 addressJson.put("addressCityName", address.getCityName());
                 addressJson.put("addressDetail", address.getDetailAddress());
@@ -669,6 +728,7 @@ public class KwtWaybillOrderV1Service {
             }
 
             JSONObject order = JSON.parseObject(JSON.toJSONString(waybillOrder));
+            order.put("typeName", waybillOrder.getType() == NumberConstant.ONE ? "趟次" : "循环");
             order.put("statusName", CarWaybillEnum.getName(waybillOrder.getStatus()));
             order.put("carrierFirmName", ents.get(waybillOrder.getEntId()) != null ? ents.get(waybillOrder.getEntId()).getFirmName() : null);
             order.put("addresses", addressList);
@@ -1120,7 +1180,7 @@ public class KwtWaybillOrderV1Service {
                 KwtLogisticsOrder logisticsOrder = logisticsOrderDao.selectById(subtask.getLOrderId());
                 //承运订单已委派量=承运订单原委派量-当前车辆运单委派量
                 BigDecimal entrustAmount = logisticsOrder.getEntrustAmount() == null ? NumberConstant.ZERO_TWO : logisticsOrder.getEntrustAmount();
-                logisticsOrder.setEntrustAmount(entrustAmount.subtract(BigDecimal.valueOf(subtask.getEntrustAmount())));
+                logisticsOrder.setEntrustAmount(entrustAmount.subtract(subtask.getEntrustAmount()));
                 logisticsOrderDao.updateById(logisticsOrder);
             }
         }
@@ -1191,7 +1251,7 @@ public class KwtWaybillOrderV1Service {
             KwtLogisticsOrder logisticsOrder = logisticsOrderDao.selectById(subtask.getLOrderId());
             //承运订单已委派量=承运订单原委派量+当前车辆运单委派量
             BigDecimal entrustAmount = logisticsOrder.getEntrustAmount() == null ? NumberConstant.ZERO_TWO : logisticsOrder.getEntrustAmount();
-            logisticsOrder.setEntrustAmount(entrustAmount.add(BigDecimal.valueOf(subtask.getEntrustAmount())));
+            logisticsOrder.setEntrustAmount(entrustAmount.add(subtask.getEntrustAmount()));
             logisticsOrderDao.updateById(logisticsOrder);
         }
         return HttpResult.ok();
@@ -1256,9 +1316,29 @@ public class KwtWaybillOrderV1Service {
             KwtLogisticsOrder logisticsOrder = logisticsOrderDao.selectById(subtask.getLOrderId());
             //承运订单已委派量=承运订单原委派量-当前车辆运单委派量
             BigDecimal entrustAmount = logisticsOrder.getEntrustAmount() == null ? NumberConstant.ZERO_TWO : logisticsOrder.getEntrustAmount();
-            logisticsOrder.setEntrustAmount(entrustAmount.subtract(BigDecimal.valueOf(subtask.getEntrustAmount())));
+            logisticsOrder.setEntrustAmount(entrustAmount.subtract(subtask.getEntrustAmount()));
             logisticsOrderDao.updateById(logisticsOrder);
         }
+
+        /*6发送消息**/
+        List<UserInfo> users = new ArrayList<>() {{
+            add(new UserInfo(waybillOrder.getCreateBy(), waybillOrder.getEntId()));
+        }};
+        Map<String, Object> msgParams = new HashMap<>() {{
+            put("orderNo", waybillOrder.getWOrderNo());
+            put("driverName", waybillOrder.getDriverName());
+        }};
+        SckwMessage msg = new SckwMessage();
+        msg.setRequestId(UUIDUtils.get32UUID());
+        msg.setMessageEnum(MessageEnum.WAYBILL_REFUSE_SENDCAR_TRIP);
+        msg.setParams(msgParams);
+        msg.setMsgUrls(new HashMap<>(Global.NUMERICAL_SIXTEEN) {{
+            put("app", refuseSendCarAppUrl);
+            put("pc", refuseSendCarPcUrl);
+        }});
+        msg.setUserInfos(users);
+        msg.setCreateBy(LoginUserHolder.getUserId());
+        streamBridge.send("sckw-message", JSON.toJSONString(msg));
         return HttpResult.ok();
     }
 
@@ -1364,9 +1444,29 @@ public class KwtWaybillOrderV1Service {
             KwtLogisticsOrder logisticsOrder = logisticsOrderDao.selectById(subtask.getLOrderId());
             //承运订单已委派量=承运订单原委派量-当前车辆运单委派量
             BigDecimal entrustAmount = logisticsOrder.getEntrustAmount() == null ? NumberConstant.ZERO_TWO : logisticsOrder.getEntrustAmount();
-            logisticsOrder.setEntrustAmount(entrustAmount.subtract(BigDecimal.valueOf(subtask.getEntrustAmount())));
+            logisticsOrder.setEntrustAmount(entrustAmount.subtract(subtask.getEntrustAmount()));
             logisticsOrderDao.updateById(logisticsOrder);
         }
+
+        /*6、发送消息**/
+        List<UserInfo> users = new ArrayList<>() {{
+            add(new UserInfo(waybillOrder.getCreateBy(), waybillOrder.getEntId()));
+        }};
+        Map<String, Object> msgParams = new HashMap<>() {{
+            put("orderNo", waybillOrder.getWOrderNo());
+            put("driverName", waybillOrder.getDriverName());
+        }};
+        SckwMessage msg = new SckwMessage();
+        msg.setRequestId(UUIDUtils.get32UUID());
+        msg.setMessageEnum(MessageEnum.WAYBIL_CONFIRM_DEPARTURE);
+        msg.setParams(msgParams);
+        msg.setMsgUrls(new HashMap<>(Global.NUMERICAL_SIXTEEN) {{
+            put("app", refuseSendCarAppUrl);
+            put("pc", refuseSendCarPcUrl);
+        }});
+        msg.setUserInfos(users);
+        msg.setCreateBy(LoginUserHolder.getUserId());
+        streamBridge.send("sckw-message", JSON.toJSONString(msg));
         return HttpResult.ok();
     }
 
@@ -1435,7 +1535,7 @@ public class KwtWaybillOrderV1Service {
         KwtWaybillOrderSubtask orderSubtask = waybillOrderSubtaskDao.selectById(params.getWSubtaskId());
         //榜单信息
         List<WaybillOrderTicketLoadingDto> loading = params.getLoading();
-        orderSubtask.setLoadAmount(waybillOrderTicketService.countAmount(loading, orderSubtask.getUnit(), BigDecimal.valueOf(orderSubtask.getLoadAmount())).doubleValue());
+        orderSubtask.setLoadAmount(waybillOrderTicketService.countAmount(loading, orderSubtask.getUnit(), orderSubtask.getLoadAmount()));
         orderSubtask.setStatus(waybillOrder.getStatus());
         waybillOrderSubtaskDao.updateById(orderSubtask);
 
@@ -1514,11 +1614,11 @@ public class KwtWaybillOrderV1Service {
         KwtLogisticsOrder logisticsOrder = logisticsOrderDao.selectById(orderSubtask.getLOrderId());
         //榜单信息
         List<WaybillOrderTicketLoadingDto> loading = params.getLoading();
-        orderSubtask.setUnloadAmount(waybillOrderTicketService.countAmount(loading, orderSubtask.getUnit(), BigDecimal.valueOf(orderSubtask.getUnloadAmount())).doubleValue());
-        orderSubtask.setDeficitAmount(BigDecimal.valueOf(orderSubtask.getLoadAmount()).subtract(BigDecimal.valueOf(orderSubtask.getUnloadAmount())).doubleValue());
-        BigDecimal deficitPrice = deficitPrice(BigDecimal.valueOf(orderSubtask.getLoadAmount()), BigDecimal.valueOf(orderSubtask.getDeficitAmount()),
+        orderSubtask.setUnloadAmount(waybillOrderTicketService.countAmount(loading, orderSubtask.getUnit(), orderSubtask.getUnloadAmount()));
+        orderSubtask.setDeficitAmount(orderSubtask.getLoadAmount().subtract(orderSubtask.getUnloadAmount()));
+        BigDecimal deficitPrice = deficitPrice(orderSubtask.getLoadAmount(), orderSubtask.getDeficitAmount(),
                                   logisticsOrder.getLoss(), logisticsOrder.getLossUnit(), logisticsOrder.getGoodsPrice());
-        orderSubtask.setDeficitPrice(deficitPrice.doubleValue());
+        orderSubtask.setDeficitPrice(deficitPrice);
         orderSubtask.setStatus(waybillOrder.getStatus());
         waybillOrderSubtaskDao.updateById(orderSubtask);
 
@@ -1599,10 +1699,10 @@ public class KwtWaybillOrderV1Service {
             subtaskNew.setId(null);
             subtaskNew.setWOrderId(waybillOrderNew.getId());
             subtaskNew.setWOrderNo(waybillOrderNew.getWOrderNo());
-            subtaskNew.setLoadAmount(NumberConstant.ZERO_TWO.doubleValue());
-            subtaskNew.setUnloadAmount(NumberConstant.ZERO_TWO.doubleValue());
-            subtaskNew.setDeficitAmount(NumberConstant.ZERO_TWO.doubleValue());
-            subtaskNew.setDeficitPrice(NumberConstant.ZERO_TWO.doubleValue());
+            subtaskNew.setLoadAmount(NumberConstant.ZERO_TWO);
+            subtaskNew.setUnloadAmount(NumberConstant.ZERO_TWO);
+            subtaskNew.setDeficitAmount(NumberConstant.ZERO_TWO);
+            subtaskNew.setDeficitPrice(NumberConstant.ZERO_TWO);
             subtaskNew.setStatus(waybillOrderNew.getStatus());
             subtaskNew.setCreateTime(null);
             subtaskNew.setUpdateTime(null);
@@ -1675,12 +1775,12 @@ public class KwtWaybillOrderV1Service {
         BigDecimal loadAmount = loadTickets.stream().map(KwtWaybillOrderTicket::getAmount ).reduce(BigDecimal.ZERO, BigDecimal::add);
         //卸货-总量
         BigDecimal unloadAmount = unloadTickets.stream().map(KwtWaybillOrderTicket::getAmount ).reduce(BigDecimal.ZERO, BigDecimal::add);
-        orderSubtask.setLoadAmount(loadAmount.doubleValue());
-        orderSubtask.setUnloadAmount(unloadAmount.doubleValue());
-        orderSubtask.setDeficitAmount(BigDecimal.valueOf(orderSubtask.getLoadAmount()).subtract(BigDecimal.valueOf(orderSubtask.getUnloadAmount())).doubleValue());
-        BigDecimal deficitPrice = deficitPrice(BigDecimal.valueOf(orderSubtask.getLoadAmount()), BigDecimal.valueOf(orderSubtask.getDeficitAmount()),
+        orderSubtask.setLoadAmount(loadAmount);
+        orderSubtask.setUnloadAmount(unloadAmount);
+        orderSubtask.setDeficitAmount(orderSubtask.getLoadAmount().subtract(orderSubtask.getUnloadAmount()));
+        BigDecimal deficitPrice = deficitPrice(orderSubtask.getLoadAmount(), orderSubtask.getDeficitAmount(),
                 logisticsOrder.getLoss(), logisticsOrder.getLossUnit(), logisticsOrder.getGoodsPrice());
-        orderSubtask.setDeficitPrice(deficitPrice.doubleValue());
+        orderSubtask.setDeficitPrice(deficitPrice);
         waybillOrderSubtaskDao.updateById(orderSubtask);
 
         /*4、更新车辆运单子单状态*/
@@ -1888,12 +1988,12 @@ public class KwtWaybillOrderV1Service {
             BigDecimal loadAmount = loadTickets.stream().map(KwtWaybillOrderTicket::getAmount ).reduce(BigDecimal.ZERO, BigDecimal::add);
             //卸货-总量
             BigDecimal unloadAmount = unloadTickets.stream().map(KwtWaybillOrderTicket::getAmount ).reduce(BigDecimal.ZERO, BigDecimal::add);
-            orderSubtask.setLoadAmount(loadAmount.doubleValue());
-            orderSubtask.setUnloadAmount(unloadAmount.doubleValue());
-            orderSubtask.setDeficitAmount(BigDecimal.valueOf(orderSubtask.getLoadAmount()).subtract(BigDecimal.valueOf(orderSubtask.getUnloadAmount())).doubleValue());
-            BigDecimal deficitPrice = deficitPrice(BigDecimal.valueOf(orderSubtask.getLoadAmount()), BigDecimal.valueOf(orderSubtask.getDeficitAmount()),
+            orderSubtask.setLoadAmount(loadAmount);
+            orderSubtask.setUnloadAmount(unloadAmount);
+            orderSubtask.setDeficitAmount(orderSubtask.getLoadAmount().subtract(orderSubtask.getUnloadAmount()));
+            BigDecimal deficitPrice = deficitPrice(orderSubtask.getLoadAmount(), orderSubtask.getDeficitAmount(),
                     logisticsOrder.getLoss(), logisticsOrder.getLossUnit(), logisticsOrder.getGoodsPrice());
-            orderSubtask.setDeficitPrice(deficitPrice.doubleValue());
+            orderSubtask.setDeficitPrice(deficitPrice);
             waybillOrderSubtaskDao.updateById(orderSubtask);
         }
     }
@@ -1922,7 +2022,7 @@ public class KwtWaybillOrderV1Service {
             WaybillCountVo unloadCount = waybillOrderV1Dao.findTicketCountByAddress(queryParams);
 
             //委派量多退少补entrustAmount(委派未运量=运单子单承运委派量-运单子单装货量)
-            BigDecimal residue = BigDecimal.valueOf(subtask.getEntrustAmount()).subtract(BigDecimal.valueOf(subtask.getLoadAmount()));
+            BigDecimal residue = subtask.getEntrustAmount().subtract(subtask.getLoadAmount());
             logisticsOrder.setEntrustAmount(logisticsOrder.getEntrustAmount().subtract(residue));
             logisticsOrder.setLoadAmount(loadCount.getAmount());
             logisticsOrder.setLoadTime(loadCount.getLoadTime());
@@ -2086,7 +2186,7 @@ public class KwtWaybillOrderV1Service {
                 //榜单信息
                 KwtWaybillOrderTicket ticket = waybillOrderTicketDao.findWaybillOrderTicketV2(address.getId(), subtask.getUnit());
                 //辅助单位
-                List<WaybillOrderLoadingVO> loading = waybillOrderTicketService.agreementV1(subtask, type);
+                List<WaybillOrderLoadingVO> loading = waybillOrderTicketService.agreementV1(subtask, address.getId());
 
                 Map<String, Object> trackData = new HashMap<>(NumberConstant.SIXTEEN);
                 trackData.put("wTicketId", ticket != null ? ticket.getId() : null);
@@ -2161,7 +2261,7 @@ public class KwtWaybillOrderV1Service {
         //榜单信息
         KwtWaybillOrderTicket ticket = waybillOrderTicketDao.findWaybillOrderTicketV2(address.getId(), subtask.getUnit());
         //辅助单位
-        List<WaybillOrderLoadingVO> loading = waybillOrderTicketService.agreementV1(subtask, address.getAddressType());
+        List<WaybillOrderLoadingVO> loading = waybillOrderTicketService.agreementV1(subtask, address.getId());
         //辅助单位
         List<GoodsUnitVo> assistUnit = kwtLogisticsOrderGoodsService.assistUnit(subtask.getLOrderId());
 
@@ -2174,7 +2274,6 @@ public class KwtWaybillOrderV1Service {
         result.put("driverName", waybillOrder.getDriverName());
         result.put("driverPhone", waybillOrder.getDriverPhone());
         result.put("driverIdcard", waybillOrder.getDriverIdcard());
-
         result.put("wTicketId", ticket != null ? ticket.getId() : null);
         result.put("wSubtaskId", subtask.getId());
         result.put("wAddressId", address.getId());
@@ -2219,7 +2318,6 @@ public class KwtWaybillOrderV1Service {
         Map<String, Map<String, String>> dict = remoteSystemService.queryDictByType(List.of(DictTypeEnum.UNIT_TYPE.getType()));
         Map<String, String> unitMap = CollectionUtils.isNotEmpty(dict) ? dict.get(DictTypeEnum.UNIT_TYPE.getType()) : new HashMap<>(NumberConstant.SIXTEEN);
 
-
         /*数据处理*/
         List<Map<String, Object>> trackList = new ArrayList<>();
         //运单状态(待接单、待出车、出车)
@@ -2255,9 +2353,9 @@ public class KwtWaybillOrderV1Service {
             KwtLogisticsOrderGoods goods = logisticsOrderGoodsDao.findByGoods(subtask != null ? subtask.getLOrderId() : null);
             for (Integer status:statusList) {
                 //状态记录
-                KwtWaybillOrderTrack track = waybillOrderTrackDao.findWaybillOrderTrack(wOrderId, null, null, status);
+                KwtWaybillOrderTrack track = waybillOrderTrackDao.findWaybillOrderTrack(wOrderId, subtask.getId(), address.getId(), status);
                 //辅助单位
-                List<WaybillOrderLoadingVO> loading = waybillOrderTicketService.agreementV1(subtask, address.getAddressType());
+                List<WaybillOrderLoadingVO> loading = track != null ? waybillOrderTicketService.agreementV1(subtask, track.getWAddressId()) : null;
                 //辅助单位
                 List<GoodsUnitVo> assistUnit = kwtLogisticsOrderGoodsService.assistUnit(subtask.getLOrderId());
                 Map<String, Object> trackData = new HashMap<>(NumberConstant.SIXTEEN);

+ 5 - 4
sckw-modules/sckw-transport/src/main/resources/mapper/KwtLogisticsOrderMapper.xml

@@ -686,7 +686,8 @@
     </select>
 
     <select id="selectDriverListById" resultType="com.sckw.transport.model.vo.DriverListVo">
-        SELECT count(IF(b.status in (7, 8, 13), 1, NULL)) AS count,
+<!--        SELECT count(IF(b.status in (7, 8, 13), 1, NULL)) AS count,-->
+        SELECT count(IF(b.status in (502,504,503,501), 1, NULL)) AS count,
         a.id AS lOrderId,
         a.l_order_no AS lOrderNo,
         b.driver_id AS driverId,
@@ -719,8 +720,7 @@
             a.id = b.l_order_id
             AND a.del_flag = 0
             AND b.del_flag = 0
-            AND b.type = '1'
-            AND b.status = 1
+            AND b.type = 1
             <if test="driverParam.lOrderId != null and driverParam.lOrderId != ''">
                 AND a.id =#{driverParam.lOrderId}
             </if>
@@ -756,9 +756,10 @@
             kwt_waybill_order b
         <where>
             b.del_flag = 0
-            AND b.type = '1'
+            AND b.type =#{type}
             AND b.status in (501
               , 502
+              , 503
               , 504)
             <if test="driverParam.lOrderId != null and driverParam.lOrderId != ''">
                 AND b.l_order_id =#{driverParam.lOrderId}

+ 66 - 0
sckw-modules/sckw-transport/src/main/resources/mapper/KwtWaybillOrderSubtaskMapper.xml

@@ -50,4 +50,70 @@
             </foreach>
         </if>
     </select>
+
+    <select id="selectCountByOrderId" resultType="java.lang.Integer">
+        SELECT COUNT(id)
+        FROM kwt_waybill_order_subtask
+        WHERE del_flag = 0
+        and l_order_id = #{orderId}
+        <if test="orderStatusList != null and orderStatusList.size() > 0">
+            AND status IN
+            <foreach collection="orderStatusList" item="item" open="(" close=")" separator=",">
+                #{item}
+            </foreach>
+        </if>
+    </select>
+
+    <select id="selectLoopOrderAndDriverListByOrderId" resultType="com.sckw.transport.model.vo.DriverListVo">
+        SELECT a.id            AS lOrderId,
+               a.l_order_no    AS lOrderNo,
+               b.driver_id     AS driverId,
+               b.driver_name   AS driverName,
+               b.driver_phone  AS driverPhone,
+               b.driver_idcard AS driverIdCard,
+               b.truck_no      AS truckNo,
+               b.truck_id      AS truckId,
+               c.STATUS        AS STATUS,
+               b.type,
+               count(IF(b.status in (502, 504, 503, 501), 1, NULL))
+        FROM kwt_logistics_order a
+                 LEFT JOIN
+             kwt_waybill_order_subtask c ON a.id = c.l_order_id
+                 LEFT JOIN kwt_waybill_order b on b.id = c.w_order_id
+        <where>
+            a.id = c.l_order_id
+              AND b.type = #{type}
+              AND a.del_flag = 0
+              AND c.del_flag = 0
+            <if test="orderStatus != null and orderStatus.size() != 0">
+                and c.status in
+                <foreach collection="orderStatus" item="item" separator="," close=")" open="(">
+                    #{item}
+                </foreach>
+            </if>
+            <if test="driverParam.lOrderId != null and driverParam.lOrderId != ''">
+                AND a.id = #{driverParam.lOrderId}
+            </if>
+            <if test="driverParam.driverName != null and driverParam.driverName != '' or (driverParam.driverPhone != null and driverParam.driverPhone != '') or (driverParam.truckNo != null and driverParam.truckNo != '')">
+                <!--                and (-->
+                <if test="driverParam.driverName != null and driverParam.driverName != ''">
+                    and b.driver_name like concat('%'
+                        , #{driverParam.driverName}
+                        , '%')
+                </if>
+                <if test="driverParam.driverPhone != null and driverParam.driverPhone != ''">
+                    and b.driver_phone like concat('%'
+                        , #{driverParam.driverPhone}
+                        , '%')
+                </if>
+                <if test="driverParam.truckNo != null and driverParam.truckNo != ''">
+                    and b.truck_no like concat('%'
+                        , #{driverParam.truckNo}
+                        , '%')
+                </if>
+                <!--                )-->
+            </if>
+        </where>
+        GROUP BY b.truck_no
+    </select>
 </mapper>

+ 15 - 0
sckw-modules/sckw-transport/src/main/resources/mapper/KwtWaybillOrderTicketMapper.xml

@@ -79,6 +79,21 @@
         order by update_time limit 1
     </select>
 
+    <select id="findWaybillOrderTicketV3" resultType="com.sckw.transport.model.KwtWaybillOrderTicket" >
+        select
+        id, w_order_id wOrderId, w_subtask_id wSubtaskId, w_address_id wAddressId, `type`, unit, amount,
+        gross_amount grossAmount, tare_amount tareAmount, urls, operate_time, remark, `status`, create_by createBy,
+        create_time createTime, update_by updateBy, update_time updateTime
+        from kwt_waybill_order_ticket
+        where del_flag = 0
+        <if test="wAddressId != null and wAddressId != ''">
+            and w_address_id = #{wAddressId, jdbcType=BIGINT}
+        </if>
+        <if test="unit != null and unit != ''">
+            and unit = #{unit, jdbcType=VARCHAR}
+        </if>
+    </select>
+
     <update id="deleteTicket">
         UPDATE kwt_waybill_order_ticket set del_flag = 1
         WHERE del_flag = 0

+ 3 - 2
sckw-modules/sckw-transport/src/main/resources/mapper/KwtWaybillOrderV1Mapper.xml

@@ -62,8 +62,9 @@
     <select id="findListPage" resultType="com.sckw.transport.model.vo.WaybillOrderSelectVo"
             parameterType="com.sckw.transport.model.dto.WaybillOrderQueryDto">
         SELECT
-        wo.id wOrderId, wo.ent_id entId, wo.w_order_no wOrderNo, wo.truck_no truckNo, wo.driver_name driverName, wo.driver_phone driverPhone,
-        wo.type, wo.create_time sendCarTime, wo.create_by createBy, wo.create_time createTime, wo.update_time updateTime, wo.status
+        wo.id wOrderId, wo.ent_id entId, wo.w_order_no wOrderNo, wo.type, wo.truck_no truckNo, wo.driver_name driverName,
+        wo.driver_phone driverPhone, wo.type, wo.create_time sendCarTime, wo.create_by createBy, wo.create_time createTime,
+        wo.update_time updateTime, wo.status
         from kwt_waybill_order wo
         where wo.del_flag = 0
         <if test="entId != null and entId != ''">