Quellcode durchsuchen

1、4.2PC端接口;

zk vor 1 Jahr
Ursprung
Commit
9662b64588

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

@@ -12,7 +12,7 @@ public enum CarWaybillEnum {
     /**
      * 待接单
      */
-    PENDING_ORDER(101, "pendingOrder", "101", "待接单", "确认接单"),
+    PENDING_ORDER(101, "pendingOrder", "101", "待接单", "已指派"),
     /**
      * 已撤销
      */

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

@@ -76,6 +76,17 @@ public class KwtWaybillOrderController {
         return HttpResult.ok(waybillOrderV1Service.findNdexPage(params));
     }
 
+    /**
+     * @param wOrderId 运单ID
+     * @desc 运单详情
+     * @author zk
+     * @date 2024/3/13
+     **/
+    @GetMapping("/waybillDetail")
+    public HttpResult waybillDetail(@RequestParam("wOrderId") Long wOrderId){
+        return HttpResult.ok(waybillOrderV1Service.waybillDetail(wOrderId));
+    }
+
     /**
      * @desc 统计司机任务数(待接单/出车/执行/完结)
      * @author zk
@@ -125,11 +136,6 @@ public class KwtWaybillOrderController {
         return HttpResult.ok(pageResult);
     }
 
-
-
-
-
-
     /**
      * @param params 请求参数
      * @desc 变更司机

+ 109 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/WaybillDetailV1Vo.java

@@ -0,0 +1,109 @@
+package com.sckw.transport.model.vo;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author zk
+ * @desc 运单详情
+ * @date 2024/3/13 0013
+ */
+@Data
+public class WaybillDetailV1Vo {
+
+    /**
+     * 运单ID
+     */
+    @JsonProperty("wOrderId")
+    private Long wOrderId;
+
+    /**
+     * 运单号
+     */
+    @JsonProperty("wOrderNo")
+    private String wOrderNo;
+
+    /**
+     * 企业类型
+     */
+    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 lOrderNo;
+
+    /**
+     * 地址信息
+     */
+    private List<Map<String, Object>> addresses;
+
+    /**
+     * 状态信息
+     */
+    private List<Map<String, Object>> tracks;
+
+}

+ 14 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/WaybillNdexVo.java

@@ -0,0 +1,14 @@
+package com.sckw.transport.model.vo;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+/**
+ * @author zk
+ * @desc 看板
+ * @date 2024/3/13 0013
+ */
+@Data
+@Accessors(chain = true)
+public class WaybillNdexVo {
+}

+ 34 - 51
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/WaybillOrderSelectVo.java

@@ -5,7 +5,6 @@ import com.fasterxml.jackson.annotation.JsonProperty;
 import com.sckw.core.model.constant.Global;
 import lombok.Data;
 import lombok.experimental.Accessors;
-
 import java.io.Serial;
 import java.io.Serializable;
 import java.util.Date;
@@ -19,18 +18,19 @@ import java.util.Date;
 @Accessors(chain = true)
 public class WaybillOrderSelectVo implements Serializable {
 
+    @Serial
+    private static final long serialVersionUID = 4526063761808958350L;
+
     /**
      * 企业ID
      */
     private Long  entId;
 
-    @Serial
-    private static final long serialVersionUID = 4526063761808958350L;
     /**
      * 运单id
      */
     @JsonProperty(value="wOrderId")
-    private String wOrderId;
+    private Long wOrderId;
 
     /**
      * 运单号
@@ -64,50 +64,19 @@ public class WaybillOrderSelectVo implements Serializable {
     private String typeLabel;
 
     /**
-     * 派车时间
+     * 采购企业名称
      */
-    private String sendCarTime;
+    private String procureFirmName;
 
     /**
-     * 创建时间
+     * 供应企业名称
      */
-    private String createTime;
-
-    /**
-     * 更新时间
-     */
-    private String updateTime;
+    private String supplyFirmName;
 
     /**
-     * 运单状态
+     * 物流订单编号
      */
-    private Integer  status;
-
-    /**
-     * 运单状态字符
-     */
-    private String  statusLabel;
-
-    public String getTypeLabel() {
-        return type == Global.NUMERICAL_ONE ? "趟次" : "循环";
-    }
-
-    /**
-     * 托量单位
-     */
-    private String unit;
-
-    /**
-     * 托量单位字符
-     */
-    private String unitLabel;
-
-
-    /**
-     * 承运车队
-     */
-    private String firmName;
-
+    private String lOrderNo;
 
     /**
      * 计划开始时间
@@ -157,28 +126,42 @@ public class WaybillOrderSelectVo implements Serializable {
     private String unloadAmount;
 
     /**
-     * 装货时间
+     * 亏吨重量
      */
-    private String loadDateTime;
+    private String deficitAmount;
 
     /**
-     * 卸货时间
+     * 扣亏量(合理损耗-(实装-实卸))-单位
      */
-    private String unloadDateTime;
+    private String deficitRealAmount;
 
     /**
-     * 亏吨重量
+     * 运单状态
      */
-    private String deficitAmount;
+    private Integer  status;
 
     /**
-     * 扣亏损值(合理损耗-(实装-实卸))-单位
+     * 派车时间
      */
-    private String goodsPriceUnit;
+    private String sendCarTime;
 
     /**
-     * 扣亏量(合理损耗-(实装-实卸))-单位
+     * 创建时间
      */
-    private String deficitRealAmount;
+    private String createTime;
+
+    /**
+     * 更新时间
+     */
+    private String updateTime;
+
+    /**
+     * 运单状态字符
+     */
+    private String  statusLabel;
+
+    public String getTypeLabel() {
+        return type == Global.NUMERICAL_ONE ? "趟次" : "循环";
+    }
 
 }

+ 209 - 37
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtWaybillOrderV1Service.java

@@ -79,6 +79,8 @@ public class KwtWaybillOrderV1Service {
     @Autowired
     KwtLogisticsOrderGoodsMapper logisticsOrderGoodsDao;
     @Autowired
+    KwtLogisticsOrderUnitMapper logisticsOrderUnitDao;
+    @Autowired
     KwtWaybillOrderTicketService waybillOrderTicketService;
     @Autowired
     KwtLogisticsOrderGoodsService kwtLogisticsOrderGoodsService;
@@ -145,11 +147,17 @@ public class KwtWaybillOrderV1Service {
         PageHelper.startPage(params.getPage(), params.getPageSize());
         params.setQueryWstatus(CarWaybillTableTopEnum.getValue(params.getStatus()));
         List<WaybillOrderSelectVo> list = waybillOrderV1Dao.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 (WaybillOrderSelectVo waybillOrder:list) {
+            findListPageHandle(waybillOrder, unitMap);
             waybillOrder.setStatusLabel(CarWaybillEnum.getName(waybillOrder.getStatus()));
         }
-        PageResult pageResult = PageHelperUtil.getPageResult(new PageInfo<>(list));
-        return pageResult;
+        return PageHelperUtil.getPageResult(new PageInfo<>(list));
     }
 
     /**
@@ -167,8 +175,157 @@ public class KwtWaybillOrderV1Service {
         for (WaybillOrderSelectVo waybillOrder:list) {
             waybillOrder.setStatusLabel(CarWaybillEnum.getName(waybillOrder.getStatus()));
         }
-        PageResult pageResult = PageHelperUtil.getPageResult(new PageInfo<>(list));
-        return pageResult;
+        return PageHelperUtil.getPageResult(new PageInfo<>(list));
+    }
+
+    /**
+     * @param wOrderId 运单ID
+     * @desc 运单详情
+     * @author zk
+     * @date 2024/3/13
+     **/
+    public HttpResult waybillDetail(Long wOrderId) {
+        //运单信息
+        KwtWaybillOrderV1 waybillOrder = waybillOrderV1Dao.selectById(wOrderId);
+        if (waybillOrder == null) {
+            return HttpResult.error("运单" + wOrderId + "不存在,请确认!");
+        }
+
+        //子单
+        List<KwtWaybillOrderSubtask> subtasks = waybillOrderSubtaskDao.findByWOrderId(wOrderId);
+        //运单状态记录
+        List<KwtWaybillOrderTrack> tracks = waybillOrderTrackDao.findTrack(wOrderId, null, null, null);
+        //用户信息
+        List<Long> userIds = tracks.stream().map(KwtWaybillOrderTrack::getCreateBy).toList();
+        List<Long> userIdList = new ArrayList<>(NumberConstant.SIXTEEN){{add(waybillOrder.getCreateBy());}};
+        userIdList.addAll(userIds);
+        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);
+
+        //返回信息
+        WaybillDetailV1Vo waybillDetail = new WaybillDetailV1Vo();
+        //地址信息
+        List<KwtWaybillOrderAddress> addresses = waybillOrderAddressDao.findByAddresses(wOrderId, null);
+        //地址数据处理
+        List<Map<String, Object>> addressList = new ArrayList<>(NumberConstant.SIXTEEN);
+        for (KwtWaybillOrderAddress address:addresses) {
+            //运单子单
+            KwtWaybillOrderSubtask subtask = waybillOrderSubtaskDao.selectById(address.getWSubtaskId());
+            //物流订单商品信息
+            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);
+        }
+
+        //状态数据处理
+        List<Map<String, Object>> trackList = new ArrayList<>(NumberConstant.SIXTEEN);
+        for (KwtWaybillOrderTrack track:tracks) {
+            Map<String, Object> trackData = new HashMap<>(NumberConstant.SIXTEEN);
+            trackData.put("status", track.getStatus());
+            trackData.put("statusName", CarWaybillEnum.getName(waybillOrder.getStatus()));
+            trackData.put("remark", track.getRemark());
+            trackData.put("operateTime", track.getOperateTime());
+            trackData.put("createTime", track.getCreateTime());
+            trackData.put("createByName", usersMap.get(waybillOrder.getCreateBy()) != null ? usersMap.get(waybillOrder.getCreateBy()).getName() : null);
+            trackData.put("createByPhone", usersMap.get(waybillOrder.getCreateBy()) != null ? usersMap.get(waybillOrder.getCreateBy()).getPhone() : null);
+            trackList.add(trackData);
+        }
+
+        for (KwtWaybillOrderSubtask subtask:subtasks) {
+            KwtLogisticsOrder logisticsOrder = logisticsOrderDao.selectById(subtask.getLOrderId());
+            waybillDetail.setLOrderNo((StringUtils.isBlank(waybillDetail.getLOrderNo()) ? Global.EMPTY_STRING : Global.COMMA) + logisticsOrder.getLOrderNo());
+        }
+
+        BeanUtils.copyProperties(waybillOrder, 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.setTracks(trackList);
+        waybillDetail.setAddresses(addressList);
+        return HttpResult.ok(waybillDetail);
+    }
+
+    /**
+     * @param waybillOrder 运单信息
+     * @param unitMap 字段
+     * @desc 分页查询
+     * @author zk
+     * @date 2024/3/13
+     **/
+    public void findListPageHandle(WaybillOrderSelectVo waybillOrder, Map<String, String> unitMap){
+        //子运单
+        List<KwtWaybillOrderSubtask> subtasks = waybillOrderSubtaskDao.findByWOrderId(waybillOrder.getWOrderId());
+        //子运单
+        List<KwtWaybillOrderAddress> loadAddresses = waybillOrderAddressDao.findByAddresses(waybillOrder.getWOrderId(), AddressDefaultTypeEnum.SHIPMENT.getCode());
+        //子运单
+        List<KwtWaybillOrderAddress> unloadAddresses = waybillOrderAddressDao.findByAddresses(waybillOrder.getWOrderId(), AddressDefaultTypeEnum.TAKE.getCode());
+        //装货时间
+        Optional<KwtWaybillOrderSubtask> unloadDate = subtasks.stream().max(Comparator.comparing(KwtWaybillOrderSubtask::getUnloadTime));
+        //卸货时间
+        Optional<KwtWaybillOrderSubtask> loadDate = subtasks.stream().min(Comparator.comparing(KwtWaybillOrderSubtask::getLoadTime));
+        //装货地点名称
+        String loadName = loadAddresses.stream().map(KwtWaybillOrderAddress::getCityName).collect(Collectors.joining(", "));
+        //装货地点
+        String loadAddress = loadAddresses.stream().map(KwtWaybillOrderAddress::getDetailAddress).collect(Collectors.joining(", "));
+        //卸货地点点名称
+        String unloadName = unloadAddresses.stream().map(KwtWaybillOrderAddress::getCityName).collect(Collectors.joining(", "));
+        //卸货地点
+        String unloadAddress = unloadAddresses.stream().map(KwtWaybillOrderAddress::getDetailAddress).collect(Collectors.joining(", "));
+
+        //数据处理
+        for (KwtWaybillOrderSubtask subtask:subtasks) {
+            //物流订单
+            KwtLogisticsOrder logisticsOrder = logisticsOrderDao.selectById(subtask.getLOrderId());
+            //托运企业
+            KwtLogisticsOrderUnit procure = logisticsOrderUnitDao.findByUnit(subtask.getLOrderId(), NumberConstant.ONE);
+            //承运企业
+            KwtLogisticsOrderUnit supply = logisticsOrderUnitDao.findByUnit(subtask.getLOrderId(), NumberConstant.TWO);
+            //派单量
+            String entrustAmount = subtask.getEntrustAmount() + unitMap.get(subtask.getUnit());
+            //实装量
+            String loadAmount = subtask.getLoadAmount() != null ? subtask.getLoadAmount() + unitMap.get(subtask.getUnit()) : null;
+            //实卸量
+            String unloadAmount = subtask.getUnloadAmount() != null ? subtask.getUnloadAmount() + unitMap.get(subtask.getUnit()) : null;
+            //实卸量
+            String deficitAmount = subtask.getDeficitAmount() != null ? subtask.getDeficitAmount() + unitMap.get(subtask.getUnit()) : null;
+            //亏吨重量
+            String deficitRealAmount = deficitPrice(BigDecimal.valueOf(NumberUtils.parseDouble(subtask.getLoadAmount())),
+                    BigDecimal.valueOf(NumberUtils.parseDouble(subtask.getDeficitAmount())), logisticsOrder.getLoss(),
+                    logisticsOrder.getLossUnit(), logisticsOrder.getGoodsPrice()) + unitMap.get(subtask.getUnit());
+            waybillOrder.setEntrustAmount((StringUtils.isBlank(waybillOrder.getEntrustAmount()) ? Global.EMPTY_STRING : Global.COMMA) + entrustAmount);
+            waybillOrder.setLoadAmount((StringUtils.isBlank(waybillOrder.getLoadAmount()) ? Global.EMPTY_STRING : Global.COMMA) + loadAmount);
+            waybillOrder.setUnloadAmount((StringUtils.isBlank(waybillOrder.getUnloadAmount()) ? Global.EMPTY_STRING : Global.COMMA) + unloadAmount);
+            waybillOrder.setDeficitAmount((StringUtils.isBlank(waybillOrder.getDeficitAmount()) ? Global.EMPTY_STRING : Global.COMMA) + deficitAmount);
+            waybillOrder.setDeficitRealAmount((StringUtils.isBlank(waybillOrder.getDeficitRealAmount()) ? Global.EMPTY_STRING : Global.COMMA) + deficitRealAmount);
+            waybillOrder.setLOrderNo((StringUtils.isBlank(waybillOrder.getLOrderNo()) ? Global.EMPTY_STRING : Global.COMMA) + logisticsOrder.getLOrderNo());
+            waybillOrder.setProcureFirmName(procure.getFirmName());
+            waybillOrder.setSupplyFirmName(supply.getFirmName());
+        }
+        waybillOrder.setStartTime(loadDate.get().getLoadTime());
+        waybillOrder.setEndTime(unloadDate.get().getUnloadTime());
+        waybillOrder.setLoadName(loadName);
+        waybillOrder.setLoadAddress(loadAddress);
+        waybillOrder.setUnloadName(unloadName);
+        waybillOrder.setUnloadAddress(unloadAddress);
     }
 
     /**
@@ -205,6 +362,9 @@ public class KwtWaybillOrderV1Service {
         //企业ID
         List<Long> entIds = waybillOrders.stream().map(KwtWaybillOrderV1::getEntId).toList();
         Map<Long, EntCacheResDto> ents = remoteSystemService.queryEntCacheMapByIds(entIds);
+        //单位
+        Map<String, Map<String, String>> dict = remoteSystemService.queryDictByType(List.of(DictTypeEnum.UNIT_TYPE.getType()));
+        Map<String, String> unitMap = CollectionUtils.isNotEmpty(dict) ? dict.get(DictTypeEnum.UNIT_TYPE.getType()) : new HashMap<>(NumberConstant.SIXTEEN);
 
         //数据处理
         List<JSONObject> list = new ArrayList<>();
@@ -227,6 +387,8 @@ public class KwtWaybillOrderV1Service {
                 addressJson.put("planTime", DateUtils.format(address.getPlanTime(), DateUtils.FORMAT12));
                 addressJson.put("entrustAmount", address.getEntrustAmount());
                 addressJson.put("goodsName", goods != null ? goods.getGoodsName() : null);
+                addressJson.put("unit", subtask.getUnit());
+                addressJson.put("unitName", unitMap.get(subtask.getUnit()));
                 addressJson.put("amount", ticket != null ? ticket.getAmount() : null);
                 addressJson.put("urls", ticket != null ? ticket.getUrls() : null);
                 addressJson.put("operateTime", ticket != null ? DateUtils.format(address.getPlanTime(), DateUtils.FORMAT11) : null);
@@ -237,16 +399,12 @@ public class KwtWaybillOrderV1Service {
             JSONObject order = JSON.parseObject(JSON.toJSONString(waybillOrder));
             order.put("statusName", CarWaybillEnum.getName(waybillOrder.getStatus()));
             order.put("carrierFirmName", ents.get(waybillOrder.getEntId()) != null ? ents.get(waybillOrder.getEntId()).getFirmName() : null);
-            order.put("addressList", addressList);
+            order.put("addresses", addressList);
             list.add(order);
         }
         return list;
     }
 
-
-
-
-
     /**
      * @param params 派车参数
      * @desc 派车-多装多卸
@@ -1617,6 +1775,9 @@ public class KwtWaybillOrderV1Service {
         List<UserCacheResDto> users = remoteSystemService.queryUserCacheByIds(userIds);
         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);
 
         /*数据处理*/
         List<Map<String, Object>> addressList = new ArrayList<>();
@@ -1639,14 +1800,19 @@ public class KwtWaybillOrderV1Service {
                 trackData.put("wOrderId", ticket != null ? ticket.getWOrderId() : null);
                 trackData.put("wSubtaskId", subtask.getId());
                 trackData.put("wAddressId", address.getId());
+                trackData.put("addressType", address.getAddressType());
                 trackData.put("urls", ticket != null ? FileUtils.spliceBatch(ticket.getUrls()) : null);
                 trackData.put("operateTime", ticket != null ? DateUtil.dateTimeFormatter(ticket.getOperateTime()) : null);
                 trackData.put("createTime", ticket != null ? DateUtil.dateTimeFormatter(ticket.getCreateTime()) : null);
                 trackData.put("approvalStatus", ticket != null ? ticket.getStatus() : null);
                 trackData.put("createByName", ticket != null ? usersMap.get(ticket.getCreateBy()) == null ? waybillOrder.getDriverName() : usersMap.get(ticket.getCreateBy()).getName() : null);
-                trackData.put("cityName", address.getCityName());
-                trackData.put("detailAddress", address.getDetailAddress());
+                trackData.put("addressName", address.getName());
+                trackData.put("addressCityName", address.getCityName());
+                trackData.put("addressDetail", address.getDetailAddress());
                 trackData.put("goodsName", goods != null ? goods.getGoodsName() : null);
+                trackData.put("unit", subtask.getUnit());
+                trackData.put("unitName", unitMap.get(subtask.getUnit()));
+                trackData.put("entrustAmount", address.getEntrustAmount());
                 trackData.put("loading", loading);
                 addressList.add(trackData);
             }
@@ -1662,7 +1828,7 @@ public class KwtWaybillOrderV1Service {
         result.put("driverPhone", waybillOrder.getDriverPhone());
         result.put("driverIdcard", waybillOrder.getDriverIdcard());
         result.put("createTime", waybillOrder.getCreateTime());
-        result.put("addressList", addressList);
+        result.put("addresses", addressList);
         return HttpResult.ok(result);
     }
 
@@ -1691,6 +1857,9 @@ public class KwtWaybillOrderV1Service {
         List<UserCacheResDto> users = remoteSystemService.queryUserCacheByIds(userIds);
         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.selectById(address.getWSubtaskId());
@@ -1700,6 +1869,8 @@ public class KwtWaybillOrderV1Service {
         KwtWaybillOrderTicket ticket = waybillOrderTicketDao.findWaybillOrderTicketV2(address.getId(), subtask.getUnit());
         //辅助单位
         List<WaybillOrderLoadingVO> loading = waybillOrderTicketService.agreementV1(subtask, address.getAddressType());
+        //辅助单位
+        List<GoodsUnitVo> assistUnit = kwtLogisticsOrderGoodsService.assistUnit(subtask.getLOrderId());
 
         Map<String, Object> result = new HashMap<>(Global.NUMERICAL_SIXTEEN);
         result.put("wOrderId", wOrderId);
@@ -1719,10 +1890,16 @@ public class KwtWaybillOrderV1Service {
         result.put("approvalStatus", ticket != null ? ticket.getStatus() : null);
         result.put("createByName", ticket != null ? usersMap.get(ticket.getCreateBy()) == null ? waybillOrder.getDriverName() : usersMap.get(ticket.getCreateBy()).getName() : null);
         result.put("createTime", ticket != null ? ticket.getCreateTime() : null);
-        result.put("cityName", address.getCityName());
-        result.put("detailAddress", address.getDetailAddress());
+        result.put("addressName", address.getName());
+        result.put("addressCityName", address.getCityName());
+        result.put("addressDetail", address.getDetailAddress());
         result.put("goodsName", goods != null ? goods.getGoodsName() : null);
+        result.put("unit", subtask.getUnit());
+        result.put("unitName", unitMap.get(subtask.getUnit()));
+        result.put("amount", ticket != null ? ticket.getAmount() : null);
+        result.put("entrustAmount", address.getEntrustAmount());
         result.put("loading", loading);
+        result.put("assistUnit", assistUnit);
         return HttpResult.ok(result);
     }
 
@@ -1745,6 +1922,10 @@ public class KwtWaybillOrderV1Service {
         List<UserCacheResDto> users = remoteSystemService.queryUserCacheByIds(userIds);
         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);
+
 
         /*数据处理*/
         List<Map<String, Object>> trackList = new ArrayList<>();
@@ -1754,7 +1935,7 @@ public class KwtWaybillOrderV1Service {
             KwtWaybillOrderTrack track = waybillOrderTrackDao.findWaybillOrderTrack(wOrderId, null, null, status);
             Map<String, Object> trackData = new HashMap<>(NumberConstant.SIXTEEN);
             trackData.put("id", track != null ? track.getId() : null);
-            trackData.put("wOrderId", track != null ? track.getWOrderId() : null);
+            trackData.put("wOrderId", wOrderId);
             trackData.put("wSubtaskId", track != null ? track.getWSubtaskId() : null);
             trackData.put("wAddressId", track != null ? track.getWAddressId() : null);
             trackData.put("operateTime", track != null ? DateUtils.format(track.getOperateTime(), DateUtils.FORMAT11) : null);
@@ -1780,12 +1961,17 @@ public class KwtWaybillOrderV1Service {
             //物流订单商品信息
             KwtLogisticsOrderGoods goods = logisticsOrderGoodsDao.findByGoods(subtask != null ? subtask.getLOrderId() : null);
             for (Integer status:statusList) {
+                //状态记录
                 KwtWaybillOrderTrack track = waybillOrderTrackDao.findWaybillOrderTrack(wOrderId, null, null, status);
+                //辅助单位
+                List<WaybillOrderLoadingVO> loading = waybillOrderTicketService.agreementV1(subtask, address.getAddressType());
+                //辅助单位
+                List<GoodsUnitVo> assistUnit = kwtLogisticsOrderGoodsService.assistUnit(subtask.getLOrderId());
                 Map<String, Object> trackData = new HashMap<>(NumberConstant.SIXTEEN);
                 trackData.put("id", track != null ? track.getId() : null);
-                trackData.put("wOrderId", track != null ? track.getWOrderId() : null);
-                trackData.put("wSubtaskId", track != null ? track.getWSubtaskId() : null);
-                trackData.put("wAddressId", track != null ? track.getWAddressId() : null);
+                trackData.put("wOrderId", address.getWOrderId());
+                trackData.put("wSubtaskId", address.getWSubtaskId());
+                trackData.put("wAddressId", address.getId());
                 trackData.put("operateTime", track != null ? DateUtils.format(track.getOperateTime(), DateUtils.FORMAT11) : null);
                 trackData.put("operateStatus", track != null);
                 trackData.put("createTime", track != null ? track.getCreateTime() : null);
@@ -1794,32 +1980,18 @@ public class KwtWaybillOrderV1Service {
                 trackData.put("statusName", CarWaybillEnum.getName(status));
                 trackData.put("planTime", track != null ? address.getPlanTime() : null);
                 trackData.put("entrustAmount", track != null ? address.getEntrustAmount() : null);
+                trackData.put("unit", subtask.getUnit());
+                trackData.put("unitName", unitMap.get(subtask.getUnit()));
                 trackData.put("goodsName", goods != null ? goods.getGoodsName() : null);
                 trackData.put("addressName", address.getName());
                 trackData.put("addressCityName", address.getCityName());
                 trackData.put("addressDetail", address.getDetailAddress());
+                trackData.put("loading", loading);
+                trackData.put("assistUnit", assistUnit);
                 trackList.add(trackData);
             }
         }
 
-        //数据处理
-        /*int index = 0;
-        boolean operateStatus = true;
-        for (Map<String, Object> track:trackList) {
-            index ++;
-            if(index == trackList.size()) {
-                continue;
-            }
-            //下一个状态
-            Map<String, Object> backTrack = trackList.get(index);
-            //状态
-            int status = NumberUtils.parseInt(track.get("status"));
-            //操作状态
-            operateStatus = !waybillOrder.getStatus().equals(status) && operateStatus;
-            track.put("operateTime", backTrack.get("operateTime"));
-            track.put("operateStatus", operateStatus);
-        }*/
-
         Map<String, Object> result = new HashMap<>(Global.NUMERICAL_SIXTEEN);
         result.put("wOrderId", wOrderId);
         result.put("wOrderNo", waybillOrder.getWOrderNo());
@@ -2026,7 +2198,7 @@ public class KwtWaybillOrderV1Service {
     public static BigDecimal deficitPrice(BigDecimal loadAmount, BigDecimal deficitAmount, BigDecimal loss,
                                    String lossUnit, BigDecimal goodsPrice) {
         //亏吨<=0
-        if (deficitAmount.compareTo(new BigDecimal(Global.AMOUNT)) <= 0) {
+        if (deficitAmount == null && deficitAmount.compareTo(new BigDecimal(Global.AMOUNT)) <= 0) {
             return new BigDecimal(Global.AMOUNT);
         }
         //承运订单亏吨扣款=(承运订单亏吨量 -(承运订单装货量 * 承运订单合理损耗))* 扣亏货值