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

1、4.2物流订单查询运单详情、运单列表;

zk преди 1 година
родител
ревизия
94635ea145
променени са 16 файла, в които са добавени 606 реда и са изтрити 146 реда
  1. 23 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/KwtWaybillOrderController.java
  2. 2 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/dao/KwtLogisticsOrderAddressMapper.java
  3. 1 1
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/dao/KwtWaybillOrderAddressMapper.java
  4. 4 1
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/dao/KwtWaybillOrderSubtaskMapper.java
  5. 17 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/dto/WaybillSubtaskOrderQueryDto.java
  6. 0 104
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/WaybillDetailVO.java
  7. 6 6
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/WaybillDetailVo.java
  8. 156 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/WaybillSubtaskDetailVo.java
  9. 172 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/WaybillSubtaskSelectVo.java
  10. 7 6
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/WaybillTicketVO.java
  11. 89 26
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtWaybillOrderTicketService.java
  12. 92 1
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtWaybillOrderV1Service.java
  13. 15 0
      sckw-modules/sckw-transport/src/main/resources/mapper/KwtLogisticsOrderAddressMapper.xml
  14. 3 0
      sckw-modules/sckw-transport/src/main/resources/mapper/KwtWaybillOrderAddressMapper.xml
  15. 19 0
      sckw-modules/sckw-transport/src/main/resources/mapper/KwtWaybillOrderSubtaskMapper.xml
  16. 0 1
      sckw-modules/sckw-transport/src/main/resources/mapper/KwtWaybillOrderV1Mapper.xml

+ 23 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/KwtWaybillOrderController.java

@@ -87,6 +87,29 @@ public class KwtWaybillOrderController {
         return waybillOrderV1Service.waybillDetail(wOrderId);
     }
 
+    /**
+     * @param params {page:页数、pageSize:每页条数、。。。}
+     * @desc 分页查询
+     * @author zk
+     * @date 2024/3/8
+     **/
+    @PostMapping("/subtaskSelect")
+    public HttpResult subtaskSelect(@RequestBody WaybillSubtaskOrderQueryDto params) throws SystemException {
+        return HttpResult.ok(waybillOrderV1Service.subtaskSelect(params));
+    }
+
+    /**
+     * @param wOrderId 运单ID
+     * @param lOrderId 物流订单ID
+     * @desc 运单详情
+     * @author zk
+     * @date 2024/3/13
+     **/
+    @GetMapping("/waybillSubtaskDetail")
+    public HttpResult waybillSubtaskDetail(@RequestParam("wOrderId") Long wOrderId, @RequestParam("lOrderId") Long lOrderId){
+        return waybillOrderV1Service.waybillSubtaskDetail(wOrderId, lOrderId);
+    }
+
     /**
      * @desc 统计司机任务数(待接单/出车/执行/完结)
      * @author zk

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

@@ -36,4 +36,6 @@ public interface KwtLogisticsOrderAddressMapper extends BaseMapper<KwtLogisticsO
 
 
     List<UnLoadAddressVo> findByAddressAndUnLoadAmount(@Param("lOrderId") Long lOrderId, @Param("addressType") Integer addressType);
+
+    List<KwtLogisticsOrderAddress> findByAddresses(@Param("lOrderId") Long lOrderId, @Param("addressType") Integer addressType);
 }

+ 1 - 1
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/dao/KwtWaybillOrderAddressMapper.java

@@ -46,7 +46,7 @@ public interface KwtWaybillOrderAddressMapper extends BaseMapper<KwtWaybillOrder
      * @param lAddressIds 物流订单地址ID
      * @return 地址信息集
      */
-    List<KwtWaybillOrderAddress> findByLAddressIds(@Param("lAddressIds") List<Long> lAddressIds);
+    List<KwtWaybillOrderAddress> findByLAddressIds(@Param("wOrderId") Long wOrderId, @Param("lAddressIds") List<Long> lAddressIds);
 
     /**
      * 查询车辆运单装卸货地址CODE

+ 4 - 1
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/dao/KwtWaybillOrderSubtaskMapper.java

@@ -2,9 +2,10 @@ 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.vo.WaybillSubtaskSelectVo;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
-
 import java.util.List;
 
 /**
@@ -18,4 +19,6 @@ public interface KwtWaybillOrderSubtaskMapper extends BaseMapper<KwtWaybillOrder
     List<KwtWaybillOrderSubtask> findByWOrderId(@Param("wOrderId") Long wOrderId);
 
     KwtWaybillOrderSubtask findByOrderId(@Param("wOrderId") Long wOrderId, @Param("lOrderId") Long lOrderId);
+
+    List<WaybillSubtaskSelectVo> findListPage(WaybillSubtaskOrderQueryDto params);
 }

+ 17 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/dto/WaybillSubtaskOrderQueryDto.java

@@ -0,0 +1,17 @@
+package com.sckw.transport.model.dto;
+
+import com.sckw.core.model.page.PageRequest;
+import lombok.Data;
+
+/**
+ * @author zk
+ * @desc 运单查询参数
+ * @date 2024/3/8 0008
+ */
+@Data
+public class WaybillSubtaskOrderQueryDto extends PageRequest{
+    /**
+     * 多个ID已英文逗号隔开
+     */
+    private String ids;
+}

