Jelajahi Sumber

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

xucaiqin 2 tahun lalu
induk
melakukan
b122424850
19 mengubah file dengan 463 tambahan dan 318 penghapusan
  1. 9 0
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/enums/CarWaybillEnum.java
  2. 1 2
      sckw-common/sckw-common-mongo/src/main/java/com/sckw/mongo/model/SckwLogisticsOrder.java
  3. 5 0
      sckw-modules/sckw-product/src/main/java/com/sckw/product/model/vo/res/GoodsDropList.java
  4. 2 2
      sckw-modules/sckw-report/src/main/java/com/sckw/report/service/KwTransportService.java
  5. 18 1
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/ConsignOrderController.java
  6. 47 9
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/LogisticsConsignmentController.java
  7. 8 8
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/WaybillManagementController.java
  8. 15 5
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/dao/KwtLogisticsOrderMapper.java
  9. 5 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/dto/WayBillDetailDTO.java
  10. 6 1
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/dto/WaybillOrderTicketDto.java
  11. 5 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/SubcontractConsignmentVO.java
  12. 1 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/AcceptCarriageOrderService.java
  13. 61 85
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/ConsignOrderService.java
  14. 67 22
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtWaybillOrderService.java
  15. 85 32
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/LogisticsConsignmentService.java
  16. 96 142
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/WaybillManagementService.java
  17. 27 4
      sckw-modules/sckw-transport/src/main/resources/mapper/KwtLogisticsOrderMapper.xml
  18. 3 3
      sckw-modules/sckw-transport/src/main/resources/mapper/KwtWaybillOrderMapper.xml
  19. 2 2
      sckw-modules/sckw-transport/src/main/resources/mapper/KwtWaybillOrderTicketMapper.xml

+ 9 - 0
sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/enums/CarWaybillEnum.java

@@ -93,6 +93,15 @@ public enum CarWaybillEnum {
         return null;
     }
 