+ 0 - 104
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/WaybillDetailVO.java

@@ -1,104 +0,0 @@
-package com.sckw.transport.model.vo;
-
-import com.fasterxml.jackson.annotation.JsonFormat;
-import lombok.Data;
-
-import java.math.BigDecimal;
-import java.util.Date;
-
-/**
- * @author lfdc
- * @description 运单详情vo
- * @date 2023-07-18 16:07:54
- */
-@Data
-public class WaybillDetailVO {
-    /**
-     * 派车量
-     */
-    private BigDecimal sendCarWeigh;
-    /**
-     * 实装量
-     */
-    private BigDecimal loadAmount;
-    /**
-     * 实卸量
-     */
-    private BigDecimal unloadAmount;
-    /**
-     * 实际装货时间
-     */
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
-    private Date stowageDateTime;
-    /**
-     * 实际卸货时间
-     */
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
-    private Date unloadDateTime;
-    /**
-     * 运单类型
-     */
-    private Integer waybillType;
-    /**
-     * 亏吨量
-     */
-    private BigDecimal deficitAmount;
-
-
-    /**
-     * 单位
-     */
-    private String unit;
-
-
-    /**
-     * 单位翻译
-     */
-    private String unitLabel;
-
-    /**
-     * 合理损耗
-     */
-    private BigDecimal loss;
-
-    /**
-     * 合理损耗
-     */
-    private String lossLabel;
-    /**
-     * 扣亏损值
-     */
-    private BigDecimal goodsPrice;
-    /**
-     * 扣亏损值
-     */
-    private String goodsPriceLabel;
-    /**
-     * 派车人
-     */
-    private String appointor;
-    /**
-     * 承运车队
-     */
-    private String fleetName;
-    /**
-     * 车牌号
-     */
-    private String truckNo;
-    /**
-     * 司机姓名
-     */
-    private String driverName;
-    /**
-     * 计划开始时间  HH:mm:ss
-     */
-    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
-    private Date startTime;
-    /**
-     * 计划结束时间  HH:mm:ss
-     */
-    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
-    private Date endTime;
-
-}
-

+ 6 - 6
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/WaybillDetailV1Vo.java → sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/WaybillDetailVo.java

@@ -12,7 +12,7 @@ import java.util.Map;
  * @date 2024/3/13 0013
  */
 @Data