+    public static String getWaybillOrderDestination(String status) {
+        for (CarWaybillEnum waybillEnum : CarWaybillEnum.values()) {
+            if (waybillEnum.getStatus().equals(status)) {
+                return waybillEnum.getDestination();
+            }
+        }
+        return null;
+    }
+
     public static String getName(Integer code) {
         for (CarWaybillEnum waybillEnum : CarWaybillEnum.values()) {
             if (waybillEnum.getCode().equals(code)) {

+ 1 - 2
sckw-common/sckw-common-mongo/src/main/java/com/sckw/mongo/model/SckwLogisticsOrder.java

@@ -417,8 +417,7 @@ public class SckwLogisticsOrder {
     /**
      * 是否删除(0未删除,1删除)
      */
-    @TableLogic("0")
-    private String delFlag = "0";
+    private String delFlag;
 
     /**
      * 关联的承运订单号

+ 5 - 0
sckw-modules/sckw-product/src/main/java/com/sckw/product/model/vo/res/GoodsDropList.java

@@ -30,4 +30,9 @@ public class GoodsDropList {
      */
     private String supplyEnt;
 
+    /**
+     * 商品单位
+     */
+    private String unit;
+
 }

+ 2 - 2
sckw-modules/sckw-report/src/main/java/com/sckw/report/service/KwTransportService.java

@@ -251,7 +251,7 @@ public class KwTransportService {
         List<TableTops> list = new ArrayList<>();
         TableTops topTotal = new TableTops();
         topTotal.setName("全部");
-        topTotal.setValue(null);
+        topTotal.setValue("all");
         topTotal.setTotal(0);
         list.add(topTotal);
 
@@ -442,7 +442,7 @@ public class KwTransportService {
             Long settlementCycle1 = logisticsOrder.getSettlementCycle();
             String billingMode = logisticsOrder.getBillingMode();
             SysDictResDto sysDictResDto = chargingType.get(String.valueOf(settlementCycle1));
-            SysDictResDto sysDictResDto1 = settlementCycle.get(String.valueOf(billingMode));
+            SysDictResDto sysDictResDto1 = settlementCycle.get(billingMode);
             if (Objects.nonNull(sysDictResDto)) {
                 logisticsOrder.setSettlementCycleLabel(sysDictResDto.getLabel());
             }

+ 18 - 1
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/ConsignOrderController.java

@@ -46,6 +46,23 @@ public class ConsignOrderController {
         }
     }
 
+    /**
+     * 托运订单/承运订单-获取车辆运单-统计
+     *
+     * @param orderDto
+     * @return
+     */
+    @RequestMapping(value = "/getCarWaybillByOrderCount", method = RequestMethod.POST)
+    public HttpResult getCarWaybillByOrderCount(@Validated @RequestBody OrderDTO orderDto) {
+        try {
+            return consignOrderService.getCarWaybillByOrderCount(orderDto);
+        } catch (Exception e) {
+            log.error("托运订单获取车辆运单失败:订单id {},error {} ", orderDto.getId(), e.getMessage(), e);
+            return HttpResult.error(HttpStatus.GLOBAL_EXCEPTION_CODE, e.getMessage());
+        }
+    }
+
+
     /**
      * 托运订单查看驳回原因
      *
@@ -66,7 +83,7 @@ public class ConsignOrderController {
     @RequestMapping(value = "/getCarListByOrder", method = RequestMethod.POST)
     public HttpResult getCarListByOrder(@Validated @RequestBody OrderDTO orderDto) {
         try {
-            return consignOrderService.getCarListByOrder(orderDto);
+            return consignOrderService.getCarListByOrder(orderDto,"1");
         } catch (Exception e) {
             log.error("托运订单获取车辆运单失败:订单id {},error {} ", orderDto.getId(), e.getMessage(), e);
             return HttpResult.error(HttpStatus.GLOBAL_EXCEPTION_CODE, e.getMessage());

+ 47 - 9
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/LogisticsConsignmentController.java

@@ -57,14 +57,31 @@ public class LogisticsConsignmentController {
      * @param id 销售订单id
      * @return
      */
-    @Validated
     @RequestMapping(value = "/purchaseLogisticsOrder", method = RequestMethod.GET)
     public HttpResult purchaseLogisticsOrder(@RequestParam("id") @NotBlank(message = "单据id不能为空") String id,
-                                             @RequestParam("page") @NotBlank(message = "当前页不能为空") int page,
-                                             @RequestParam("pageSize") @NotBlank(message = "每页条数不能为空") int pageSize) {
+                                             @RequestParam("page") @NotNull(message = "当前页不能为空") int page,
+                                             @RequestParam("pageSize") @NotNull(message = "每页条数不能为空") int pageSize) {
+        log.info("采购订单-托运订单列表 传递参数信息:{}", id);
+        try {
+            return logisticsConsignmentService.logisticsOrder(id, page, pageSize, "1");
+        } catch (Exception e) {
+            log.error("采购订单-托运订单列表 error :{}", e.getMessage(), e);
+            return HttpResult.error(HttpStatus.GLOBAL_EXCEPTION_CODE, e.getMessage());
+        }
+    }
+
+    /**
+     * 采购订单-托运订单列表-下方数据统计-贸易订单id
+     *
+     * @param id 贸易订单id
+     * @return
+     */
+    @Validated
+    @RequestMapping(value = "/purchaseLogisticsOrderCount", method = RequestMethod.GET)
+    public HttpResult purchaseLogisticsOrderCount(@RequestParam("id") @NotBlank(message = "单据id不能为空") String id) {
         log.info("采购订单-托运订单列表 传递参数信息:{}", id);
         try {
-            return logisticsConsignmentService.logisticsOrder(id, page, pageSize);
+            return logisticsConsignmentService.logisticsOrderCount(id,"1");
         } catch (Exception e) {
             log.error("采购订单-托运订单列表 error :{}", e.getMessage(), e);
             return HttpResult.error(HttpStatus.GLOBAL_EXCEPTION_CODE, e.getMessage());
@@ -103,18 +120,19 @@ public class LogisticsConsignmentController {
     public HttpResult purchaseLogisticsCar(@RequestParam("id") @NotBlank(message = "单据id不能为空") String id,
                                            @RequestParam("page") @NotBlank(message = "当前页不能为空") int page,
                                            @RequestParam("pageSize") @NotBlank(message = "每页条数不能为空") int pageSize) {
-        log.info("采购订单-托运订单列表 传递参数信息:{}", id);
+        log.info("采购订单-车辆详情 传递参数信息:{}", id);
         try {
             return logisticsConsignmentService.purchaseLogisticsCar(id, page, pageSize);
         } catch (Exception e) {
-            log.error("采购订单-托运订单列表 error :{}", e.getMessage(), e);
+            log.error("采购订单-车辆详情 error :{}", e.getMessage(), e);
             return HttpResult.error(HttpStatus.GLOBAL_EXCEPTION_CODE, e.getMessage());
         }
     }
 
     /**
      * 采购订单-托运订单列表-订单完结-数据查询
-     * @param orderId   物流订单id
+     *
+     * @param orderId 物流订单id
      * @return
      */
     @Validated
@@ -131,6 +149,7 @@ public class LogisticsConsignmentController {
 
     /**
      * 采购订单-托运订单列表-完结订单
+     *
      * @param OrderFinishDTO
      * @return
      */
@@ -176,13 +195,30 @@ public class LogisticsConsignmentController {
                                          @RequestParam("pageSize") @NotBlank(message = "每页条数不能为空") int pageSize) {
         log.info("销售订单-托运订单列表 传递参数信息:{}", id);
         try {
-            return logisticsConsignmentService.logisticsOrder(id, page, pageSize);
+            return logisticsConsignmentService.logisticsOrder(id, page, pageSize, "2");
         } catch (Exception e) {
             log.error("销售订单-托运订单列表 error :{}", e.getMessage(), e);
             return HttpResult.error(HttpStatus.GLOBAL_EXCEPTION_CODE, e.getMessage());
         }
     }
 
+    /**
+     * 销售订单-托运订单列表-下方数据统计-贸易订单id
+     *
+     * @param id 贸易订单id
+     * @return
+     */
+    @Validated
+    @RequestMapping(value = "/sellLogisticsOrderCount", method = RequestMethod.GET)
+    public HttpResult sellLogisticsOrderCount(@RequestParam("id") @NotBlank(message = "单据id不能为空") String id) {
+        log.info("销售订单-托运订单列表 传递参数信息:{}", id);
+        try {
+            return logisticsConsignmentService.logisticsOrderCount(id,"2");
+        } catch (Exception e) {
+            log.error("销售订单-托运订单列表 error :{}", e.getMessage(), e);
+            return HttpResult.error(HttpStatus.GLOBAL_EXCEPTION_CODE, e.getMessage());
+        }
+    }
     /**
      * 销售订单-车辆列表-销售订单id
      *
@@ -222,7 +258,8 @@ public class LogisticsConsignmentController {
 
     /**
      * 销售订单-托运订单列表-订单完结-数据查询
-     * @param orderId   物流订单id
+     *
+     * @param orderId 物流订单id
      * @return
      */
     @Validated
@@ -239,6 +276,7 @@ public class LogisticsConsignmentController {
 
     /**
      * 销售订单-托运订单列表-完结订单
+     *
      * @param orderFinishDTO
      * @return
      */

+ 8 - 8
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/WaybillManagementController.java

@@ -9,10 +9,10 @@ import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.List;
 
 
 /**
@@ -40,8 +40,8 @@ public class WaybillManagementController {
         }
     }
 
-    @RequestMapping(name = "运单看板", value = "/waybillIndex", method = RequestMethod.GET)
-    public HttpResult waybillIndex(WaybillOrderDTO waybillOrderDTO) {
+    @RequestMapping(name = "运单看板", value = "/waybillIndex", method = RequestMethod.POST)
+    public HttpResult waybillIndex(@Validated @RequestBody WaybillOrderDTO waybillOrderDTO) {
         try {
             return waybillManagementService.waybillIndex(waybillOrderDTO);
         } catch (Exception e) {
@@ -50,8 +50,8 @@ public class WaybillManagementController {
         }
     }
 
-    @RequestMapping(name = "运单看板TOP", value = "/waybillIndexStatistics", method = RequestMethod.GET)
-    public HttpResult waybillIndexStatistics(WaybillOrderDTO waybillOrderDTO) {
+    @RequestMapping(name = "运单看板TOP", value = "/waybillIndexStatistics", method = RequestMethod.POST)
+    public HttpResult waybillIndexStatistics(@Validated @RequestBody WaybillOrderDTO waybillOrderDTO) {
         try {
             return waybillManagementService.waybillIndexStatistics(waybillOrderDTO);
         } catch (Exception e) {

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

@@ -9,7 +9,6 @@ import com.sckw.transport.model.param.LogisticsOrderParam;
 import com.sckw.transport.model.vo.DriverListVo;
 import com.sckw.transport.model.vo.OrderFinishVO;
 import com.sckw.transport.model.vo.SubcontractConsignmentVO;
-import com.sckw.transport.model.vo.WaybillCountVo;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
@@ -52,14 +51,23 @@ public interface KwtLogisticsOrderMapper extends BaseMapper<KwtLogisticsOrder> {
      * @param id
      * @return
      */
-    List<com.sckw.transport.model.dto.LogisticsOrderDTO> selectOrderList(@Param("id") String id,@Param("page") int page,@Param("pageSize") int pageSize);
+    List<com.sckw.transport.model.dto.LogisticsOrderDTO> selectOrderList(@Param("id") String id, @Param("page") int page,
+                                                                         @Param("pageSize") int pageSize,@Param("type") String type);
 
     /**
+     * 销售订单-采购订单-托运列表-数据统计
      *
      * @param id
      * @return
      */
-    Long selectOrderCount(@Param("id") String id);
+    List<com.sckw.transport.model.dto.LogisticsOrderDTO> selectOrderCountByTorderId(@Param("id") String id, @Param("type") String type);
+
+    /**
+     * @param id   贸易订单id
+     * @param type 采购单1/销售单2
+     * @return
+     */
+    Long selectOrderCount(@Param("id") String id, @Param("type") String type);
 
     /**
      * @param logisticsOrderParam
@@ -68,10 +76,11 @@ public interface KwtLogisticsOrderMapper extends BaseMapper<KwtLogisticsOrder> {
      */
     Long selectLogisticOrderCount(@Param("logisticsOrderParam") LogisticsOrderParam logisticsOrderParam, @Param("dictId") Long dictId);
 
-    Map<String, String> getRejectReason(@Param("id") String id,@Param("status") String status);
+    Map<String, String> getRejectReason(@Param("id") String id, @Param("status") String status);
 
     /**
      * 根据承运订单id查看分包数据列表
+     *
      * @param lOrderId
      * @param page
      * @param pageSize
@@ -83,13 +92,13 @@ public interface KwtLogisticsOrderMapper extends BaseMapper<KwtLogisticsOrder> {
 
     /**
      * 通过物流订单查看单据下运力司机数据
+     *
      * @param driverParam
      * @return
      */
     List<DriverListVo> selectDriverListById(@Param("driverParam") DriverParam driverParam);
 
     /**
-     *
      * @param ids
      * @return
      */
@@ -97,6 +106,7 @@ public interface KwtLogisticsOrderMapper extends BaseMapper<KwtLogisticsOrder> {
 
     /**
      * 通过物流订单id获取统计数据
+     *
      * @param orderId
      * @return
      */

+ 5 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/dto/WayBillDetailDTO.java

@@ -86,4 +86,9 @@ public class WayBillDetailDTO {
      * 卸货地址
      */
     private String unloadDetailAddress;
+
+    /**
+     * 承运企业
+     */
+    private String checkFirmName;
 }

+ 6 - 1
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/dto/WaybillOrderTicketDto.java

@@ -1,11 +1,14 @@
 package com.sckw.transport.model.dto;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import jakarta.validation.constraints.DecimalMin;
 import jakarta.validation.constraints.NotBlank;
 import jakarta.validation.constraints.NotNull;
 import jakarta.validation.constraints.Size;
 import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
 import java.math.BigDecimal;
 import java.util.Date;
 
@@ -62,7 +65,9 @@ public class WaybillOrderTicketDto {
      * 装卸货时间
      */
     @JsonProperty("time")
-    @NotBlank(message = "时间不能为空")
+    @JsonFormat(locale="zh", pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @NotNull(message = "时间不能为空")
     private Date time;
 
     /**

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

@@ -16,6 +16,11 @@ public class SubcontractConsignmentVO {
      * 状态
      */
     private String status;
+
+    /**
+     * 状态
+     */
+    private String statusLabel;
     /**
      * 数据库表主键id
      */

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

@@ -641,6 +641,7 @@ public class AcceptCarriageOrderService {
         Map<String, String> settlementDictData = getDictData(DictTypeEnum.SETTLEMENT_CYCLE.getType());
         if (CollectionUtils.isNotEmpty(list)) {
             for (SubcontractConsignmentVO subcontractConsignmentVO : list) {
+                subcontractConsignmentVO.setStatusLabel(CarWaybillEnum.getWaybillOrderDestination(subcontractConsignmentVO.getStatus()));
                 subcontractConsignmentVO.setPriceType(priceDictData == null ? null : priceDictData.get(subcontractConsignmentVO.getPriceType()));
                 subcontractConsignmentVO.setLossUnit(weightDictData == null ? null : weightDictData.get(subcontractConsignmentVO.getLossUnit()));
                 subcontractConsignmentVO.setGoodsPriceUnit(priceDictData == null ? null : priceDictData.get(subcontractConsignmentVO.getGoodsPriceUnit()));

+ 61 - 85
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/ConsignOrderService.java

@@ -18,7 +18,6 @@ import com.sckw.core.web.context.LoginUserHolder;
 import com.sckw.core.web.response.HttpResult;
 import com.sckw.excel.utils.DateUtil;
 import com.sckw.fleet.api.RemoteFleetService;
-import com.sckw.fleet.api.model.vo.RTruckVo;
 import com.sckw.mongo.enums.BusinessTypeEnum;
 import com.sckw.mongo.model.SckwLogisticsOrder;
 import com.sckw.product.api.dubbo.GoodsInfoService;
@@ -44,8 +43,10 @@ import org.springframework.util.ObjectUtils;
 
 import java.math.BigDecimal;
 import java.text.ParseException;
-import java.util.*;
-import java.util.stream.Collectors;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
 
 /**
  * @author lfdc
@@ -113,9 +114,9 @@ public class ConsignOrderService {
     public HttpResult getCarWaybillByOrder(OrderDTO orderDto) {
         HttpResult httpResult = new HttpResult();
         if (String.valueOf(NumberConstant.ONE).equals(orderDto.getType())) {
-            httpResult = getCarWaybillByOrderByConsign(orderDto);
+            httpResult = getCarWaybillOrderByConsign(orderDto);
         } else if (String.valueOf(NumberConstant.TWO).equals(orderDto.getType())) {
-            httpResult = getCarWaybillByOrderByAcceptCarriage(orderDto);
+            httpResult = getCarWaybillOrderByAcceptCarriage(orderDto);
         } else {
             throw new RuntimeException("单据类型错误");
         }
@@ -131,9 +132,9 @@ public class ConsignOrderService {
     public HttpResult getCarWaybillByOrderCount(OrderDTO orderDto) {
         HttpResult httpResult = new HttpResult();
         if (String.valueOf(NumberConstant.ONE).equals(orderDto.getType())) {
-            httpResult = getCarWaybillByOrderByConsignCount(orderDto);
+            httpResult = getCarWaybillOrderByConsignCount(orderDto);
         } else if (String.valueOf(NumberConstant.TWO).equals(orderDto.getType())) {
-            httpResult = getCarWaybillByOrderByAcceptCarriageCount(orderDto);
+            httpResult = getCarWaybillOrderByAcceptCarriageCount(orderDto);
         } else {
             throw new RuntimeException("单据类型错误");
         }
@@ -146,7 +147,7 @@ public class ConsignOrderService {
      * @param orderDto
      * @return
      */
-    private HttpResult getCarWaybillByOrderByConsignCount(OrderDTO orderDto) {
+    private HttpResult getCarWaybillOrderByConsignCount(OrderDTO orderDto) {
         KwtLogisticsOrder order = kwtLogisticsOrderMapper.selectOne(new LambdaQueryWrapper<KwtLogisticsOrder>()
                         .eq(StringUtils.isNotBlank(orderDto.getId()), KwtLogisticsOrder::getId, Long.parseLong(orderDto.getId()))
                         .eq(StringUtils.isNotBlank(orderDto.getOrderNo()), KwtLogisticsOrder::getLOrderNo, orderDto.getOrderNo())
@@ -161,31 +162,30 @@ public class ConsignOrderService {
         //合理损耗
         BigDecimal loss = order.getLoss();
         //派车量
-        BigDecimal sendCarWeighNumber = new BigDecimal(NumberConstant.ZERO);
+        BigDecimal sendCarWeighNumber = new BigDecimal("0.00");
         //装货量
-        BigDecimal loadAmountNumber = new BigDecimal(NumberConstant.ZERO);
+        BigDecimal loadAmountNumber = new BigDecimal("0.00");
         //卸货量
-        BigDecimal unloadAmountNumber = new BigDecimal(NumberConstant.ZERO);
+        BigDecimal unloadAmountNumber = new BigDecimal("0.00");
         /**亏吨量/吨->装货量-卸货量
-         扣亏量/吨->亏吨量-合理损耗*/
+         * 合理损耗值=已委托量*合理损耗
+         扣亏量/吨->亏吨量-合理损耗值 扣亏量/吨->亏吨量-合理损耗值(分配量(委托量)*合理损耗)*/
         //亏吨量
-        BigDecimal defectiveWeighNumber = new BigDecimal(NumberConstant.ZERO);
+        BigDecimal defectiveWeighNumber = new BigDecimal("0.00");
         //扣亏量/吨
-        BigDecimal deductWeighNumber = new BigDecimal(NumberConstant.ZERO);
+        BigDecimal deductWeighNumber = new BigDecimal("0.00");
         if (CollectionUtils.isNotEmpty(kwtWaybillOrders)) {
             for (KwtWaybillOrder kwtWaybillOrder : kwtWaybillOrders) {
                 CarWaybillVO carWaybillVo = new CarWaybillVO();
-                //扣亏量/吨->亏吨量-合理损耗值(分配量(委托量)*合理损耗)
-                BigDecimal deduct = null;
-                if (kwtWaybillOrder.getDeficitAmount() != null && (kwtWaybillOrder.getDeficitAmount().compareTo(new BigDecimal(NumberConstant.ZERO)) == NumberConstant.ZERO)) {
-                    deduct = kwtWaybillOrder.getDeficitAmount().subtract(order.getLoss() == null ? new BigDecimal(NumberConstant.ZERO) : order.getLoss());
-                }
                 carWaybillVo.setSendCarWeigh(kwtWaybillOrder.getEntrustAmount() == null ? null : String.valueOf(kwtWaybillOrder.getEntrustAmount()));
                 /**亏吨量/吨->装货量-卸货量
-                 扣亏量/吨->亏吨量*合理损耗*/
+                 * 合理损耗值=已委托量*合理损耗
+                 扣亏量/吨->亏吨量-合理损耗值*/
+                //合理损耗值=已委托量*合理损耗
+                BigDecimal multiply = kwtWaybillOrder.getEntrustAmount().multiply(loss.divide(BigDecimal.valueOf(1000L)));
                 carWaybillVo.setDefectiveWeigh(kwtWaybillOrder.getDeficitAmount() == null ? null : String.valueOf(kwtWaybillOrder.getDeficitAmount()));
                 carWaybillVo.setDeduct(kwtWaybillOrder.getDeficitAmount().compareTo(new BigDecimal(NumberConstant.ZERO)) == 0 ?
-                        new BigDecimal(NumberConstant.ZERO) : kwtWaybillOrder.getDeficitAmount().multiply(loss.divide(BigDecimal.valueOf(1000L))));
+                        new BigDecimal(NumberConstant.ZERO) : kwtWaybillOrder.getDeficitAmount().subtract(multiply));
                 sendCarWeighNumber = sendCarWeighNumber.add(kwtWaybillOrder.getLoadAmount());
                 if (carWaybillVo.getLoadAmount() != null) {
                     loadAmountNumber = loadAmountNumber.add(new BigDecimal(carWaybillVo.getLoadAmount()));
@@ -214,7 +214,7 @@ public class ConsignOrderService {
      * @param orderDto
      * @return
      */
-    private HttpResult getCarWaybillByOrderByAcceptCarriageCount(OrderDTO orderDto) {
+    private HttpResult getCarWaybillOrderByAcceptCarriageCount(OrderDTO orderDto) {
         KwtLogisticsOrder order = kwtLogisticsOrderMapper.selectOne(new LambdaQueryWrapper<KwtLogisticsOrder>()
                         .eq(StringUtils.isNotBlank(orderDto.getId()), KwtLogisticsOrder::getId, Long.parseLong(orderDto.getId()))
                         .eq(StringUtils.isNotBlank(orderDto.getOrderNo()), KwtLogisticsOrder::getLOrderNo, orderDto.getOrderNo())
@@ -235,7 +235,7 @@ public class ConsignOrderService {
         //卸货量
         BigDecimal unloadAmountNumber = new BigDecimal(NumberConstant.ZERO);
         /**亏吨量/吨->装货量-卸货量
-         扣亏量/吨->亏吨量-合理损耗*/
+         扣亏量/吨->亏吨量-合理损耗 (扣亏量/吨->亏吨量-合理损耗值(分配量(委托量)*合理损耗))*/
         //亏吨量
         BigDecimal defectiveWeighNumber = new BigDecimal(NumberConstant.ZERO);
         //扣亏量/吨
@@ -243,17 +243,14 @@ public class ConsignOrderService {
         if (CollectionUtils.isNotEmpty(kwtWaybillOrders)) {
             for (KwtWaybillOrder kwtWaybillOrder : kwtWaybillOrders) {
                 CarWaybillVO carWaybillVo = new CarWaybillVO();
-                //扣亏量/吨->亏吨量-合理损耗值(分配量(委托量)*合理损耗)
-                BigDecimal deduct = null;
-                if (kwtWaybillOrder.getDeficitAmount() != null && (kwtWaybillOrder.getDeficitAmount().compareTo(new BigDecimal(NumberConstant.ZERO)) == NumberConstant.ZERO)) {
-                    deduct = kwtWaybillOrder.getDeficitAmount().subtract(order.getLoss() == null ? new BigDecimal(NumberConstant.ZERO) : order.getLoss());
-                }
                 carWaybillVo.setSendCarWeigh(kwtWaybillOrder.getEntrustAmount() == null ? null : String.valueOf(kwtWaybillOrder.getEntrustAmount()));
                 /**亏吨量/吨->装货量-卸货量
                  扣亏量/吨->亏吨量*合理损耗*/
+                BigDecimal multiply = kwtWaybillOrder.getEntrustAmount().multiply(loss.divide(BigDecimal.valueOf(1000L)));
                 carWaybillVo.setDefectiveWeigh(kwtWaybillOrder.getDeficitAmount() == null ? null : String.valueOf(kwtWaybillOrder.getDeficitAmount()));
                 carWaybillVo.setDeduct(kwtWaybillOrder.getDeficitAmount().compareTo(new BigDecimal(NumberConstant.ZERO)) == 0 ?
-                        new BigDecimal(NumberConstant.ZERO) : kwtWaybillOrder.getDeficitAmount().multiply(loss.divide(BigDecimal.valueOf(1000L))));
+                        new BigDecimal(NumberConstant.ZERO) : kwtWaybillOrder.getDeficitAmount().subtract(multiply));
+                sendCarWeighNumber = sendCarWeighNumber.add(kwtWaybillOrder.getLoadAmount());
                 sendCarWeighNumber = sendCarWeighNumber.add(kwtWaybillOrder.getLoadAmount());
                 if (carWaybillVo.getLoadAmount() != null) {
                     loadAmountNumber = loadAmountNumber.add(new BigDecimal(carWaybillVo.getLoadAmount()));
@@ -282,7 +279,7 @@ public class ConsignOrderService {
      * @param orderDto
      * @return
      */
-    private HttpResult getCarWaybillByOrderByAcceptCarriage(OrderDTO orderDto) {
+    private HttpResult getCarWaybillOrderByAcceptCarriage(OrderDTO orderDto) {
         List<CarWaybillVO> returnList = new ArrayList<>();
         KwtLogisticsOrder order = kwtLogisticsOrderMapper.selectOne(new LambdaQueryWrapper<KwtLogisticsOrder>()
                         .eq(StringUtils.isNotBlank(orderDto.getId()), KwtLogisticsOrder::getId, Long.parseLong(orderDto.getId()))
@@ -293,12 +290,8 @@ public class ConsignOrderService {
         }
         List<KwtWaybillOrder> kwtWaybillOrders = kwtWaybillOrderMapper.selectList(new LambdaQueryWrapper<KwtWaybillOrder>()
                         .eq(StringUtils.isNotBlank(order.getId()), KwtWaybillOrder::getLOrderId, order.getId())
+                        .last("limit " + (orderDto.getPage() - 1) + " , " + orderDto.getPageSize())
                 /**.eq(KwtWaybillOrder::getEntId, LoginUserHolder.getEntId())*/);
-        JSONObject statistics = new JSONObject();
-        BigDecimal sendCarWeighNumber = new BigDecimal(NumberConstant.ZERO);
-        BigDecimal loadAmountNumber = new BigDecimal(NumberConstant.ZERO);
-        BigDecimal unloadAmountNumber = new BigDecimal(NumberConstant.ZERO);
-        BigDecimal defectiveWeighNumber = new BigDecimal(NumberConstant.ZERO);
         if (CollectionUtils.isNotEmpty(kwtWaybillOrders)) {
             for (KwtWaybillOrder kwtWaybillOrder : kwtWaybillOrders) {
                 CarWaybillVO carWaybillVo = new CarWaybillVO();
@@ -308,9 +301,6 @@ public class ConsignOrderService {
                 KwtWaybillOrderTicket unloadTicket = kwtWaybillOrderTicketMapper.selectOne(new LambdaQueryWrapper<KwtWaybillOrderTicket>()
                         .eq(StringUtils.isNotBlank(kwtWaybillOrder.getId()), KwtWaybillOrderTicket::getWOrderId, kwtWaybillOrder.getId())
                         .eq(KwtWaybillOrderTicket::getType, NumberConstant.TWO));
-                KwtLogisticsOrderCirculate circulate = kwtLogisticsOrderCirculateMapper.selectOne(new LambdaQueryWrapper<KwtLogisticsOrderCirculate>()
-                        .eq(StringUtils.isNotBlank(kwtWaybillOrder.getId()), KwtLogisticsOrderCirculate::getLOrderId, kwtWaybillOrder.getId())
-                        .eq(KwtLogisticsOrderCirculate::getEntId, order.getEntId()));
                 //扣亏量/吨->亏吨量-合理损耗
                 BigDecimal deduct = null;
                 if (kwtWaybillOrder.getDeficitAmount() != null && (kwtWaybillOrder.getDeficitAmount().compareTo(new BigDecimal(NumberConstant.ZERO)) == NumberConstant.ZERO)) {
@@ -319,7 +309,7 @@ public class ConsignOrderService {
                 carWaybillVo.setWOrderId(String.valueOf(kwtWaybillOrder.getId()));
                 carWaybillVo.setWOrderNo(order.getLOrderNo());
                 carWaybillVo.setTruckNo(kwtWaybillOrder.getTruckNo());
-                carWaybillVo.setStatus(String.valueOf(kwtWaybillOrder.getStatus()));
+                carWaybillVo.setStatus(CarWaybillEnum.getName(kwtWaybillOrder.getStatus()));
                 carWaybillVo.setWaybillType(kwtWaybillOrder.getType());
                 carWaybillVo.setDriverName(kwtWaybillOrder.getDriverName());
                 //todo 取mongo
@@ -327,11 +317,7 @@ public class ConsignOrderService {
                 /** 2023-07-24 原值为承运车队-去除后更换展示为承运公司*/
 //                carWaybillVo.setConsignMotorcade(sckwWaybillOrder == null ? null : sckwWaybillOrder.getCarrierFirmName());
                 carWaybillVo.setSendCarWeigh(kwtWaybillOrder.getEntrustAmount() == null ? null : String.valueOf(kwtWaybillOrder.getEntrustAmount()));
-                if (circulate != null) {
-                    carWaybillVo.setSendCarDate(circulate.getCreateTime() == null ? null : DateUtil.getDateTime(circulate.getCreateTime()));
-                } else {
-                    carWaybillVo.setSendCarDate(null);
-                }
+                carWaybillVo.setSendCarDate(DateUtil.getDateTime(kwtWaybillOrder.getCreateTime()));
                 if (loadTicket != null) {
                     carWaybillVo.setLoadAmount(loadTicket.getAmount() == null ? null : String.valueOf(loadTicket.getAmount()));
                     carWaybillVo.setLoadDateTime(loadTicket.getCreateTime() == null ? null : DateUtil.getDateTime(loadTicket.getCreateTime()));
@@ -339,7 +325,6 @@ public class ConsignOrderService {
                     carWaybillVo.setLoadAmount(null);
                     carWaybillVo.setLoadDateTime(null);
                 }
-                carWaybillVo.setSendCarWeigh(kwtWaybillOrder.getEntrustAmount() == null ? null : String.valueOf(kwtWaybillOrder.getEntrustAmount()));
                 if (unloadTicket != null) {
                     carWaybillVo.setUnloadAmount(unloadTicket.getAmount() == null ? null : String.valueOf(unloadTicket.getAmount()));
                     carWaybillVo.setUnloadDateTime(unloadTicket.getCreateTime() == null ? null : DateUtil.getDateTime(unloadTicket.getCreateTime()));
@@ -353,27 +338,11 @@ public class ConsignOrderService {
                 carWaybillVo.setDeduct(deduct);
 //                carWaybillVo.setAppointor(remoteSystemService.queryUserCacheById(kwtWaybillOrder.getCreateBy()) == null ?
 //                        String.valueOf(kwtWaybillOrder.getCreateBy()) : remoteSystemService.queryUserCacheById(kwtWaybillOrder.getCreateBy()).getName());
-                if (carWaybillVo.getLoadAmount() != null) {
-                    loadAmountNumber = loadAmountNumber.add(new BigDecimal(carWaybillVo.getLoadAmount()));
-                }
-                if (carWaybillVo.getUnloadAmount() != null) {
-                    unloadAmountNumber = unloadAmountNumber.add(new BigDecimal(carWaybillVo.getUnloadAmount()));
-                }
-                if (carWaybillVo.getDefectiveWeigh() != null) {
-                    defectiveWeighNumber = defectiveWeighNumber.add(new BigDecimal(carWaybillVo.getDefectiveWeigh()));
-                }
                 returnList.add(carWaybillVo);
             }
         }
-        statistics.put("count", kwtWaybillOrders.size());
-        statistics.put("sendCarWeighNumber", sendCarWeighNumber);
-        statistics.put("loadAmountNumber", loadAmountNumber);
-        statistics.put("unloadAmountNumber", unloadAmountNumber);
-        statistics.put("defectiveWeighNumber", defectiveWeighNumber);
-        Map map = new HashMap<>(NumberConstant.SIXTEEN);
-        map.put("returnList", returnList);
-        map.put("statistics", statistics);
-        return HttpResult.ok(map);
+        PageResult result = PageResult.build(orderDto.getPage(), orderDto.getPageSize(), returnList.stream().count(), returnList);
+        return HttpResult.ok(result);
     }
 
 
@@ -383,7 +352,7 @@ public class ConsignOrderService {
      * @param orderDto
      * @return
      */
-    private HttpResult getCarWaybillByOrderByConsign(OrderDTO orderDto) {
+    private HttpResult getCarWaybillOrderByConsign(OrderDTO orderDto) {
         List<CarWaybillVO> returnList = new ArrayList<>();
         KwtLogisticsOrder order = kwtLogisticsOrderMapper.selectOne(new LambdaQueryWrapper<KwtLogisticsOrder>()
                         .eq(StringUtils.isNotBlank(orderDto.getId()), KwtLogisticsOrder::getId, Long.parseLong(orderDto.getId()))
@@ -394,7 +363,7 @@ public class ConsignOrderService {
         }
         List<KwtWaybillOrder> kwtWaybillOrders = kwtWaybillOrderMapper.selectList(new LambdaQueryWrapper<KwtWaybillOrder>()
                         .eq(StringUtils.isNotBlank(order.getId()), KwtWaybillOrder::getLOrderId, order.getId())
-                        .last("limit" + (orderDto.getPage() - 1) + " , " + orderDto.getPageSize())
+                        .last("limit " + (orderDto.getPage() - 1) + " , " + orderDto.getPageSize())
                 /**.eq(KwtWaybillOrder::getEntId, LoginUserHolder.getEntId())*/);
         if (CollectionUtils.isNotEmpty(kwtWaybillOrders)) {
             for (KwtWaybillOrder kwtWaybillOrder : kwtWaybillOrders) {
@@ -405,9 +374,6 @@ public class ConsignOrderService {
                 KwtWaybillOrderTicket unloadTicket = kwtWaybillOrderTicketMapper.selectOne(new LambdaQueryWrapper<KwtWaybillOrderTicket>()
                         .eq(StringUtils.isNotBlank(kwtWaybillOrder.getId()), KwtWaybillOrderTicket::getWOrderId, kwtWaybillOrder.getId())
                         .eq(KwtWaybillOrderTicket::getType, NumberConstant.TWO));
-                KwtLogisticsOrderCirculate circulate = kwtLogisticsOrderCirculateMapper.selectOne(new LambdaQueryWrapper<KwtLogisticsOrderCirculate>()
-                        .eq(StringUtils.isNotBlank(kwtWaybillOrder.getId()), KwtLogisticsOrderCirculate::getLOrderId, kwtWaybillOrder.getId())
-                        .eq(KwtLogisticsOrderCirculate::getEntId, order.getEntId()));
                 //扣亏量/吨->亏吨量-合理损耗
                 BigDecimal deduct = null;
                 if (kwtWaybillOrder.getDeficitAmount() != null && (kwtWaybillOrder.getDeficitAmount().compareTo(new BigDecimal(NumberConstant.ZERO)) == NumberConstant.ZERO)) {
@@ -416,7 +382,7 @@ public class ConsignOrderService {
                 carWaybillVo.setWOrderId(String.valueOf(kwtWaybillOrder.getId()));
                 carWaybillVo.setWOrderNo(order.getLOrderNo());
                 carWaybillVo.setTruckNo(kwtWaybillOrder.getTruckNo());
-                carWaybillVo.setStatus(String.valueOf(kwtWaybillOrder.getStatus()));
+                carWaybillVo.setStatus(CarWaybillEnum.getName(kwtWaybillOrder.getStatus()));
                 carWaybillVo.setWaybillType(kwtWaybillOrder.getType());
                 carWaybillVo.setDriverName(kwtWaybillOrder.getDriverName());
                 //todo 取mongo
@@ -424,11 +390,7 @@ public class ConsignOrderService {
                 /** 2023-07-24 原值为承运车队-去除后更换展示为承运公司*/
 //                carWaybillVo.setConsignMotorcade(sckwWaybillOrder == null ? null : sckwWaybillOrder.getCarrierFirmName());
                 carWaybillVo.setSendCarWeigh(kwtWaybillOrder.getEntrustAmount() == null ? null : String.valueOf(kwtWaybillOrder.getEntrustAmount()));
-                if (circulate != null) {
-                    carWaybillVo.setSendCarDate(circulate.getCreateTime() == null ? null : DateUtil.getDateTime(circulate.getCreateTime()));
-                } else {
-                    carWaybillVo.setSendCarDate(null);
-                }
+                carWaybillVo.setSendCarDate(DateUtil.getDateTime(kwtWaybillOrder.getCreateTime()));
                 if (loadTicket != null) {
                     carWaybillVo.setLoadAmount(loadTicket.getAmount() == null ? null : String.valueOf(loadTicket.getAmount()));
                     carWaybillVo.setLoadDateTime(loadTicket.getCreateTime() == null ? null : DateUtil.getDateTime(loadTicket.getCreateTime()));
@@ -457,12 +419,26 @@ public class ConsignOrderService {
     }
 
     /**
-     * 托运订单获取车辆信息
+     * 托运订单/承运订单-获取车辆信息
      *
      * @param orderDto
      * @return
      */
-    public HttpResult getCarListByOrder(OrderDTO orderDto) {
+    public HttpResult getCarListByOrder(OrderDTO orderDto, String type) {
+        HttpResult httpResult = new HttpResult();
+        if (String.valueOf(NumberConstant.ONE).equals(type)) {
+            //托运
+            httpResult = getAcceptCarListByOrder(orderDto);
+        } else if (String.valueOf(NumberConstant.TWO).equals(type)) {
+            //承运
+            httpResult = getAcceptCarListByOrder(orderDto);
+        } else {
+            return HttpResult.error("单据类型错误!");
+        }
+        return httpResult;
+    }
+
+    private HttpResult getAcceptCarListByOrder(OrderDTO orderDto) {
         KwtLogisticsOrder logisticsOrder = kwtLogisticsOrderMapper.selectOne(new LambdaQueryWrapper<KwtLogisticsOrder>()
                 .eq(KwtLogisticsOrder::getId, orderDto.getId()));
         if (logisticsOrder == null) {
@@ -470,15 +446,15 @@ public class ConsignOrderService {
             HttpResult.error("物流订单不存在");
         }
         List<OrderCarDTO> list = kwtWaybillOrderMapper.selectWaybillOrderCarListGroupByTruckNo(orderDto.getId(), orderDto.getPage(), orderDto.getPageSize());
-        if (CollectionUtils.isNotEmpty(list)) {
-            List<String> stringList = list.stream().map(OrderCarDTO::getTruckNo).collect(Collectors.toList());
-            Map<String, RTruckVo> truck = remoteFleetService.findTruck(stringList);
-            for (OrderCarDTO dto : list) {
-                dto.setLoadAmount(truck.get(dto.getTruckNo()) == null ?
-                        null : (truck.get(dto.getTruckNo()).getActualWeight() == null ?
-                        null : (String.valueOf(truck.get(dto.getTruckNo()).getActualWeight()))));
-            }
-        }
+//        if (CollectionUtils.isNotEmpty(list)) {
+//            List<String> stringList = list.stream().map(OrderCarDTO::getTruckNo).collect(Collectors.toList());
+//            Map<String, RTruckVo> truck = remoteFleetService.findTruck(stringList);
+//            for (OrderCarDTO dto : list) {
+//                dto.setLoadAmount(truck.get(dto.getTruckNo()) == null ?
+//                        null : (truck.get(dto.getTruckNo()).getActualWeight() == null ?
+//                        null : (String.valueOf(truck.get(dto.getTruckNo()).getActualWeight()))));
+//            }
+//        }
         PageResult build = PageResult.build(orderDto.getPage(), orderDto.getPageSize(), (long) list.size(), list);
         return HttpResult.ok(build);
     }

+ 67 - 22
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtWaybillOrderService.java

@@ -23,10 +23,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
 import java.math.RoundingMode;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
+import java.util.*;
 
 /**
  * @author zk
@@ -473,26 +470,26 @@ public class KwtWaybillOrderService {
         //int level = checkLogisticsLevel(logisticsOrder);
         String pids = logisticsOrder.getPids();
         if (StringUtils.isNotBlank(pids)) {
-            String [] idArray = pids.split(",");
+            String [] idArray = pids.split(Global.COMMA);
             for (String id : idArray) {
                 KwtLogisticsOrder order = logisticsOrderDao.selectById(id);
                 //承运订单-待派车
                 if (logisticsOrder.getStatus() == LogisticsOrderEnum.WAIT_DELIVERY.getCode()) {
                     //承运订单不存在分包:更新当前承运订单状态及委派量entrustAmount
-                    if (order.getId() == logisticsOrder.getId()) {
+                    //if (order.getId() == logisticsOrder.getId()) {
                         //承运订单已委派量
                         BigDecimal entrustAmount = logisticsOrder.getEntrustAmount() == null ? new BigDecimal(Global.AMOUNT) : logisticsOrder.getEntrustAmount();
                         logisticsOrder.setEntrustAmount(entrustAmount.add(ranksAmount));
-                    }
+                    //}
                     /**承运订单:待派车->运输中**/
                     logisticsOrder.setStatus(LogisticsOrderEnum.IN_TRANSIT.getCode());
-                    logisticsOrderDao.updateById(order);
+                    logisticsOrderDao.updateById(logisticsOrder);
 
                     /**承运订单状态记录**/
                     KwtLogisticsOrderTrack orderTrack = new KwtLogisticsOrderTrack();
-                    orderTrack.setLOrderId(order.getId());
-                    orderTrack.setStatus(order.getStatus());
-                    orderTrack.setRemark(LogisticsOrderEnum.getName(order.getStatus()));
+                    orderTrack.setLOrderId(logisticsOrder.getId());
+                    orderTrack.setStatus(logisticsOrder.getStatus());
+                    orderTrack.setRemark(LogisticsOrderEnum.getName(logisticsOrder.getStatus()));
                     logisticsOrderTrackDao.insert(orderTrack);
 
                     /**Mongodb数据更新**/
@@ -992,6 +989,7 @@ public class KwtWaybillOrderService {
         ticket.setType(Global.NUMERICAL_ONE);
         ticket.setAmount(waybillOrder.getLoadAmount());
         ticket.setUrls(params.getUrls());
+        ticket.setTime(params.getTime());
         waybillOrderTicketDao.insert(ticket);
 
         /**4更新承运订单entrustAmount**/
@@ -1096,6 +1094,7 @@ public class KwtWaybillOrderService {
         ticket.setType(Global.NUMERICAL_TWO);
         ticket.setAmount(waybillOrder.getUnloadAmount());
         ticket.setUrls(params.getUrls());
+        ticket.setTime(params.getTime());
         waybillOrderTicketDao.insert(ticket);
 
         /**4更新承运订单entrustAmount**/
@@ -1134,7 +1133,7 @@ public class KwtWaybillOrderService {
 
         /**6发送消息**/
 
-        return HttpResult.ok("货成功!");
+        return HttpResult.ok("货成功!");
     }
 
     /**
@@ -1257,6 +1256,7 @@ public class KwtWaybillOrderService {
         if (!LogisticsOrderEnum.transportCompleted(logisticsOrder.getStatus())
                 && logisticsOrder.getAmount().subtract(subcontractAmount).compareTo(waybillCount.getLoadAmount()) <= 0
                 && subcontractBool) {
+            //---------------------------------------------zk 2023-08-01 全量可运
             /**1-2下级分包承运订单运输完成**/
             logisticsOrder.setStatus(LogisticsOrderEnum.HAVE_FINISHED.getCode());
             logisticsOrderDao.updateById(logisticsOrder);
@@ -1272,8 +1272,12 @@ public class KwtWaybillOrderService {
         //车辆运单统计
         /**1-4Mongodb数据更新**/
         //车辆运单统计
-        waybillCount = waybillOrderDao.findWaybillOrderCount( new HashMap(){{put("lOrderId", logisticsOrder.getId());
-            put("unloadCountStatus", 1); put("upperlOrderId", logisticsOrder.getId()); }});
+        Map queryParams = new HashMap();
+        queryParams.put("lOrderId", logisticsOrder.getId());
+        queryParams.put("unloadCountStatus", 1);
+        queryParams.put("upperlOrderId", logisticsOrder.getId());
+        waybillCount = waybillOrderDao.findWaybillOrderCount(queryParams);
+
         //2承运订单
         SckwLogisticsOrder lOrder = new SckwLogisticsOrder();
         lOrder.setLoadTime(waybillCount.getLoadTime());
@@ -1290,12 +1294,13 @@ public class KwtWaybillOrderService {
         //获取所有上级物流订单ID(当前物流订单ID除外)
         String pids = logisticsOrder.getPids();
         if (StringUtils.isNotBlank(pids)) {
-            List<Long> idArray = (List)Arrays.asList(pids);
-            for (Long id : idArray) {
+            String [] idArray = pids.split(Global.COMMA);
+            for (String id : idArray) {
+                Long pid = Long.parseLong(id);
                 //当前物流订单ID除外
-                if (id != lOrderId) {
+                if (!pid.equals(lOrderId)) {
                     /**校验当前承运订单是否运输完成**/
-                    checkLogisticsByStatusV1(id);
+                    checkLogisticsByStatusV1(pid);
                 }
             }
         }
@@ -1308,7 +1313,7 @@ public class KwtWaybillOrderService {
      * @date 2023/7/26
      **/
     public HttpResult editTicket(WaybillOrderTicketDto params) {
-        /**校验**/
+        /**1校验**/
         KwtWaybillOrder waybillOrder = waybillOrderDao.selectById(params.getWOrderId());
         if (waybillOrder == null) {
             return HttpResult.error("车辆运单信息不存在!");
@@ -1318,17 +1323,35 @@ public class KwtWaybillOrderService {
             return HttpResult.error("车辆运单榜单信息不存在!");
         }
 
-        /**更新车辆运单信息**/
+        /**2更新车辆运单信息**/
         waybillOrder.setLoadAmount(params.getType() == 1 ? params.getAmount() : waybillOrder.getLoadAmount());
         waybillOrder.setUnloadAmount(params.getType() == 2 ? params.getAmount() : waybillOrder.getUnloadAmount());
         waybillOrder.setDeficitAmount(waybillOrder.getLoadAmount().subtract(waybillOrder.getUnloadAmount()));
         waybillOrderDao.updateById(waybillOrder);
 
-        /**更新榜单信息**/
+        /**3更新榜单信息**/
         BeanUtils.copyProperties(params, ticket);
         waybillOrderTicketDao.updateById(ticket);
 
-        /**更新承运订单装卸货量**/
+        /**4更新承运订单信息**/
+        Map queryParams = new HashMap();
+        queryParams.put("lOrderId", waybillOrder.getLOrderId());
+        queryParams.put("loadCountStatus", params.getType() == 1 ? 1 : null);
+        queryParams.put("unloadCountStatus", params.getType() == 2 ? 1 : null);
+        WaybillCountVo waybillCount = waybillOrderDao.findWaybillOrderCount(queryParams);
+
+        //更新卸货量/卸货时间/亏吨/亏吨扣款
+        KwtLogisticsOrder logisticsOrder = logisticsOrderDao.selectById(waybillOrder.getLOrderId());
+        logisticsOrder.setLoadAmount(waybillCount.getLoadAmount());
+        logisticsOrder.setLoadTime(waybillCount.getLoadTime());
+        logisticsOrder.setUnloadAmount(waybillCount.getUnloadAmount());
+        logisticsOrder.setUnloadTime(waybillCount.getUnloadTime());
+        logisticsOrder.setDeficitAmount(waybillCount.getDeficitAmount());
+        BigDecimal deficitPrice = deficitPrice(waybillCount.getLoadAmount(), waybillCount.getDeficitAmount(),
+                logisticsOrder.getLoss(), logisticsOrder.getGoodsPrice());
+        logisticsOrder.setDeficitPrice(deficitPrice);
+        logisticsOrderDao.updateById(logisticsOrder);
+
         //有更新装卸货量才会更新物流订单量
         if (waybillOrder.getLoadAmount().compareTo(params.getAmount()) != 0
                 || waybillOrder.getUnloadAmount().compareTo(params.getAmount()) != 0) {
@@ -1336,6 +1359,28 @@ public class KwtWaybillOrderService {
             checkLogisticsByStatusV1(waybillOrder.getLOrderId());
         }
 
+
+        /**5Mongodb数据更新**/
+        //1车辆运单
+        SckwWaybillOrder wOrder = new SckwWaybillOrder();
+        wOrder.set_id(waybillOrder.getId());
+        wOrder.setLoadAmount(waybillOrder.getLoadAmount());
+        wOrder.setLoadTime(params.getType() == 1 ? params.getTime() : null);
+        wOrder.setUnloadUrls(params.getType() == 1 ? params.getUrls() : null);
+        wOrder.setUnloadAmount(waybillOrder.getUnloadAmount());
+        wOrder.setUnloadTime(params.getType() == 2 ? params.getTime() : null);
+        wOrder.setLoadUrls(params.getType() == 2 ? params.getUrls() : null);
+        wOrder.setDeficitAmount(waybillOrder.getDeficitAmount());
+        editSckwWaybillOrder(wOrder, waybillOrder, 2);
+
+        //2承运订单
+        SckwLogisticsOrder lOrder = new SckwLogisticsOrder();
+        lOrder.setUnloadTime(logisticsOrder.getUnloadTime());
+        lOrder.setUnloadAmount(logisticsOrder.getUnloadAmount());
+        lOrder.setDeficitAmount(logisticsOrder.getDeficitAmount());
+        lOrder.setDeficitPrice(logisticsOrder.getDeficitPrice());
+        editSckwLogisticsOrder(lOrder, logisticsOrder);
+
         return HttpResult.ok("修改单证成功!");
     }
 

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

@@ -537,28 +537,49 @@ public class LogisticsConsignmentService {
      * @param pageSize
      * @return
      */
-    public HttpResult purchaseLogisticsOrder(String id, Integer page, Integer pageSize) {
-        Long count = getLogisticsOrderCount(id);
+    public HttpResult purchaseLogisticsOrder(String id, Integer page, Integer pageSize, String type) {
+        Long count = getLogisticsOrderCount(id, type);
         Integer newPage = page - 1;
-        List<LogisticsOrderDTO> list = getLogisticsOrderData(id, newPage, pageSize);
+        List<LogisticsOrderDTO> list = getLogisticsOrderData(id, newPage, pageSize, type);
         PageResult build = PageResult.build(page, pageSize, count, list);
         return HttpResult.ok(build);
     }
 
-    private Long getLogisticsOrderCount(String id) {
-        return kwtLogisticsOrderMapper.selectOrderCount(id);
+    private Long getLogisticsOrderCount(String id, String type) {
+        return kwtLogisticsOrderMapper.selectOrderCount(id, type);
     }
 
     /**
      * 销售订单-采购订单-获取托运订单数据
      *
      * @param id       销售订单id
-     * @param page
-     * @param pageSize
+     * @param page     当前页
+     * @param pageSize 每页条数
+     * @param type     属于采购(1)还是销售(2)
      * @return
      */
-    public HttpResult logisticsOrder(String id, Integer page, Integer pageSize) {
+    public HttpResult logisticsOrder(String id, Integer page, Integer pageSize, String type) {
         HttpResult httpResult = new HttpResult();
+        if (String.valueOf(NumberConstant.ONE).equals(type)) {
+            //采购
+            httpResult = logisticsOrderList(id, page, pageSize, type);
+        } else if (String.valueOf(NumberConstant.ONE).equals(type)) {
+            //销售
+            httpResult = logisticsOrderList(id, page, pageSize, type);
+        } else {
+            return HttpResult.error("单据类型错误");
+        }
+        return httpResult;
+    }
+
+    /**
+     * 采购订单/销售订单-托运订单列表-下方数据统计
+     *
+     * @param id   贸易订单id
+     * @param type 采购1 销售2
+     * @return
+     */
+    public HttpResult logisticsOrderCount(String id, String type) {
         OrderDetailRes orderDetailRes = tradeOrderInfoService.getOrderDetailById(Long.parseLong(id));
         /**根据下单方式(代客下单/自主下单)决定托运数据是否展示*/
         boolean flag = false;
@@ -570,41 +591,73 @@ public class LogisticsConsignmentService {
             throw new RuntimeException("获取贸易订单下单方式异常!");
         }
         BigDecimal resAmount = orderDetailRes.getAmount();
+        List<LogisticsOrderDTO> list = new ArrayList<>();
+        JSONObject jsonObject = new JSONObject();
+        //总数
+        Long count = 0L;
+        //计划量
+        BigDecimal amount = new BigDecimal("0.00");
+        //剩余调度量
+        BigDecimal residue = new BigDecimal("0.00");
+        if (flag) {
+            count = getLogisticsOrderCount(id, type);
+            list = kwtLogisticsOrderMapper.selectOrderCountByTorderId(id, type);
+            /**数据统计*/
+            for (LogisticsOrderDTO logisticsOrderDTO : list) {
+                amount = amount.add(logisticsOrderDTO.getAmount() == null ? new BigDecimal("0.00") : logisticsOrderDTO.getAmount());
+            }
+            residue = resAmount.subtract(amount);
+        }
+        jsonObject.put("count", count);
+        jsonObject.put("residue", residue);
+        jsonObject.put("amount", amount);
+        return HttpResult.ok(jsonObject);
+    }
+
+    /**
+     * 销售订单-采购订单-获取托运订单数据
+     *
+     * @param id       销售订单id
+     * @param page     当前页
+     * @param pageSize 每页条数
+     * @param type     属于采购(1)还是销售(2)
+     * @return
+     */
+    private HttpResult logisticsOrderList(String id, Integer page, Integer pageSize, String type) {
+        OrderDetailRes orderDetailRes = tradeOrderInfoService.getOrderDetailById(Long.parseLong(id));
+        /**根据下单方式(代客下单/自主下单)决定托运数据是否展示*/
+        boolean flag = false;
+        if (String.valueOf(NumberConstant.ONE).equals(orderDetailRes.getSource())) {
+            flag = true;
+        } else if (String.valueOf(NumberConstant.TWO).equals(orderDetailRes.getSource())) {
+            flag = true;
+        } else {
+            throw new RuntimeException("获取贸易订单下单方式异常!");
+        }
+        List<LogisticsOrderDTO> list = new ArrayList<>();
+        PageResult build = PageResult.build(page, pageSize, 0L, list);
         if (flag) {
             /**数据展示*/
-            //总数
-            Long count = getLogisticsOrderCount(id);
+            Long count = getLogisticsOrderCount(id, type);
             Integer newPage = page - 1;
-            List<LogisticsOrderDTO> list = getLogisticsOrderData(id, newPage, pageSize);
-            PageResult build = PageResult.build(page, pageSize, count, list);
-            /**数据统计*/
-            //计划量
-            BigDecimal amount = new BigDecimal(NumberConstant.ZERO);
+            list = getLogisticsOrderData(id, newPage, pageSize, type);
             for (LogisticsOrderDTO logisticsOrderDTO : list) {
-                amount = amount.add(logisticsOrderDTO.getAmount() == null ? new BigDecimal(NumberConstant.ZERO) : logisticsOrderDTO.getAmount());
+                logisticsOrderDTO.setStatus(LogisticsOrderEnum.getDestination(logisticsOrderDTO.getStatus()));
             }
-            //剩余调度量
-            BigDecimal residue = resAmount.subtract(amount);
-            JSONObject jsonObject = new JSONObject();
-            jsonObject.put("count", count);
-            jsonObject.put("residue", residue);
-            jsonObject.put("amount", amount);
-            Map<String, Object> map = new HashMap<>(NumberConstant.SIXTEEN);
-            map.put("dataList", build);
-            map.put("TableBottom", jsonObject);
-            httpResult.setData(map);
+            build = PageResult.build(page, pageSize, count, list);
         }
-        return httpResult;
+        return HttpResult.ok(build);
     }
 
     /**
-     * @param id
-     * @param page
-     * @param pageSize
+     * @param id       贸易订单id
+     * @param page     当前页
+     * @param pageSize 每页条数
+     * @param type     采购订单1/销售订单2
      * @return
      */
-    private List<LogisticsOrderDTO> getLogisticsOrderData(String id, Integer page, Integer pageSize) {
-        List<LogisticsOrderDTO> list = kwtLogisticsOrderMapper.selectOrderList(id, page, pageSize);
+    private List<LogisticsOrderDTO> getLogisticsOrderData(String id, Integer page, Integer pageSize, String type) {
+        List<LogisticsOrderDTO> list = kwtLogisticsOrderMapper.selectOrderList(id, page, pageSize, type);
         return list;
     }
 

+ 96 - 142
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/WaybillManagementService.java

@@ -16,12 +16,8 @@ import com.sckw.mongo.model.SckwWaybillOrder;
 import com.sckw.mongo.model.TableTops;
 import com.sckw.system.api.RemoteSystemService;
 import com.sckw.system.api.model.dto.res.UserCacheResDto;
-import com.sckw.transport.dao.KwtWaybillOrderAddressMapper;
-import com.sckw.transport.dao.KwtWaybillOrderMapper;
-import com.sckw.transport.dao.KwtWaybillOrderTicketMapper;
-import com.sckw.transport.dao.KwtWaybillOrderTrackMapper;
-import com.sckw.transport.model.KwtWaybillOrderAddress;
-import com.sckw.transport.model.KwtWaybillOrderTicket;
+import com.sckw.transport.dao.*;
+import com.sckw.transport.model.KwtLogisticsOrder;
 import com.sckw.transport.model.KwtWaybillOrderTrack;
 import com.sckw.transport.model.dto.WayBillDetailDTO;
 import com.sckw.transport.model.dto.WaybillOrderDTO;
@@ -40,7 +36,10 @@ import org.springframework.data.mongodb.core.query.Query;
 import org.springframework.stereotype.Service;
 import org.springframework.util.ObjectUtils;
 
-import java.util.*;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 import java.util.regex.Pattern;
 
 /**
@@ -61,6 +60,9 @@ public class WaybillManagementService {
     @Autowired
     public KwtWaybillOrderMapper kwtWaybillOrderMapper;
 
+    @Autowired
+    public KwtLogisticsOrderMapper kwtLogisticsOrderMapper;
+
     @Autowired
     public KwtWaybillOrderAddressMapper kwtWaybillOrderAddressMapper;
 
@@ -79,117 +81,7 @@ public class WaybillManagementService {
      * @param id
      * @return
      */
-    public HttpResult waybillData(@Param("id") Long id) {
-        List<Integer> statuses = initWaybillIndexStatus();
-        // 初始化各状态
-        Map<String, WaybillStatusVO> statusMap = new HashMap<>();
-        statuses.forEach(e -> {
-            WaybillStatusVO waybillStatusVO = new WaybillStatusVO();
-            waybillStatusVO.setStatus(false);
-            waybillStatusVO.setCode(e);
-            switch (e){
-                case 2 -> waybillStatusVO.setDestination("司机接单");
-                case 3 -> waybillStatusVO.setDestination("已出车");
-                case 4 -> waybillStatusVO.setDestination("到装货地");
-                case 5 -> waybillStatusVO.setDestination("已装货");
-                case 6 -> waybillStatusVO.setDestination("到卸货地");
-                case 7 -> waybillStatusVO.setDestination("已卸货");
-                case 8 -> waybillStatusVO.setDestination("已核单");
-            }
-            statusMap.put(String.valueOf(e), waybillStatusVO);
-        });
-
-//        WayBillDetailDTO kwtWaybillOrder = kwtWaybillOrderMapper.selectWaybillRelate(id);
-//        // 收发地址
-//        List<KwtWaybillOrderAddress> kwtWaybillOrderAddressList = kwtWaybillOrderAddressMapper.selectList(new LambdaQueryWrapper<KwtWaybillOrderAddress>()
-//                .eq(KwtWaybillOrderAddress::getWOrderId, kwtWaybillOrder.getLOrderId()));
-//        if (CollectionUtils.isNotEmpty(kwtWaybillOrderAddressList)) {
-//            for (KwtWaybillOrderAddress kwtWaybillOrderAddress : kwtWaybillOrderAddressList) {
-//                // 1装货地址、2卸货地址
-//                if (kwtWaybillOrderAddress.getAddressType().equals(NumberConstant.ONE)) {
-//                    kwtWaybillOrder.setStartLocationName(kwtWaybillOrderAddress.getName());
-//                    kwtWaybillOrder.setStartLocationAddress(kwtWaybillOrderAddress.getDetailAddress());
-//                }
-//                if (kwtWaybillOrderAddress.getAddressType().equals(NumberConstant.TWO)) {
-//                    kwtWaybillOrder.setEndLocationName(kwtWaybillOrderAddress.getName());
-//                    kwtWaybillOrder.setEndLocationAddress(kwtWaybillOrderAddress.getDetailAddress());
-//                }
-//            }
-//        }
-//        WaybillDataVO waybillDataVO = new WaybillDataVO();
-//        waybillDataVO.setTransport(kwtWaybillOrder);
-//
-//        // 车辆信息
-//        List<String> list = new ArrayList<>();
-//        list.add(kwtWaybillOrder.getTruckNo());
-////        Map<String, RTruckVo> trucks = remoteFleetService.findTruck(list);
-//        Map<String, RTruckVo> trucks = new HashMap<>();
-//        WaybillCarVO waybillCarVO = new WaybillCarVO();
-//        if (CollectionUtils.isNotEmpty(trucks)) {
-//            waybillCarVO.setType(trucks.get(0).getTruckType());
-//            waybillCarVO.setTruckId(String.valueOf(trucks.get(0).getId()));
-//            waybillCarVO.setTrailerNo(trucks.get(0).getTrailerNo());
-//        }
-//        waybillCarVO.setDriverId(String.valueOf(kwtWaybillOrder.getDriverId()))
-//                .setTruckNo(kwtWaybillOrder.getTruckNo())
-//                .setDriverName(kwtWaybillOrder.getDriverName())
-//                .setDriverPhone(kwtWaybillOrder.getDriverPhone());
-//        waybillDataVO.setCar(waybillCarVO);
-//        // 履约信息
-//        List<KwtWaybillOrderTicket> kwtWaybillOrderTicket = kwtWaybillOrderTicketMapper.selectList(new LambdaQueryWrapper<KwtWaybillOrderTicket>()
-//                .eq(KwtWaybillOrderTicket::getWOrderId, kwtWaybillOrder.getWOrderId()));
-//        WaybillTicketVO waybillTicketVO = new WaybillTicketVO();
-//        if (CollectionUtils.isNotEmpty(kwtWaybillOrderTicket)) {
-//            for (KwtWaybillOrderTicket ticket : kwtWaybillOrderTicket) {
-//                // 装货
-//                if (ticket.getType().equals(NumberConstant.ONE)) {
-//                    waybillTicketVO.setLoadUrl(ticket.getUrls())
-//                            .setLoadWeight(String.valueOf(ticket.getGrossAmount()))
-//                            .setLoadTime(String.valueOf(ticket.getCreateTime()));
-//                }
-//                // 卸货
-//                if (ticket.getType().equals(NumberConstant.TWO)) {
-//                    waybillTicketVO.setUnloadUrl(ticket.getUrls())
-//                            .setUnloadWeight(String.valueOf(ticket.getGrossAmount()))
-//                            .setUnloadTime(String.valueOf(ticket.getCreateTime()));
-//                }
-//            }
-//        }
-//        waybillDataVO.setAgreement(waybillTicketVO);
-//        // 业务日志
-//        List<WaybillTrackVO> waybillTrackVOS = new ArrayList<>();
-//        List<KwtWaybillOrderTrack> kwtWaybillOrderTracks = kwtWaybillOrderTrackMapper.selectList(new LambdaQueryWrapper<KwtWaybillOrderTrack>()
-//                .eq(KwtWaybillOrderTrack::getWOrderId, kwtWaybillOrder.getWOrderId()));
-//        if (CollectionUtils.isNotEmpty(kwtWaybillOrderTracks)) {
-//            List<Long> userIds = new ArrayList<>();
-//            for (KwtWaybillOrderTrack track : kwtWaybillOrderTracks) {
-//                userIds.add(track.getCreateBy());
-//            }
-//            List<UserCacheResDto> users = remoteSystemService.queryUserCacheByIds(userIds);
-//            Map<String, UserCacheResDto> userMap = new HashMap<>();
-//            if(!ObjectUtils.isEmpty(users)) {
-//                users.forEach(e -> userMap.put(String.valueOf(e.getId()), e));
-//            }
-//            for (KwtWaybillOrderTrack track : kwtWaybillOrderTracks) {
-//                WaybillTrackVO waybillTrackVO = new WaybillTrackVO();
-//                if(statusMap.containsKey(String.valueOf(track.getStatus()))) {
-//                    statusMap.get(String.valueOf(track.getStatus()))
-//                            .setCreateTime(DateUtil.getDateTime(track.getCreateTime()))
-//                            .setCreateByName(userMap.get(String.valueOf(track.getCreateBy())).getName())
-//                            .setStatus(true)
-//                            .setId(track.getId());
-//                }
-//                waybillTrackVO.setId(String.valueOf(track.getId()))
-//                        .setRemark(track.getRemark())
-//                        .setStatus(String.valueOf(track.getStatus()))
-//                        .setCreateBy(userMap.get(String.valueOf(track.getCreateBy())).getName());
-//                waybillTrackVOS.add(waybillTrackVO);
-//            }
-//        }
-//        waybillDataVO.setLogs(waybillTrackVOS);
-//        waybillDataVO.setProcess(statusMap.values().stream().toList());
-//        return HttpResult.ok(waybillDataVO);
-
+    public HttpResult waybillData(Long id) {
         WaybillDataVO waybillDataVO = new WaybillDataVO();
         Criteria criteria = new Criteria();
         criteria.and("wOrderId").is(id);
@@ -198,13 +90,92 @@ public class WaybillManagementService {
         Query queryFormat = new Query(criteria);
         SckwWaybillOrder info = mongoTemplate.findOne(queryFormat, SckwWaybillOrder.class);
         WayBillDetailDTO wayBillDetailDTO = new WayBillDetailDTO();
+        WaybillTicketVO waybillTicketVO = new WaybillTicketVO();
+        WaybillCarVO waybillCarVO = new WaybillCarVO();
         if(!ObjectUtils.isEmpty(info)) {
+            // 基础信息
             wayBillDetailDTO.setDriverId(info.getDriverId());
             wayBillDetailDTO.setDriverName(info.getDriverName());
             wayBillDetailDTO.setDriverPhone(info.getDriverPhone());
             wayBillDetailDTO.setDriverId(info.getDriverId());
+            wayBillDetailDTO.setWOrderNo(info.getWOrderNo());
+            wayBillDetailDTO.setLOrderNo(info.getLOrderNo());
+            wayBillDetailDTO.setEntrustAmount(String.valueOf(info.getEntrustAmount()));
+            wayBillDetailDTO.setType(String.valueOf(info.getType()));
+            wayBillDetailDTO.setStartTime(DateUtil.getDateTime(info.getStartTime()));
+            wayBillDetailDTO.setEndTime(DateUtil.getDateTime(info.getEndTime()));
+            wayBillDetailDTO.setCreateBy(info.getCreateByName());
+            wayBillDetailDTO.setGoodsName(info.getGoodsName());
+            wayBillDetailDTO.setLoadDetailAddress(info.getLoadDetailAddress());
+            wayBillDetailDTO.setUnloadDetailAddress(info.getUnloadDetailAddress());
+            KwtLogisticsOrder kwtLogisticsOrder = kwtLogisticsOrderMapper.selectById(info.getLOrderId());
+            wayBillDetailDTO.setPriceType(kwtLogisticsOrder.getBillingMode());
+            wayBillDetailDTO.setCheckFirmName(info.getCheckFirmName());
+            // 车辆信息
+            waybillCarVO.setType(info.getTruckType());
+            waybillCarVO.setTruckNo(info.getTruckNo());
+            waybillCarVO.setDriverName(info.getDriverName());
+            waybillCarVO.setDriverPhone(info.getDriverPhone());
+            List<String> list = new ArrayList<>();
+            list.add(info.getTruckNo());
+            Map<String, RTruckVo> trucks = remoteFleetService.findTruck(list);
+            if (CollectionUtils.isNotEmpty(trucks)) {
+                waybillCarVO.setTrailerNo(trucks.get(info.getTruckNo()) != null ? trucks.get(info.getTruckNo()).getTrailerNo() : null);
+            }
+            // 票据
+            waybillTicketVO.setLoadTime(DateUtil.getDateTime(info.getLoadTime()));
+            waybillTicketVO.setLoadWeight(String.valueOf(info.getLoadAmount()));
+            waybillTicketVO.setLoadUrl(String.valueOf(info.getLoadUrls()));
+            waybillTicketVO.setUnloadTime(DateUtil.getDateTime(info.getUnloadTime()));
+            waybillTicketVO.setUnloadWeight(String.valueOf(info.getUnloadAmount()));
+            waybillTicketVO.setUnloadUrl(String.valueOf(info.getUnloadUrls()));
         }
+        List<Integer> statuses = initWaybillIndexStatus();
+        // 初始化各状态
+        List<WaybillStatusVO> statusVOS = new ArrayList<>();
+        statuses.forEach(e -> {
+            WaybillStatusVO waybillStatusVO = new WaybillStatusVO();
+            waybillStatusVO.setStatus(false);
+            waybillStatusVO.setCode(e);
+            waybillStatusVO.setDestination(CarWaybillEnum.getName(e));
+            statusVOS.add(waybillStatusVO);
+        });
+        List<KwtWaybillOrderTrack> kwtWaybillOrderTracks = kwtWaybillOrderTrackMapper.selectList(new LambdaQueryWrapper<KwtWaybillOrderTrack>()
+                .eq(KwtWaybillOrderTrack::getWOrderId, id));
+        List<WaybillTrackVO> waybillTrackVOS = new ArrayList<>();
+        if (CollectionUtils.isNotEmpty(kwtWaybillOrderTracks)) {
+            List<Long> userIds = new ArrayList<>();
+            kwtWaybillOrderTracks.forEach(e -> userIds.add(e.getCreateBy()));
+            List<UserCacheResDto> users = remoteSystemService.queryUserCacheByIds(userIds);
+            Map<Long, String> usersMap = new HashMap<>();
+            users.forEach(e -> usersMap.put(e.getId(), e.getName()));
+            for (KwtWaybillOrderTrack kwtWaybillOrderTrack: kwtWaybillOrderTracks) {
+                for (WaybillStatusVO statusVO:statusVOS) {
+                    if(statusVO.getCode().equals(kwtWaybillOrderTrack.getStatus())) {
+                        statusVO.setStatus(true);
+                        statusVO.setId(kwtWaybillOrderTrack.getId());
+                        statusVO.setCreateTime(DateUtil.getDateTime(kwtWaybillOrderTrack.getCreateTime()));
+                        statusVO.setCreateByName(usersMap.get(kwtWaybillOrderTrack.getCreateBy()) == null
+                                ? null : usersMap.get(kwtWaybillOrderTrack.getCreateBy()));
+                        break;
+                    }
+                }
+                WaybillTrackVO waybillTrackVO = new WaybillTrackVO();
+                waybillTrackVO.setId(String.valueOf(kwtWaybillOrderTrack.getId()))
+                        .setRemark(kwtWaybillOrderTrack.getRemark())
+                        .setStatus(String.valueOf(kwtWaybillOrderTrack.getStatus()))
+                        .setCreateBy(usersMap.get(kwtWaybillOrderTrack.getCreateBy()) == null
+                                ? null : usersMap.get(kwtWaybillOrderTrack.getCreateBy()))
+                        .setCreateTime(DateUtil.getDateTime(kwtWaybillOrderTrack.getCreateTime()));
+                waybillTrackVOS.add(waybillTrackVO);
+            }
+        }
+
+        waybillDataVO.setAgreement(waybillTicketVO);
+        waybillDataVO.setCar(waybillCarVO);
         waybillDataVO.setTransport(wayBillDetailDTO);
+        waybillDataVO.setProcess(statusVOS);
+        waybillDataVO.setLogs(waybillTrackVOS);
         return HttpResult.ok(waybillDataVO);
     }
 
@@ -224,15 +195,7 @@ public class WaybillManagementService {
             WaybillStatusVO waybillStatusVO = new WaybillStatusVO();
             waybillStatusVO.setStatus(false);
             waybillStatusVO.setCode(e);
-            switch (e){
-                case 2 -> waybillStatusVO.setDestination("司机接单");
-                case 3 -> waybillStatusVO.setDestination("出车");
-                case 4 -> waybillStatusVO.setDestination("到装货地");
-                case 5 -> waybillStatusVO.setDestination("装货");
-                case 6 -> waybillStatusVO.setDestination("到卸货地");
-                case 7 -> waybillStatusVO.setDestination("卸货");
-                case 8 -> waybillStatusVO.setDestination("核单");
-            }
+            waybillStatusVO.setDestination(CarWaybillEnum.getName(e));
             statusVOS.add(waybillStatusVO);
         });
 
@@ -276,8 +239,7 @@ public class WaybillManagementService {
             if (CollectionUtils.isNotEmpty(kwtWaybillOrderTracks)) {
                 List<Long> userIds = new ArrayList<>();
                 kwtWaybillOrderTracks.forEach(e -> userIds.add(e.getCreateBy()));
-//                List<UserCacheResDto> users = remoteSystemService.queryUserCacheByIds(userIds);
-                List<UserCacheResDto> users = new ArrayList<>();
+                List<UserCacheResDto> users = remoteSystemService.queryUserCacheByIds(userIds);
                 Map<Long, String> usersMap = new HashMap<>();
                 users.forEach(e -> usersMap.put(e.getId(), e.getName()));
                 waybillBoardListVO.getTracks().forEach(e -> {
@@ -286,7 +248,7 @@ public class WaybillManagementService {
                             e.setStatus(true);
                             e.setId(e2.getId());
                             e.setCreateTime(DateUtil.getDateTime(e2.getCreateTime()));
-                            e.setCreateByName(usersMap.get(e2.getCreateBy()));
+                            e.setCreateByName(usersMap.get(e2.getCreateBy()) == null ? null : usersMap.get(e2.getCreateBy()));
                         }
                     });
                 });
@@ -330,7 +292,7 @@ public class WaybillManagementService {
             Criteria.where("wOrderId").in(wOrderIds);
         }
 
-        if (StringUtils.isNotBlank(query.getStatus())) {
+        if (StringUtils.isNotBlank(query.getStatus()) && !query.getStatus().equals("all")) {
             criteria.and("status").is(query.getStatus());
         } else {
             criteria.and("status").in(statuses);
@@ -397,22 +359,14 @@ public class WaybillManagementService {
         Map<String, TableTops> listMap = new HashMap<>();
         TableTops topTotal = new TableTops();
         topTotal.setName("全部");
-        topTotal.setValue("");
+        topTotal.setValue("all");
         topTotal.setTotal(0);
         listMap.put("", topTotal);
         statuses.forEach(e -> {
             TableTops top = new TableTops();
             top.setValue(String.valueOf(e));
             top.setTotal(0);
-            switch (e){
-                case 2 -> top.setName("司机接单");
-                case 3 -> top.setName("出车");
-                case 4 -> top.setName("到装货地");
-                case 5 -> top.setName("装货");
-                case 6 -> top.setName("到卸货地");
-                case 7 -> top.setName("卸货");
-                case 8 -> top.setName("核单");
-            }
+            top.setName(CarWaybillEnum.getName(e));
             listMap.put(String.valueOf(e), top);
         });
         if(CollectionUtils.isNotEmpty(results)) {
@@ -420,7 +374,7 @@ public class WaybillManagementService {
                 listMap.get(result.getValue()).setTotal(result.getTotal());
             }
         }
-        listMap.get("").setTotal(listMap.values().parallelStream().mapToInt(e -> e.getTotal()).sum());
+        listMap.get("all").setTotal(listMap.values().parallelStream().mapToInt(e -> e.getTotal()).sum());
         return HttpResult.ok(listMap.values());
     }
 }

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

@@ -64,8 +64,8 @@
                a.create_by   as createBy,
                a.create_time as createTime
         FROM kwt_logistics_order a
-                 LEFT JOIN kwt_logistics_order_track b ON a.id = b.l_order_id
-                 LEFT JOIN kwt_logistics_order_unit c ON a.id = c.l_order_id AND c.unit_type = '2'
+                 LEFT JOIN kwt_logistics_order_track b ON a.id = b.l_order_id and a.`status`=b.`status`
+                 LEFT JOIN kwt_logistics_order_unit c ON a.id = c.l_order_id AND c.unit_type = #{type}
         WHERE a.del_flag = '0'
           AND b.del_flag = '0'
           AND a.t_order_id = #{id,jdbcType=VARCHAR} limit #{page}
@@ -74,8 +74,8 @@
     <select id="selectOrderCount" resultType="java.lang.Long">
         SELECT count(a.id)
         FROM kwt_logistics_order a
-                 LEFT JOIN kwt_logistics_order_track b ON a.id = b.l_order_id
-                 LEFT JOIN kwt_logistics_order_unit c ON a.id = c.l_order_id AND c.unit_type = '2'
+                 LEFT JOIN kwt_logistics_order_track b ON a.id = b.l_order_id and a.`status` = b.`status`
+                 LEFT JOIN kwt_logistics_order_unit c ON a.id = c.l_order_id AND c.unit_type = #{type}
         WHERE a.del_flag = '0'
           AND b.del_flag = '0'
           AND a.t_order_id = #{id,jdbcType=VARCHAR}
@@ -398,4 +398,27 @@
             and id != #{ownOrderId, jdbcType=BIGINT}
         </if>
     </select>
+    <select id="selectOrderCountByTorderId" resultType="com.sckw.transport.model.dto.LogisticsOrderDTO">
+        SELECT a.id          as lOrderId,
+               a.l_order_no  as lOrderNo,
+               b.`status`    as `status`,
+               a.t_order_id  as tOrderId,
+               a.t_order_no  as tOrderNo,
+               a.payment     as payment,
+               a.amount,
+               a.price,
+               a.loss,
+               a.goods_price as goodsPrice,
+               c.firm_name   as comanyName,
+               c.contacts,
+               c.phone,
+               a.create_by   as createBy,
+               a.create_time as createTime
+        FROM kwt_logistics_order a
+                 LEFT JOIN kwt_logistics_order_track b ON a.id = b.l_order_id
+                 LEFT JOIN kwt_logistics_order_unit c ON a.id = c.l_order_id AND c.unit_type = #{type}
+        WHERE a.del_flag = '0'
+          AND b.del_flag = '0'
+          AND a.t_order_id = #{id,jdbcType=VARCHAR}
+    </select>
 </mapper>

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

@@ -161,13 +161,13 @@
             and lo.id = #{lOrderId, jdbcType=BIGINT}
         </if>
         <if test="passStatus != null and passStatus != ''">
-            wo.status = 8
+            and wo.status = 8
         </if>
         <if test="loadCountStatus != null and loadCountStatus != ''">
-            wo.status in (5, 6, 7, 8, 12)
+            and wo.status in (5, 6, 7, 8, 12)
         </if>
         <if test="unloadCountStatus != null and unloadCountStatus != ''">
-            wo.status in (7, 8, 12)
+            and wo.status in (7, 8, 12)
         </if>
         <if test="upperlOrderId != null and upperlOrderId != ''">
             and FIND_IN_SET(#{upperlOrderId, jdbcType=BIGINT}, pids)

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

@@ -31,10 +31,10 @@
         from kwt_waybill_order_ticket
         where del_flag = 0
         <if test="wOrderId != null and wOrderId != ''">
-            and w_order_id != #{wOrderId, jdbcType=BIGINT}
+            and w_order_id = #{wOrderId, jdbcType=BIGINT}
         </if>
         <if test="type != null and type != ''">
-            and type != #{type, jdbcType=INTEGER}
+            and type = #{type, jdbcType=INTEGER}
         </if>
     </select>
 </mapper>