-public class WaybillDetailV1Vo {
+public class WaybillDetailVo {
 
     /**
      * 运单ID
@@ -26,6 +26,11 @@ public class WaybillDetailV1Vo {
     @JsonProperty("wOrderNo")
     private String wOrderNo;
 
+    /**
+     * 关联承运订单
+     */
+    private String lOrderNo;
+
     /**
      * 企业类型
      */
@@ -91,11 +96,6 @@ public class WaybillDetailV1Vo {
      */
     private String createByPhone;
 
-    /**
-     * 关联承运订单
-     */
-    private String lOrderNo;
-
     /**
      * 地址信息
      */

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

@@ -0,0 +1,156 @@
+package com.sckw.transport.model.vo;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author zk
+ * @desc 运单详情(子单)
+ * @date 2024/3/13 0013
+ */
+@Data
+public class WaybillSubtaskDetailVo {
+
+    /**
+     * 运单ID
+     */
+    @JsonProperty("wOrderId")
+    private Long wOrderId;
+
+    /**
+     * 运单号
+     */
+    @JsonProperty("wOrderNo")
+    private String wOrderNo;
+
+    /**
+     * 关联承运订单
+     */
+    private String lOrderNo;
+
+    /**
+     * 企业类型
+     */
+    private Long entId;
+
+    /**
+     * 托运单位
+     */
+    private String firmName;
+
+    /**
+     * 运单类型
+     */
+    private int type;
+
+    /**
+     * 车辆ID
+     */
+    private Long truckId;
+
+    /**
+     * 车牌号
+     */
+    private String truckNo;
+
+    /**
+     * 司机ID
+     */
+    private Long driverId;
+
+    /**
+     * 司机姓名
+     */
+    private String driverName;
+
+    /**
+     * 司机电话
+     */
+    private String driverPhone;
+
+    /**
+     * 司机身份证
+     */
+    private String driverIdcard;
+    
+    /**
+     * 运单状态
+     */
+    private Integer status;
+
+    /**
+     * 运单状态
+     */
+    private String statusName;
+
+    /**
+     * 创建人
+     */
+    private String createByName;
+
+    /**
+     * 创建人手机号
+     */
+    private String createByPhone;
+
+    /**
+     * 托量单位
+     */
+    private String unit;
+
+    /**
+     * 托量单位
+     */
+    private String unitName;
+
+    /**
+     * 已委托量
+     */
+    private Double entrustAmount;
+
+    /**
+     * 卸货重量
+     */
+    private Double unloadAmount;
+
+    /**
+     * 计划结束日期
+     */
+    private Date unloadTime;
+
+    /**
+     * 装货重量
+     */
+    private Double loadAmount;
+
+    /**
+     * 计划开始日期
+     */
+    private Date loadTime;
+
+    /**
+     * 亏吨重量
+     */
+    private Double deficitAmount;
+
+    /**
+     * 亏吨扣款
+     */
+    private Double deficitPrice;
+
+    /**
+     * 地址信息
+     */
+    private List<Map<String, Object>> addresses;
+
+    /**
+     * 地址信息
+     */
+    private List<WaybillTicketVO> tickets;
+
+
+}

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

@@ -0,0 +1,172 @@
+package com.sckw.transport.model.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author zk
+ * @desc 运单详情(子单)
+ * @date 2024/3/13 0013
+ */
+@Data
+public class WaybillSubtaskSelectVo {
+
+    /**
+     * 运单ID
+     */
+    @JsonProperty("wOrderId")
+    private Long wOrderId;
+
+    /**
+     * 运单号
+     */
+    @JsonProperty("wOrderNo")
+    private String wOrderNo;
+
+    /**
+     * 关联承运订单
+     */
+    private String lOrderNo;
+
+    /**
+     * 企业类型
+     */
+    private Long entId;
+
+    /**
+     * 托运单位
+     */
+    private String firmName;
+
+    /**
+     * 运单类型
+     */
+    private int type;
+
+    /**
+     * 运单类型
+     */
+    private String waybillType;
+
+    /**
+     * 车辆ID
+     */
+    private Long truckId;
+
+    /**
+     * 车牌号
+     */
+    private String truckNo;
+
+    /**
+     * 司机ID
+     */
+    private Long driverId;
+
+    /**
+     * 司机姓名
+     */
+    private String driverName;
+
+    /**
+     * 司机电话
+     */
+    private String driverPhone;
+
+    /**
+     * 司机身份证
+     */
+    private String driverIdcard;
+    
+    /**
+     * 运单状态
+     */
+    private Integer status;
+
+    /**
+     * 运单状态
+     */
+    private String statusLabel;
+
+    /**
+     * 派车时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    private Date sendCarDate;
+
+    /**
+     * 创建人
+     */
+    private String createByName;
+
+    /**
+     * 创建人手机号
+     */
+    private String createByPhone;
+
+    /**
+     * 托量单位
+     */
+    private String unit;
+
+    /**
+     * 托量单位
+     */
+    private String unitLabel;
+
+    /**
+     * 已委托量
+     */
+    private Double entrustAmount;
+
+    /**
+     * 卸货重量
+     */
+    private Double unloadAmount;
+
+    /**
+     * 计划结束日期
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    private Date unloadDateTime;
+
+    /**
+     * 装货重量
+     */
+    private Double loadAmount;
+
+    /**
+     * 计划开始日期
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    private Date loadDateTime;
+
+    /**
+     * 亏吨重量
+     */
+    private Double deficitAmount;
+
+    /**
+     * 亏吨扣款
+     */
+    private Double deficitPrice;
+
+    /**
+     * 合理损耗
+     */
+    private BigDecimal loss;
+
+    /**
+     * 合理损耗
+     */
+    private String lossLabel;
+
+
+
+}

+ 7 - 6
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/WaybillTicketVO.java

@@ -4,6 +4,7 @@ import lombok.Data;
 import lombok.experimental.Accessors;
 
 import java.math.BigDecimal;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -22,11 +23,11 @@ public class WaybillTicketVO {
     /**
      * 装载时间
      */
-    private String loadTime;
+    private Date loadTime;
     /**
      * 装载重量
      */
-    private String loadWeight;
+    private BigDecimal loadWeight;
     /**
      * 卸货图片
      */
@@ -34,21 +35,21 @@ public class WaybillTicketVO {
     /**
      * 卸货时间
      */
-    private String unloadTime;
+    private Date unloadTime;
     /**
      * 卸货重量
      */
-    private String unloadWeight;
+    private BigDecimal unloadWeight;
 
     /**
      * 亏吨重量
      */
-    private String deficitAmount;
+    private BigDecimal deficitAmount;
 
     /**
      * 扣亏量(合理损耗-(实装-实卸))-单位
      */
-    private String deficitRealAmount;
+    private BigDecimal deficitRealAmount;
 
     /**
      * 装载信息

+ 89 - 26
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtWaybillOrderTicketService.java

@@ -4,17 +4,17 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.sckw.core.common.enums.enums.DictTypeEnum;
 import com.sckw.core.model.constant.Global;
 import com.sckw.core.model.constant.NumberConstant;
+import com.sckw.core.model.enums.AddressDefaultTypeEnum;
 import com.sckw.core.utils.CollectionUtils;
 import com.sckw.core.utils.FileUtils;
 import com.sckw.core.utils.IdWorker;
-import com.sckw.excel.utils.DateUtil;
+import com.sckw.core.utils.NumberUtils;
 import com.sckw.system.api.RemoteSystemService;
 import com.sckw.system.api.model.dto.res.SysDictResDto;
+import com.sckw.transport.dao.KwtLogisticsOrderGoodsUnitMapper;
 import com.sckw.transport.dao.KwtWaybillOrderMapper;
 import com.sckw.transport.dao.KwtWaybillOrderTicketMapper;
-import com.sckw.transport.model.KwtWaybillOrder;
-import com.sckw.transport.model.KwtWaybillOrderSubtask;
-import com.sckw.transport.model.KwtWaybillOrderTicket;
+import com.sckw.transport.model.*;
 import com.sckw.transport.model.dto.WaybillOrderTicketLoadingDto;
 import com.sckw.transport.model.vo.WaybillOrderLoadingVO;
 import com.sckw.transport.model.vo.WaybillTicketVO;
@@ -23,12 +23,9 @@ import org.apache.dubbo.config.annotation.DubboReference;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-
 import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * @author zk
@@ -42,7 +39,9 @@ public class KwtWaybillOrderTicketService {
     @Autowired
     KwtWaybillOrderMapper waybillOrderMapper;
     @Autowired
-    KwtWaybillOrderTicketMapper waybillOrderTicketMapper;
+    KwtLogisticsOrderGoodsUnitMapper goodsUnitMapper;
+    @Autowired
+    KwtWaybillOrderTicketMapper ticketMapper;
     @DubboReference(version = "1.0.0", group = "design", check = false)
     RemoteSystemService remoteSystemService;
 
@@ -85,7 +84,7 @@ public class KwtWaybillOrderTicketService {
                 ticket.setAmount(e.getAmount());
                 ticket.setUrls(FileUtils.replaceAllBatch(urls));
                 ticket.setOperateTime(operateTime);
-                waybillOrderTicketMapper.insert(ticket);
+                ticketMapper.insert(ticket);
             });
         }
     }
@@ -114,7 +113,7 @@ public class KwtWaybillOrderTicketService {
                 ticket.setAmount(e.getAmount());
                 ticket.setUrls(FileUtils.replaceAllBatch(urls));
                 ticket.setOperateTime(operateTime);
-                waybillOrderTicketMapper.insert(ticket);
+                ticketMapper.insert(ticket);
             });
         }
     }
@@ -133,7 +132,7 @@ public class KwtWaybillOrderTicketService {
         urls = FileUtils.replaceAllBatch(urls);
         if (CollectionUtils.isNotEmpty(loading)) {
             for (WaybillOrderTicketLoadingDto ticket : loading) {
-                KwtWaybillOrderTicket oldTicket = waybillOrderTicketMapper.findWaybillOrderTicketV1(wOrderId, null, type, ticket.getUnit()).get(0);
+                KwtWaybillOrderTicket oldTicket = ticketMapper.findWaybillOrderTicketV1(wOrderId, null, type, ticket.getUnit()).get(0);
 //                Boolean bool1 = oldTicket.getAmount().doubleValue() == ticket.getAmount().doubleValue();
 //                Boolean bool2 = oldTicket.getUrls().equals(urls);
 
@@ -145,7 +144,7 @@ public class KwtWaybillOrderTicketService {
                 //删除
                 oldTicket.setDelFlag(Global.YES);
 //                waybillOrderTicketMapper.updateById(oldTicket);
-                waybillOrderTicketMapper.update(oldTicket,new LambdaUpdateWrapper<KwtWaybillOrderTicket>()
+                ticketMapper.update(oldTicket,new LambdaUpdateWrapper<KwtWaybillOrderTicket>()
                         .set(KwtWaybillOrderTicket::getDelFlag,1)
                         .eq(KwtWaybillOrderTicket::getId,oldTicket.getId()));
                 //新增
@@ -159,7 +158,7 @@ public class KwtWaybillOrderTicketService {
                 waybillOrderTicket.setDelFlag(0);
                 waybillOrderTicket.setId(new IdWorker(NumberConstant.ONE).nextId());
                 //waybillOrderTicket.setOperateTime(operateTime);
-                waybillOrderTicketMapper.insert(waybillOrderTicket);
+                ticketMapper.insert(waybillOrderTicket);
             }
         }
     }
@@ -177,13 +176,13 @@ public class KwtWaybillOrderTicketService {
         urls = FileUtils.replaceAllBatch(urls);
         if (CollectionUtils.isNotEmpty(loading)) {
             for (WaybillOrderTicketLoadingDto ticket : loading) {
-                KwtWaybillOrderTicket oldTicket = waybillOrderTicketMapper.findWaybillOrderTicketV2(wAddressId, ticket.getUnit());
+                KwtWaybillOrderTicket oldTicket = ticketMapper.findWaybillOrderTicketV2(wAddressId, ticket.getUnit());
                 if (oldTicket == null) {
                     continue;
                 }
                 //删除
                 oldTicket.setDelFlag(Global.YES);
-                waybillOrderTicketMapper.updateById(oldTicket);
+                ticketMapper.updateById(oldTicket);
 
                 //新增
                 KwtWaybillOrderTicket orderTicket = new KwtWaybillOrderTicket();
@@ -195,7 +194,7 @@ public class KwtWaybillOrderTicketService {
                 orderTicket.setAmount(ticket.getAmount());
                 orderTicket.setUrls(urls);
                 orderTicket.setOperateTime(operateTime == null ? oldTicket.getOperateTime() : operateTime);
-                waybillOrderTicketMapper.insert(orderTicket);
+                ticketMapper.insert(orderTicket);
             }
         }
     }
@@ -211,20 +210,20 @@ public class KwtWaybillOrderTicketService {
      */
     public WaybillTicketVO agreement(Long wOrderId, String unit, String deficitAmount, String deficitRealAmount) {
         WaybillTicketVO waybillTicket = new WaybillTicketVO();
-        waybillTicket.setDeficitAmount(deficitAmount);
-        waybillTicket.setDeficitRealAmount(deficitRealAmount);
+        waybillTicket.setDeficitAmount(NumberUtils.parseBigDecimal(deficitAmount));
+        waybillTicket.setDeficitRealAmount(NumberUtils.parseBigDecimal(deficitRealAmount));
         //单位数据字典
         Map<String, SysDictResDto> unitType = remoteSystemService.queryDictMapByType(DictTypeEnum.UNIT_TYPE.getType());
         //装货
-        List<KwtWaybillOrderTicket> load = waybillOrderTicketMapper.findWaybillOrderTicket(wOrderId, null , NumberConstant.ONE);
+        List<KwtWaybillOrderTicket> load = ticketMapper.findWaybillOrderTicket(wOrderId, null , NumberConstant.ONE);
         //卸货
-        List<KwtWaybillOrderTicket> unload = waybillOrderTicketMapper.findWaybillOrderTicket(wOrderId, null , NumberConstant.TWO);
+        List<KwtWaybillOrderTicket> unload = ticketMapper.findWaybillOrderTicket(wOrderId, null , NumberConstant.TWO);
         if (CollectionUtils.isNotEmpty(load)) {
             List<WaybillOrderLoadingVO> loadLoading = new ArrayList<>();
             load.forEach(e -> {
                 SysDictResDto sysDict = unitType != null ? unitType.get(e.getUnit()) : null;
                 waybillTicket.setLoadUrl(FileUtils.splice(e.getUrls()));
-                waybillTicket.setLoadTime(e.getOperateTime() == null ? null : DateUtil.getDateTime(e.getOperateTime()));
+                waybillTicket.setLoadTime(e.getOperateTime() == null ? null : e.getOperateTime());
                 WaybillOrderLoadingVO loadingVo = new WaybillOrderLoadingVO(e.getUnit(), sysDict != null ? sysDict.getLabel() : null, e.getAmount());
                 loadingVo.setMain(unit.equals(e.getUnit()) ? true : false);
                 loadLoading.add(loadingVo);
@@ -236,7 +235,7 @@ public class KwtWaybillOrderTicketService {
             unload.forEach(e -> {
                 SysDictResDto sysDict = unitType != null ? unitType.get(e.getUnit()) : null;
                 waybillTicket.setUnloadUrl(FileUtils.splice(e.getUrls()));
-                waybillTicket.setUnloadTime(e.getOperateTime() == null ? null : DateUtil.getDateTime(e.getOperateTime()));
+                waybillTicket.setUnloadTime(e.getOperateTime() == null ? null : e.getOperateTime());
                 WaybillOrderLoadingVO loadingVo = new WaybillOrderLoadingVO(e.getUnit(), sysDict != null ? sysDict.getLabel() : null, e.getAmount());
                 loadingVo.setMain(unit.equals(e.getUnit()) ? true : false);
                 unloadLoading.add(loadingVo);
@@ -246,6 +245,70 @@ public class KwtWaybillOrderTicketService {
         return waybillTicket;
     }
 
+    /**
+     * 运单详情单证信息(辅助单位)
+     * @param subtask 运单-子单
+     * @return 单证信息
+     */
+    public List<WaybillTicketVO> agreement(KwtWaybillOrderSubtask subtask) {
+        List<WaybillTicketVO> ticketList = new ArrayList<>();
+        //物流订单辅助单位
+        List<KwtLogisticsOrderGoodsUnit> goodsUnits = goodsUnitMapper.findList(new HashMap<>(NumberConstant.SIXTEEN){{put("lOrderId", subtask.getLOrderId());}});
+        if (CollectionUtils.isEmpty(goodsUnits)) {
+            return ticketList;
+        }
+
+        //单位
+        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 (KwtLogisticsOrderGoodsUnit goodsUnit:goodsUnits) {
+            WaybillTicketVO waybillTicket = new WaybillTicketVO();
+            //装货榜单信息
+            List<KwtWaybillOrderTicket> loadTickets = ticketMapper.findWaybillOrderTicketV1(subtask.getWOrderId(), subtask.getId(), AddressDefaultTypeEnum.SHIPMENT.getCode(), goodsUnit.getUnit());
+            //装货时间
+            Optional<KwtWaybillOrderTicket> unloadDate = loadTickets.stream().max(Comparator.comparing(KwtWaybillOrderTicket::getOperateTime));
+            //装货地点榜单
+            loadTickets.forEach(ticket->{ticket.setUrls(FileUtils.spliceBatch(ticket.getUrls()));});
+            String loadUrls = loadTickets.stream().map(KwtWaybillOrderTicket::getUrls).collect(Collectors.joining(", "));
+            //装货量
+            BigDecimal loadAmount = loadTickets.stream().map(KwtWaybillOrderTicket::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+            //卸货榜单信息
+            List<KwtWaybillOrderTicket> unloadTickets = ticketMapper.findWaybillOrderTicketV1(subtask.getWOrderId(), subtask.getId(), AddressDefaultTypeEnum.TAKE.getCode(), goodsUnit.getUnit());
+            //卸货时间
+            Optional<KwtWaybillOrderTicket> loadDate = unloadTickets.stream().min(Comparator.comparing(KwtWaybillOrderTicket::getOperateTime));
+            //卸货地点榜单
+            unloadTickets.forEach(ticket->{ticket.setUrls(FileUtils.spliceBatch(ticket.getUrls()));});
+            String unloadUrls = unloadTickets.stream().map(KwtWaybillOrderTicket::getUrls).collect(Collectors.joining(", "));
+            //卸货量
+            BigDecimal unloadAmount = unloadTickets.stream().map(KwtWaybillOrderTicket::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+
+            //装货信息
+            WaybillOrderLoadingVO load = new WaybillOrderLoadingVO();
+            load.setUnit(goodsUnit.getUnit());
+            load.setUnitName(unitMap.get(goodsUnit.getUnit()));
+            load.setAmount(loadAmount);
+            load.setMain(subtask.getUnit().equals(goodsUnit.getUnit()));
+            //卸货信息
+            WaybillOrderLoadingVO unload = new WaybillOrderLoadingVO();
+            unload.setUnit(goodsUnit.getUnit());
+            unload.setUnitName(unitMap.get(goodsUnit.getUnit()));
+            unload.setAmount(unloadAmount);
+            load.setMain(subtask.getUnit().equals(goodsUnit.getUnit()));
+
+            waybillTicket.setLoadUrl(loadUrls);
+            waybillTicket.setLoadTime(unloadDate.get().getOperateTime());
+            waybillTicket.setLoadWeight(loadAmount);
+            waybillTicket.setUnloadUrl(unloadUrls);
+            waybillTicket.setUnloadTime(loadDate.get().getOperateTime());
+            waybillTicket.setUnloadWeight(unloadAmount);
+            waybillTicket.setDeficitAmount(loadAmount.subtract(unloadAmount));
+            ticketList.add(waybillTicket);
+        }
+        return ticketList;
+    }
+
     /**
      * 单证信息
      *
@@ -259,7 +322,7 @@ public class KwtWaybillOrderTicketService {
         //单位数据字典
         Map<String, SysDictResDto> unitType = remoteSystemService.queryDictMapByType(DictTypeEnum.UNIT_TYPE.getType());
         //装载信息
-        List<KwtWaybillOrderTicket> loading = waybillOrderTicketMapper.findWaybillOrderTicket(waybillOrder.getId(), null, type);
+        List<KwtWaybillOrderTicket> loading = ticketMapper.findWaybillOrderTicket(waybillOrder.getId(), null, type);
         if (CollectionUtils.isNotEmpty(loading)) {
             loading.forEach(e -> {
                 SysDictResDto sysDict = unitType != null ? unitType.get(e.getUnit()) : null;
@@ -283,7 +346,7 @@ public class KwtWaybillOrderTicketService {
         //单位数据字典
         Map<String, SysDictResDto> unitType = remoteSystemService.queryDictMapByType(DictTypeEnum.UNIT_TYPE.getType());
         //装载信息
-        List<KwtWaybillOrderTicket> loading = waybillOrderTicketMapper.findWaybillOrderTicket(subtask.getWOrderId(), subtask.getId(), type);
+        List<KwtWaybillOrderTicket> loading = ticketMapper.findWaybillOrderTicket(subtask.getWOrderId(), subtask.getId(), type);
         if (CollectionUtils.isNotEmpty(loading)) {
             loading.forEach(e -> {
                 SysDictResDto sysDict = unitType != null ? unitType.get(e.getUnit()) : null;

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

@@ -226,7 +226,7 @@ public class KwtWaybillOrderV1Service {
         Map<String, String> unitMap = CollectionUtils.isNotEmpty(dict) ? dict.get(DictTypeEnum.UNIT_TYPE.getType()) : new HashMap<>(NumberConstant.SIXTEEN);
 
         //返回信息
-        WaybillDetailV1Vo waybillDetail = new WaybillDetailV1Vo();
+        WaybillDetailVo waybillDetail = new WaybillDetailVo();
         //地址信息
         List<KwtWaybillOrderAddress> addresses = waybillOrderAddressDao.findByAddresses(wOrderId, null);
         //地址数据处理
@@ -288,6 +288,97 @@ public class KwtWaybillOrderV1Service {
         return HttpResult.ok(waybillDetail);
     }
 
+    /**
+     * @param params {page:页数、pageSize:每页条数、。。。}
+     * @desc 分页查询
+     * @author zk
+     * @date 2024/3/8
+     **/
+    public PageResult subtaskSelect(WaybillSubtaskOrderQueryDto params) {
+        // 设置分页参数
+        PageHelper.startPage(params.getPage(), params.getPageSize());
+        List<WaybillSubtaskSelectVo> list = waybillOrderSubtaskDao.findListPage(params);
+
+        //单位
+        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 (WaybillSubtaskSelectVo waybillOrder:list) {
+            waybillOrder.setStatusLabel(CarWaybillEnum.getName(waybillOrder.getStatus()));
+            waybillOrder.setUnitLabel(unitMap.get(waybillOrder.getUnit()));
+        }
+        return PageHelperUtil.getPageResult(new PageInfo<>(list));
+    }
+
+    /**
+     * @param wOrderId 运单ID
+     * @desc 运单详情(物流订单)
+     * @author zk
+     * @date 2024/3/18
+     **/
+    public HttpResult waybillSubtaskDetail(Long wOrderId, Long lOrderId){
+        //运单信息
+        KwtWaybillOrderV1 waybillOrder = waybillOrderV1Dao.selectById(wOrderId);
+        if (waybillOrder == null) {
+            return HttpResult.error("运单" + wOrderId + "不存在,请确认!");
+        }
+
+        //用户信息
+        List<Long> userIdList = new ArrayList<>(NumberConstant.SIXTEEN){{add(waybillOrder.getCreateBy());}};
+        List<UserCacheResDto> users = remoteSystemService.queryUserCacheByIds(userIdList);
+        Map<Long, UserCacheResDto> usersMap = new HashMap<>(Global.NUMERICAL_SIXTEEN);
+        users.forEach(e -> usersMap.put(e.getId(), e));
+        //单位
+        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);
+
+        //子单
+        KwtWaybillOrderSubtask subtask = waybillOrderSubtaskDao.findByOrderId(wOrderId, lOrderId);
+        //物流订单地址信息
+        List<KwtLogisticsOrderAddress> lAddressList = logisticsOrderAddressDao.findByAddresses(subtask.getLOrderId(), null);
+        List<Long> addressIds = lAddressList.stream().map(KwtLogisticsOrderAddress::getId).toList();
+        //地址信息
+        List<KwtWaybillOrderAddress> addresses = waybillOrderAddressDao.findByLAddressIds(wOrderId, addressIds);
+        //榜单信息
+        List<WaybillTicketVO> tickets = waybillOrderTicketService.agreement(subtask);
+
+        //地址数据处理
+        List<Map<String, Object>> addressList = new ArrayList<>(NumberConstant.SIXTEEN);
+        for (KwtWaybillOrderAddress address:addresses) {
+            //物流订单商品信息
+            KwtLogisticsOrderGoods goods = logisticsOrderGoodsDao.findByGoods(subtask != null ? subtask.getLOrderId() : null);
+            //榜单信息
+            KwtWaybillOrderTicket ticket = waybillOrderTicketDao.findWaybillOrderTicketV2(address.getId(), subtask.getUnit());
+            Map<String, Object> addressData = new HashMap<>(NumberConstant.SIXTEEN);
+            addressData.put("addressType", address.getAddressType());
+            addressData.put("addressName", address.getName());
+            addressData.put("addressCityName", address.getCityName());
+            addressData.put("addressDetail", address.getDetailAddress());
+            addressData.put("planTime", DateUtils.format(address.getPlanTime(), DateUtils.FORMAT12));
+            addressData.put("entrustAmount", address.getEntrustAmount());
+            addressData.put("goodsName", goods != null ? goods.getGoodsName() : null);
+            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("operateTime", ticket != null ? DateUtils.format(address.getPlanTime(), DateUtils.FORMAT11) : null);
+            addressList.add(addressData);
+        }
+
+        //返回信息
+        WaybillSubtaskDetailVo waybillDetail = new WaybillSubtaskDetailVo();
+        BeanUtils.copyPropertiesValue(waybillOrder, waybillDetail);
+        BeanUtils.copyPropertiesValue(subtask, waybillDetail);
+        waybillDetail.setWOrderId(waybillOrder.getId());
+        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.setAddresses(addressList);
+        waybillDetail.setTickets(tickets);
+        return HttpResult.ok(waybillDetail);
+    }
+
     /**
      * @param waybillOrder 运单信息
      * @param unitMap 字段

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

@@ -72,4 +72,19 @@
         AND a.address_type = #{addressType,jdbcType=INTEGER}
         AND a.l_order_id = #{lOrderId}
     </select>
+
+    <select id="findByAddresses" resultType="com.sckw.transport.model.KwtLogisticsOrderAddress" >
+        select
+        id, l_order_id lOrderId, address_type addressType, `name`, `type`, contacts, phone, city_code cityCode, city_name cityName,
+        detail_address detailAddress, lat, lng, fence, entry_type entryType, remark, `status`, create_by createBy, create_time createTime,
+        update_by updateBy, update_time updateTime
+        from kwt_logistics_order_address
+        where del_flag = 0
+        <if test="wOrderId != null and wOrderId != ''">
+            and l_order_id = #{lOrderId, jdbcType=BIGINT}
+        </if>
+        <if test="wOrderId != null and wOrderId != ''">
+            and address_type = #{addressType, jdbcType=INTEGER}
+        </if>
+    </select>
 </mapper>

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

@@ -52,6 +52,9 @@
         `status`, create_by createBy, create_time createTime, update_by updateBy, update_time updateTime
         from kwt_waybill_order_address
         where del_flag = 0
+        <if test="wOrderId != null and wOrderId != ''">
+            and w_order_id = #{wOrderId, jdbcType=BIGINT}
+        </if>
         <if test="lAddressIds != null and lAddressIds.size() > 0">
             AND l_address_id IN
             <foreach collection="lAddressIds" item="item" open="(" close=")" separator=",">

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

@@ -30,4 +30,23 @@
             and l_order_id = #{lOrderId, jdbcType=BIGINT}
         </if>
     </select>
+
+    <select id="findListPage" resultType="com.sckw.transport.model.vo.WaybillSubtaskSelectVo"
+            parameterType="com.sckw.transport.model.dto.WaybillSubtaskOrderQueryDto">
+        SELECT
+        wos.w_order_id wOrderId, wos.unit, wos.entrust_amount entrustAmount, wos.unload_amount unloadAmount, wos.unload_time unloadTime,
+        wos.load_time loadTime, wos.load_amount loadAmount, wos.deficit_amount deficitAmount, wos.deficit_price deficitPrice,
+        wo.driver_name driverName, wo.truck_no truckNo, wo.type, wo.create_by createBy, wo.create_time createTime, wo.create_time sendCarDate,
+        wo.ent_id entId, wo.status, lo.l_order_no lOrderNo, lo.loss
+        from kwt_waybill_order_subtask wos
+        left join kwt_waybill_order wo on wo.id = wos.w_order_id
+        left join kwt_logistics_order lo on lo.id = wos.l_order_id
+        WHERE wo.del_flag = 0 and wos.del_flag = 0
+        <if test="ids != null and ids != ''">
+            AND wos.l_order_id IN
+            <foreach collection="ids.split(',')" item="item" open="(" close=")" separator=",">
+                #{item}
+            </foreach>
+        </if>
+    </select>
 </mapper>

+ 0 - 1
sckw-modules/sckw-transport/src/main/resources/mapper/KwtWaybillOrderV1Mapper.xml

@@ -184,7 +184,6 @@
         </if>
     </select>
 
-
     <select id="findCountByDriverOrTruck" resultType="com.sckw.transport.model.vo.WaybillCountVo">
         SELECT
         count(case when wo.status = 502 then 1 end) totalComplete,