Browse Source

提交新增合同文件校验

chenxiaofei 1 tháng trước cách đây
mục cha
commit
1d8f251c6e

+ 7 - 4
sckw-modules-api/sckw-transport-api/src/main/java/com/sckw/transport/api/dubbo/TransportRemoteService.java

@@ -4,10 +4,7 @@ import com.sckw.core.web.response.HttpResult;
 import com.sckw.transport.api.model.dto.AcceptCarriageLogisticsOrderDto;
 import com.sckw.transport.api.model.dto.AccountCheckingBindDTO;
 import com.sckw.transport.api.model.dto.RWaybillOrderDto;
-import com.sckw.transport.api.model.param.CapacityTruckParam;
-import com.sckw.transport.api.model.param.ContractSignLogisticsParam;
-import com.sckw.transport.api.model.param.LogisticsOrderParam;
-import com.sckw.transport.api.model.param.UpdateOrderStatusDto;
+import com.sckw.transport.api.model.param.*;
 import com.sckw.transport.api.model.vo.*;
 
 import java.util.List;
@@ -156,4 +153,10 @@ public interface TransportRemoteService {
      * @return
      */
     List<CapacityTruckVO> queryCapacityTruck(CapacityTruckParam param);
+
+    /**
+     *新增物流订单
+     * @param param 请求参数
+     */
+    public void addLogisticOrder(AddLogisticOrderParam param);
 }

+ 299 - 0
sckw-modules-api/sckw-transport-api/src/main/java/com/sckw/transport/api/model/param/AddLogisticOrderParam.java

@@ -0,0 +1,299 @@
+package com.sckw.transport.api.model.param;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import jakarta.validation.constraints.Max;
+import jakarta.validation.constraints.Min;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.util.List;
+
+
+/**
+ * @author PC
+ */
+@Data
+public class AddLogisticOrderParam implements Serializable {
+    @Serial
+    private static final long serialVersionUID = 6529826978061848338L;
+    //物流信息
+    private List<LogisticInfo> logisticInfo;
+    /**
+     * 交易订单id
+     */
+    private Long tradeOrderId;
+    /**
+     * 交易订单号
+     */
+    @NotBlank(message = "订单编号不能为空")
+    private String tradeOrderNo;
+    /**
+     * 托运单位
+     */
+    @NotBlank(message = "托运单位名称不能为空")
+    private String consignCompany;
+    /**
+     * 托运单位id
+     */
+    @NotBlank(message = "托运单位id不能为空")
+    private String consignCompanyId;
+
+    /**
+     * 托运联系电话
+     */
+    @NotBlank(message = "托运联系电话不能为空")
+    private String consignContactPhone;
+
+    /**
+     * 托运联系人
+     */
+    @NotBlank(message = "托运联系人不能为空")
+    private String consignContacts;
+
+    /**
+     * 托运联系人id
+     */
+    @NotBlank(message = "托运联系人id不能为空")
+    private String consignContactsId;
+
+
+
+    /**
+    * 货物id
+    */
+    @NotNull(message = "货物id不能为空")
+    private String goodsId;
+    /**
+     * 货物名称
+     */
+    @NotNull(message = "货物名称不能为空")
+    private String goodsName;
+
+    /**
+     * 货物类型
+     */
+    @NotBlank(message = "货物类型不能为空")
+    private String goodsType;
+
+
+    /**
+     * 商品价值(扣亏货值)
+     */
+    private BigDecimal goodsPrice;
+    /**
+     * 商品价值(扣亏货值)单位
+     */
+    private String goodsPriceUnit;
+
+
+    /**
+     *装货地址名称
+     */
+    private String loadName;
+
+    /**
+     * 装货城市编码
+     */
+    private Integer loadCityCode;
+
+    /**
+     * 装货城市名称
+     */
+    private String loadCityName;
+
+    /**
+     * 装货联系人
+     */
+    @NotBlank(message = "装货联系人不能为空")
+    private String loadContacts;
+
+    /**
+     * 装货联系电话
+     */
+    @NotBlank(message = "装货联系电话不能为空")
+    private String loadPhone;
+
+    /**
+     * 装货详细地址
+     */
+    @NotBlank(message = "装货详细地址不能为空")
+    private String loadDetailAddress;
+
+
+    @Data
+    public static class LogisticInfo {
+        /**
+         * 合同id
+         */
+        @NotNull(message = "合同id不能为空")
+        private String contractId;
+
+        /**
+         * 合同编号
+         */
+        @NotBlank(message = "合同编号不能为空")
+        private String contractNo;
+
+        /**
+         * 合同名称
+         */
+        @NotBlank(message = "合同名称不能为空")
+        private String contractName;
+        /**
+         * 承运单位ID
+         */
+        @NotBlank(message = "承运单位ID不能为空")
+        private String acceptCompanyId;
+
+        /**
+         * 承运联系电话
+         */
+        @NotBlank(message = "承运联系电话不能为空")
+        private String acceptContactPhone;
+
+
+        /**
+         * 承运联系人
+         */
+        @NotBlank(message = "承运联系人id不能为空")
+        private String acceptContacts;
+
+        /**
+         * 承运联系人id
+         */
+        @NotBlank(message = "承运联系人id不能为空")
+        private String acceptContactsId;
+
+        /**
+         * 承运单位
+         */
+        @NotBlank(message = "承运单位不能为空")
+        private String acceptCompany;
+        /**
+         * 运价
+         */
+        @NotNull(message = "运价不能为空")
+        private BigDecimal price;
+
+        /**
+         * 运价方式
+         */
+        @NotNull(message = "运价方式不能为空")
+        private Long priceType;
+
+
+        /**
+         * 计划卸货时间
+         */
+        @NotNull(message = "计划卸货时间不能为空")
+        @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+        private LocalDate endTime;
+
+        /**
+         * 计划发货时间
+         */
+        @NotNull(message = "计划发货时间不能为空")
+        @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+        private LocalDate startTime;
+
+        /**
+         *卸货地址id
+         */
+        private String unloadId;
+
+        /**
+         *卸货地址名称
+         */
+        private String unloadName;
+
+        /**
+         * 卸货城市编码
+         */
+        @NotNull(message = "卸货城市编码不能为空")
+        @Min(value = 0, message = "卸货城市编码必须大于等于{value}")
+        @Max(value = 1000000, message = "卸货城市编码必须小于等于{value}")
+        private Integer unloadCityCode;
+
+        /**
+         * 卸货城市名称
+         */
+        @NotBlank(message = "卸货城市名称不能为空")
+        private String unloadCityName;
+
+        /**
+         * 卸货联系人
+         */
+        @NotBlank(message = "卸货联系人不能为空")
+        private String unloadContacts;
+
+        /**
+         * 卸货联系电话
+         */
+        @NotBlank(message = "卸货联系电话不能为空")
+        private String unloadPhone;
+
+        /**
+         * 卸货详细地址
+         */
+        @NotBlank(message = "卸货详细地址不能为空")
+        private String unloadDetailAddress;
+
+
+        /**
+         * 总量
+         */
+        @NotNull(message = "总量不能为空")
+
+        private BigDecimal amount;
+
+        /**
+         * 总量单位
+         */
+        @NotBlank(message = "总量单位不能为空")
+        private String amountUnit;
+
+        /**
+         * 合理损耗
+         */
+
+        private BigDecimal loss;
+        /**
+         * 支付方式
+         */
+        @NotNull(message = "支付方式不能为空")
+        private Long payment;
+
+
+        /**
+         * 签约方式
+         */
+        @NotNull(message = "签约方式不能为空")
+        private String signingWay;
+
+        /**
+         * 合理损耗单位
+         */
+        @NotBlank(message = "合理损耗单位不能为空")
+        private String lossUnit;
+        /**
+         * 计费方式
+         */
+        @NotNull(message = "计费方式不能为空")
+        private String billingMode;
+
+        /**
+         * 备注
+         */
+        private String remark;
+        /**
+         * 订单创建类型(1.贸易订单生成,2自建订单生成)
+         */
+        private String type;
+
+    }
+}

+ 1 - 1
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/operateService/KwcContractLogisticsService.java

@@ -1195,7 +1195,7 @@ public class KwcContractLogisticsService {
         saveContractLogistics.setSigningWay(baseInfo.getSigningWay());
         saveContractLogistics.setStartTime(baseInfo.getStartTime());
         saveContractLogistics.setEndTime(baseInfo.getEndTime());
-        saveContractLogistics.setStatus(ContractStatusEnum.WAIT_APPROVE.getCode());
+        saveContractLogistics.setStatus(ContractStatusEnum.SUBMIT.getCode());
         saveContractLogistics.setCreateBy(LoginUserHolder.getUserId());
         saveContractLogistics.setCreateTime(date);
         saveContractLogistics.setUpdateBy(LoginUserHolder.getUserId());

+ 4 - 0
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/model/request/QueryFleetReq.java

@@ -22,4 +22,8 @@ public class QueryFleetReq extends PageReq implements Serializable {
      * 车队id
      */
     private String fleetId;
+    /**
+     * 企业id
+     */
+    private String entId;
 }

+ 4 - 2
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/repository/KwfFleetRepository.java

@@ -64,10 +64,12 @@ public class KwfFleetRepository extends ServiceImpl<KwfFleetMapper, KwfFleet> {
                 .last("limit 1"));
     }
 
-    public IPage<KwfFleet> queryByPage(String fleetId, int pageNum, int pageSize) {
+    public IPage<KwfFleet> queryByPage(Set<Long> allEnt,Long fleetId, int pageNum, int pageSize) {
         return page(new Page<>(pageNum, pageSize),
                 Wrappers.<KwfFleet>lambdaQuery()
                         .eq(BaseModel::getDelFlag,0)
-                        .eq(StringUtils.isNotBlank(fleetId),KwfFleet::getId, fleetId));
+                        .eq(Objects.nonNull(fleetId),KwfFleet::getId, fleetId)
+                        .in(CollectionUtils.isNotEmpty(allEnt),KwfFleet::getEntId, allEnt)
+                        .orderByDesc(BaseModel::getId));
     }
 }

+ 31 - 3
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/service/KwfFleetService.java

@@ -29,6 +29,7 @@ import com.sckw.fleet.repository.KwfFleetRepository;
 import com.sckw.fleet.repository.KwfFleetTruckRepository;
 import com.sckw.fleet.repository.KwfTruckRepository;
 import com.sckw.system.api.RemoteSystemService;
+import com.sckw.system.api.model.dto.res.EntCacheResDto;
 import com.sckw.system.api.model.dto.res.UserCacheResDto;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -210,9 +211,13 @@ public class KwfFleetService {
 
     public PageDataResult<QueryFleetResp> findFleetByPage(QueryFleetReq req) {
         log.info("查询车队列表请求:{}", JSON.toJSONString( req));
-        IPage<KwfFleet> page = kwfFleetRepository.queryByPage(req.getFleetId(),req.getPageNum(), req.getPageSize());
+        Set<Long> allEnt = getAllEnt(req);
+        Long fleetId = org.apache.commons.lang3.StringUtils.isNotBlank(req.getFleetId()) ?
+                Long.valueOf(req.getFleetId()) : null;
+        IPage<KwfFleet> page = kwfFleetRepository.queryByPage(allEnt,fleetId,req.getPageNum(),
+                req.getPageSize());
         List<KwfFleet> records = page.getRecords();
-        if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(records)){
+        if (org.apache.commons.collections4.CollectionUtils.isEmpty(records)){
             return PageDataResult.empty(req.getPageNum(), req.getPageSize());
         }
         Set<Long> userIds = Sets.newHashSet();
@@ -220,9 +225,11 @@ public class KwfFleetService {
         records.forEach(item -> {
             userIds.add(item.getCreateBy());
             userIds.add(item.getCaptainId());
+            fleetIds.add(item.getId());
         });
         //查询用户信息
-        Map<Long, UserCacheResDto> userIdAndUserCacheResDtoMap = remoteSystemService.queryUserCacheMapByIds(new ArrayList<>(userIds));
+        Map<Long, UserCacheResDto> userIdAndUserCacheResDtoMap =
+                remoteSystemService.queryUserCacheMapByIds(new ArrayList<>(userIds));
         //查询车辆
         List<KwfFleetTruck> kwfFleetTrucks = kwfFleetTruckRepository.queryByFleetIds(fleetIds);
         Map<Long, List<KwfFleetTruck>> fleetIdAndKwfFleetTruckList = Maps.newHashMap();
@@ -250,6 +257,27 @@ public class KwfFleetService {
                 .toList();
         return PageDataResult.of(page, fleets);
     }
+    private Set<Long> getAllEnt(QueryFleetReq req) {
+        Set<Long> allEnt = Sets.newHashSet();
+        //根据企业类型查询企业
+        if (StringUtils.isBlank(req.getEntId())){
+            req.setEntId(String.valueOf(LoginUserHolder.getEntId()));
+        }
+
+        if (StringUtils.isBlank(req.getEntId())){
+            return allEnt;
+        }
+        allEnt.add( Long.parseLong(req.getEntId()));
+        EntCacheResDto entCacheResDto = remoteSystemService.queryEntTreeById(Long.parseLong(req.getEntId()));
+        if (Objects.nonNull(entCacheResDto)) {
+            EntCacheResDto entCacheResDto1 = remoteSystemService.queryEntTreeById(entCacheResDto.getId());
+            List<EntCacheResDto> child = entCacheResDto1.getChild();
+            if (CollectionUtils.isNotEmpty(child)) {
+                allEnt.addAll(child.stream().map(EntCacheResDto::getId).toList());
+            }
+        }
+        return allEnt;
+    }
 
     @NotNull
     private static QueryFleetResp getQueryFleetResp(KwfFleet item,

+ 76 - 4
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/dubbo/TransportServiceImpl.java

@@ -38,14 +38,13 @@ import com.sckw.transport.api.dubbo.TransportRemoteService;
 import com.sckw.transport.api.model.dto.AcceptCarriageLogisticsOrderDto;
 import com.sckw.transport.api.model.dto.AccountCheckingBindDTO;
 import com.sckw.transport.api.model.dto.RWaybillOrderDto;
-import com.sckw.transport.api.model.param.CapacityTruckParam;
-import com.sckw.transport.api.model.param.ContractSignLogisticsParam;
-import com.sckw.transport.api.model.param.LogisticsOrderParam;
-import com.sckw.transport.api.model.param.UpdateOrderStatusDto;
+import com.sckw.transport.api.model.param.*;
 import com.sckw.transport.api.model.vo.*;
 import com.sckw.transport.dao.*;
 import com.sckw.transport.model.*;
+import com.sckw.transport.model.dto.AddLogisticOrderDTO;
 import com.sckw.transport.repository.*;
+import com.sckw.transport.service.KwtAcceptCarriageOrderService;
 import com.sckw.transport.service.KwtCommonService;
 import jakarta.annotation.Resource;
 import jodd.util.StringUtil;
@@ -129,6 +128,7 @@ public class TransportServiceImpl implements TransportRemoteService {
     private final KwtLogisticsOrderUnitRepository logisticsOrderUnitRepository;
     private final KwtLogisticsOrderContractRepository logisticsOrderContractRepository;
     private final KwtLogisticsOrderCirculateRepository logisticsOrderCirculateRepository;
+    private final KwtAcceptCarriageOrderService kwtAcceptCarriageOrderService;
     /**
      * 对账管理-ids查询
      *
@@ -1085,4 +1085,76 @@ public class TransportServiceImpl implements TransportRemoteService {
         log.info("查询物流订单已派运力车辆成功,结果:{}", com.alibaba.fastjson.JSON.toJSONString(param));
         return truckVOList;
     }
+
+    @Override
+    public void addLogisticOrder(AddLogisticOrderParam param) {
+        log.info("新增物流订单:{}", JSON.toJSONString(param));
+        AddLogisticOrderDTO addLogisticOrderDTO = getAddLogisticOrderDTO(param);
+        kwtAcceptCarriageOrderService.addLogisticOrder( addLogisticOrderDTO);
+    }
+
+    @NotNull
+    private static AddLogisticOrderDTO getAddLogisticOrderDTO(AddLogisticOrderParam param) {
+        AddLogisticOrderDTO addLogisticOrderDTO = new AddLogisticOrderDTO();
+        List<AddLogisticOrderParam.LogisticInfo> logisticInfo = param.getLogisticInfo();
+        if (CollectionUtils.isEmpty(logisticInfo)) {
+            throw new BusinessException("物流信息不能为空");
+        }
+        List<AddLogisticOrderDTO.LogisticInfo> infos = logisticInfo.stream()
+                .map(TransportServiceImpl::getLogisticInfo)
+                .collect(Collectors.toList());
+        addLogisticOrderDTO.setLogisticInfo(infos);
+        addLogisticOrderDTO.setTradeOrderId(param.getTradeOrderId());
+        addLogisticOrderDTO.setTradeOrderNo(param.getTradeOrderNo());
+        addLogisticOrderDTO.setConsignCompany(param.getConsignCompany());
+        addLogisticOrderDTO.setConsignCompanyId(param.getConsignCompanyId());
+        addLogisticOrderDTO.setConsignContactPhone(param.getConsignContactPhone());
+        addLogisticOrderDTO.setConsignContacts(param.getConsignContacts());
+        addLogisticOrderDTO.setConsignContactsId(param.getConsignContactsId());
+        addLogisticOrderDTO.setGoodsId(param.getGoodsId());
+        addLogisticOrderDTO.setGoodsName(param.getGoodsName());
+        addLogisticOrderDTO.setGoodsType(param.getGoodsType());
+        addLogisticOrderDTO.setGoodsPrice(param.getGoodsPrice());
+        addLogisticOrderDTO.setGoodsPriceUnit(param.getGoodsPriceUnit());
+        addLogisticOrderDTO.setLoadName(param.getLoadName());
+        addLogisticOrderDTO.setLoadCityCode(param.getLoadCityCode());
+        addLogisticOrderDTO.setLoadCityName(param.getLoadCityName());
+        addLogisticOrderDTO.setLoadContacts(param.getLoadContacts());
+        addLogisticOrderDTO.setLoadPhone(param.getLoadPhone());
+        addLogisticOrderDTO.setLoadDetailAddress(param.getLoadDetailAddress());
+        return addLogisticOrderDTO;
+    }
+
+    private static AddLogisticOrderDTO.LogisticInfo getLogisticInfo(AddLogisticOrderParam.LogisticInfo logistic) {
+        AddLogisticOrderDTO.LogisticInfo info = new AddLogisticOrderDTO.LogisticInfo();
+        info.setContractId(logistic.getContractId());
+        info.setContractNo(logistic.getContractNo());
+        info.setContractName(logistic.getContractName());
+        info.setAcceptCompanyId(logistic.getAcceptCompanyId());
+        info.setAcceptContactPhone(logistic.getAcceptContactPhone());
+        info.setAcceptContacts(logistic.getAcceptContacts());
+        info.setAcceptContactsId(logistic.getAcceptContactsId());
+        info.setAcceptCompany(logistic.getAcceptCompany());
+        info.setPrice(logistic.getPrice());
+        info.setPriceType(logistic.getPriceType());
+        info.setEndTime(logistic.getEndTime());
+        info.setStartTime(logistic.getStartTime());
+        info.setUnloadId(logistic.getUnloadId());
+        info.setUnloadName(logistic.getUnloadName());
+        info.setUnloadCityCode(logistic.getUnloadCityCode());
+        info.setUnloadCityName(logistic.getUnloadCityName());
+        info.setUnloadContacts(logistic.getUnloadContacts());
+        info.setUnloadPhone(logistic.getUnloadPhone());
+        info.setUnloadDetailAddress(logistic.getUnloadDetailAddress());
+        info.setAmount(logistic.getAmount());
+        info.setAmountUnit(logistic.getAmountUnit());
+        info.setLoss(logistic.getLoss());
+        info.setPayment(logistic.getPayment());
+        info.setSigningWay(logistic.getSigningWay());
+        info.setLossUnit(logistic.getLossUnit());
+        info.setBillingMode(logistic.getBillingMode());
+        info.setRemark(logistic.getRemark());
+        info.setType(logistic.getType());
+        return info;
+    }
 }

+ 0 - 2
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/KwtLogisticsOrderAddress.java

@@ -129,7 +129,5 @@ public class KwtLogisticsOrderAddress implements Serializable {
     private Integer delFlag;
 
     private static final long serialVersionUID = 1L;
-    @TableField(exist = false)
-    private String logisticsOrderIdAndUnitTypeKey;
 
 }

+ 26 - 60
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/dto/AddLogisticOrderDTO.java

@@ -3,22 +3,32 @@ package com.sckw.transport.model.dto;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import jakarta.validation.constraints.*;
 import lombok.Data;
-import org.hibernate.validator.constraints.Length;
 
+import java.io.Serial;
+import java.io.Serializable;
 import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.util.List;
 
+
 /**
- * @author lfdc
- * @description 承运订单/托运订单-新建订单
- * @date 2023-07-31 10:07:23
+ * @author PC
  */
 @Data
-public class AddLogisticOrderDTO {
+public class AddLogisticOrderDTO implements Serializable {
+    @Serial
+    private static final long serialVersionUID = 6529826978061848338L;
     //物流信息
     private List<LogisticInfo> logisticInfo;
-
+    /**
+     * 交易订单id
+     */
+    private Long tradeOrderId;
+    /**
+     * 交易订单号
+     */
+    @NotBlank(message = "订单编号不能为空")
+    private String tradeOrderNo;
     /**
      * 托运单位
      */
@@ -48,11 +58,7 @@ public class AddLogisticOrderDTO {
     @NotBlank(message = "托运联系人id不能为空")
     private String consignContactsId;
 
-    /**
-     * 承运单位
-     */
-    @NotBlank(message = "承运单位不能为空")
-    private String acceptCompany;
+
 
     /**
     * 货物id
@@ -71,37 +77,16 @@ public class AddLogisticOrderDTO {
     @NotBlank(message = "货物类型不能为空")
     private String goodsType;
 
-    /**
-     * 税率
-     */
-//    @NotNull(message = "税率不能为空")
-//    @Digits(integer = 10,fraction = 2,message = "税率格式错误")
-//    @DecimalMin(value = "0.00",message = "税率最小为{value}")
-//    private BigDecimal taxRate;
-
-    /**
-     * 税率单位
-     */
-//    @NotNull(message = "税率单位不能为空")
-//    private String taxRateUnit;
-
 
     /**
      * 商品价值(扣亏货值)
      */
-    @Digits(integer = 5, fraction = 2, message = "扣亏货值格式错误")
-    @DecimalMin(value = "0.00", message = "扣亏货值最小值为{value}")
     private BigDecimal goodsPrice;
     /**
      * 商品价值(扣亏货值)单位
      */
-    @NotBlank(message = "扣亏货值不能为空")
     private String goodsPriceUnit;
 
-    /**
-     *装货地址id
-     */
-//    private String loadId;
 
     /**
      *装货地址名称
@@ -111,13 +96,11 @@ public class AddLogisticOrderDTO {
     /**
      * 装货城市编码
      */
-    @NotNull(message = "装货城市编码不能为空")
     private Integer loadCityCode;
 
     /**
      * 装货城市名称
      */
-    @NotBlank(message = "装货城市名称不能为空")
     private String loadCityName;
 
     /**
@@ -138,15 +121,6 @@ public class AddLogisticOrderDTO {
     @NotBlank(message = "装货详细地址不能为空")
     private String loadDetailAddress;
 
-//    /**
-//     * 装货地址经度
-//     */
-//    private String loadLat;
-//
-//    /**
-//     * 装货地址纬度
-//     */
-//    private String loadLng;
 
     @Data
     public static class LogisticInfo {
@@ -192,7 +166,11 @@ public class AddLogisticOrderDTO {
         @NotBlank(message = "承运联系人id不能为空")
         private String acceptContactsId;
 
-
+        /**
+         * 承运单位
+         */
+        @NotBlank(message = "承运单位不能为空")
+        private String acceptCompany;
         /**
          * 运价
          */
@@ -309,22 +287,10 @@ public class AddLogisticOrderDTO {
          * 备注
          */
         private String remark;
+        /**
+         * 订单创建类型(1.贸易订单生成,2自建订单生成)
+         */
+        private String type;
 
-
-//        /**
-//         * 结算周期(周结、月结、季结)
-//         */
-//        @Min(value = 0, message = "必须大于等于{value}")
-//        @Max(value = 5, message = "必须小于等于{value}")
-//        private Long settlementCycle;
-//        /**
-//         * 卸货地址经度
-//         */
-//        private String unloadLat;
-//
-//        /**
-//         * 卸货地址纬度
-//         */
-//        private String unloadLng;
     }
 }

+ 232 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtAcceptCarriageOrderService.java

@@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
+import com.google.common.collect.Lists;
 import com.sckw.contract.api.RemoteContractService;
 import com.sckw.contract.api.model.dto.res.ContractCommonInfoResDto;
 import com.sckw.core.common.enums.StringConstant;
@@ -58,10 +59,13 @@ import com.sckw.transport.model.param.DriverParam;
 import com.sckw.transport.model.param.LogisticsOrderStatisticsParam;
 import com.sckw.transport.model.vo.*;
 import com.sckw.transport.model.vo.execlVo.AcceptCarriageOrderExcelVo;
+import com.sckw.transport.repository.*;
 import io.seata.spring.annotation.GlobalTransactional;
 import jakarta.annotation.Resource;
+import jakarta.validation.constraints.NotNull;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections4.MapUtils;
 import org.apache.dubbo.config.annotation.DubboReference;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -175,6 +179,12 @@ public class KwtAcceptCarriageOrderService {
     @Autowired
     public KwtLogisticsOrderLineFreightRateMapper lineFreightRateMapper;
 
+    private final KwtLogisticsOrderRepository logisticsOrderRepository;
+    private final KwtLogisticsOrderGoodsRepository logisticsOrderGoodsRepository;
+    private final KwtLogisticsOrderUnitRepository logisticsOrderUnitRepository;
+    private final KwtLogisticsOrderContractRepository  logisticsOrderContractRepository;
+    private final KwtLogisticsOrderAddressRepository  logisticsOrderAddressRepository;
+
 
     /**
      * 承运订单-分包托运
@@ -2046,6 +2056,7 @@ public class KwtAcceptCarriageOrderService {
         return HttpResult.ok(orderFinishVO);
     }
 
+
     /**
      * 承运订单-页面新建订单
      *
@@ -3166,5 +3177,226 @@ public class KwtAcceptCarriageOrderService {
         }
         return null;
     }
+    /*
+     * 物流订单-新建订单
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public void addLogisticOrder(AddLogisticOrderDTO orderDTO) {
+        log.info("创建物流订单请求参数:{}",JSON.toJSONString(orderDTO));
+        commonService.getRedisGenerateOrderNo();
+        /**生成订单编号*/
+        String lOrderNo = OrderGenerateSeqNoUtils.getSeqNo(RedisOrderGenerateEnum.LOGISTICS_ORDER, OrderRuleEnum.LOGISTICS_ORDER, "2", "0", "0");
+        /**保存新建数据*/
+
+        List<AddLogisticOrderDTO.LogisticInfo> logisticInfo = orderDTO.getLogisticInfo();
+        if (org.apache.commons.collections4.CollectionUtils.isEmpty(logisticInfo)){
+            throw new BusinessException("物流信息不能为空");
+        }
+        List<Long> contractIds = logisticInfo.stream()
+                .filter(x-> org.apache.commons.lang3.StringUtils.isNotBlank(x.getContractId()))
+                .map(x->Long.parseLong(x.getContractId()))
+                .collect(Collectors.toList());
+        Map<Long, ContractCommonInfoResDto> longContractCommonInfoResDtoMap = remoteContractService.queryContractBaseInfo(contractIds);
+        if (MapUtils.isEmpty(longContractCommonInfoResDtoMap)) {
+            throw new BusinessException("合同不存在");
+        }
+        //判断是否都已经签约
+        boolean b = longContractCommonInfoResDtoMap.values().stream()
+                .allMatch(x -> Objects.equals(x.getStatus(), ContractStatusEnum.SIGNED.getCode()));
+        if (!b) {
+            throw new BusinessException("请先签约选择的所有物流合同");
+        }
+        List<KwtLogisticsOrder> saveLogisticsOrderList = Lists.newArrayList();
+        List<KwtLogisticsOrderAddress> saveAddressList = Lists.newArrayList();
+        List<KwtLogisticsOrderGoods> savelogOrderGoodsList = Lists.newArrayList();
+        List<KwtLogisticsOrderContract> saveContractList = Lists.newArrayList();
+        List<KwtLogisticsOrderUnit> savelogOrderUnitList = Lists.newArrayList();
+        logisticInfo.forEach(x->{
+            Long lOrderId = new IdWorker(NumberConstant.ONE).nextId();
+            //物流订单信息
+            setLogisticOrderInfo(orderDTO, x, lOrderId, lOrderNo, saveLogisticsOrderList);
+
+            //地址信息
+            setLogisticAddress(orderDTO, x, lOrderId, saveAddressList);
+
+            //商品信息
+            setLogisticGoodsInfo(orderDTO, lOrderId, lOrderNo, savelogOrderGoodsList);
+            //物流订单与合同信息
+            setLogisticContractInfo(x, lOrderId, saveContractList);
+            //企业信息数据
+            setLogisticUnitInfo(orderDTO, x, lOrderId, savelogOrderUnitList);
+
+        });
+        logisticsOrderRepository.saveBatch(saveLogisticsOrderList);
+        logisticsOrderAddressRepository.saveBatch(saveAddressList);
+        logisticsOrderGoodsRepository.saveBatch(savelogOrderGoodsList);
+        logisticsOrderContractRepository.saveBatch(saveContractList);
+        logisticsOrderUnitRepository.saveBatch(savelogOrderUnitList);
+    }
 
+    private void setLogisticUnitInfo(AddLogisticOrderDTO orderDTO, AddLogisticOrderDTO.LogisticInfo x, Long lOrderId, List<KwtLogisticsOrderUnit> savelogOrderUnitList) {
+        KwtLogisticsOrderUnit consignUnit = new KwtLogisticsOrderUnit();
+        consignUnit.setId(new IdWorker(NumberConstant.ONE).nextId());
+        consignUnit.setLOrderId(lOrderId);
+        consignUnit.setUnitType(NumberConstant.ONE);
+        consignUnit.setEntId(Long.parseLong(orderDTO.getConsignCompanyId()));
+        List<Long> entIds = new ArrayList<>();
+        entIds.add(Long.parseLong(orderDTO.getConsignCompanyId()));
+        entIds.add(Long.parseLong(x.getAcceptCompanyId()));
+        Map<Long, EntCacheResDto> entMap = remoteSystemService.queryEntTreeByIds(entIds);
+        EntCacheResDto ent = entMap.get(Long.parseLong(orderDTO.getConsignCompanyId()));
+        if (Objects.isNull(ent)) {
+            throw new BusinessException("企业:" + orderDTO.getConsignCompany() + "的一级企业信息不存在!");
+        }
+        consignUnit.setContactsId(Long.parseLong(orderDTO.getConsignContactsId()));
+        consignUnit.setTopEntId(ent.getId());
+        consignUnit.setFirmName(orderDTO.getConsignCompany());
+        consignUnit.setContacts(orderDTO.getConsignContacts());
+        consignUnit.setPhone(orderDTO.getConsignContactPhone());
+//        consignUnit.setRemark(orderDTO.getRemark());
+        consignUnit.setStatus(NumberConstant.ZERO);
+        consignUnit.setCreateBy(LoginUserHolder.getUserId());
+        consignUnit.setCreateTime(new Date());
+        consignUnit.setUpdateBy(LoginUserHolder.getUserId());
+        consignUnit.setUpdateTime(new Date());
+        savelogOrderUnitList.add(consignUnit);
+        //承运
+        KwtLogisticsOrderUnit unit = new KwtLogisticsOrderUnit();
+        unit.setId(new IdWorker(NumberConstant.TWO).nextId());
+        unit.setLOrderId(lOrderId);
+        unit.setUnitType(NumberConstant.TWO);
+        unit.setEntId(Long.parseLong(x.getAcceptCompanyId()));
+        EntCacheResDto ent1 = entMap.get(Long.parseLong(x.getAcceptCompanyId()));
+        if (Objects.isNull(ent1)) {
+            throw new BusinessException("企业:" + x.getAcceptCompany() + "的一级企业信息不存在!");
+        }
+        unit.setContactsId(Long.parseLong(x.getAcceptContactsId()));
+        unit.setTopEntId(ent1.getId());
+        unit.setFirmName(x.getAcceptCompany());
+        unit.setContacts(x.getAcceptContacts());
+        unit.setPhone(x.getAcceptContactPhone());
+//        unit.setRemark(orderDTO.getRemark());
+        unit.setStatus(NumberConstant.ZERO);
+        unit.setCreateBy(LoginUserHolder.getUserId());
+        unit.setCreateTime(new Date());
+        unit.setUpdateBy(LoginUserHolder.getUserId());
+        unit.setUpdateTime(new Date());
+        savelogOrderUnitList.add(unit);
+    }
+
+    private static void setLogisticContractInfo(AddLogisticOrderDTO.LogisticInfo x, Long lOrderId, List<KwtLogisticsOrderContract> saveContractList) {
+        KwtLogisticsOrderContract contract = new KwtLogisticsOrderContract();
+        contract.setId(new IdWorker(NumberConstant.ONE).nextId());
+        contract.setContractId(Long.parseLong(x.getContractId()));
+        contract.setLOrderId(lOrderId);
+        contract.setContractNo(x.getContractNo());
+        contract.setContractName(x.getContractName());
+        contract.setSigningWay(x.getSigningWay());
+        contract.setCreateBy(LoginUserHolder.getUserId());
+        contract.setCreateTime(new Date());
+        contract.setUpdateBy(LoginUserHolder.getUserId());
+        contract.setUpdateTime(new Date());
+        saveContractList.add(contract);
+    }
+
+    private static void setLogisticGoodsInfo(AddLogisticOrderDTO orderDTO, Long lOrderId, String lOrderNo, List<KwtLogisticsOrderGoods> savelogOrderGoodsList) {
+        KwtLogisticsOrderGoods goods = new KwtLogisticsOrderGoods();
+        goods.setId(new IdWorker(NumberConstant.ONE).nextId());
+        goods.setLOrderId(lOrderId);
+        goods.setLOrderNo(lOrderNo);
+        goods.setGoodsName(orderDTO.getGoodsName());
+        goods.setGoodsType(orderDTO.getGoodsType());
+        goods.setStatus(NumberConstant.ZERO);
+        goods.setCreateBy(LoginUserHolder.getUserId());
+        goods.setCreateTime(new Date());
+        goods.setUpdateBy(LoginUserHolder.getUserId());
+        goods.setUpdateTime(new Date());
+        savelogOrderGoodsList.add( goods);
+    }
+
+    private static void setLogisticAddress(AddLogisticOrderDTO orderDTO, AddLogisticOrderDTO.LogisticInfo x, Long lOrderId, List<KwtLogisticsOrderAddress> saveAddressList) {
+        KwtLogisticsOrderAddress loadAddress = new KwtLogisticsOrderAddress();
+        loadAddress.setId(new IdWorker(NumberConstant.ONE).nextId());
+        loadAddress.setLOrderId(lOrderId);
+        loadAddress.setAddressType(NumberConstant.ONE);
+        loadAddress.setName(orderDTO.getLoadName() == null ? null : orderDTO.getLoadName());
+//        loadAddress.setType();
+        loadAddress.setContacts(orderDTO.getLoadContacts());
+        loadAddress.setPhone(orderDTO.getLoadPhone());
+        loadAddress.setCityCode(orderDTO.getLoadCityCode());
+        loadAddress.setCityName(orderDTO.getLoadCityName());
+        loadAddress.setDetailAddress(orderDTO.getLoadDetailAddress());
+
+        loadAddress.setEntryType(NumberConstant.FOUR);
+        loadAddress.setStatus(NumberConstant.ZERO);
+        loadAddress.setCreateBy(LoginUserHolder.getUserId());
+        Date date1 = new Date();
+        loadAddress.setCreateTime(date1);
+        loadAddress.setUpdateBy(LoginUserHolder.getUserId());
+        loadAddress.setUpdateTime(date1);
+        saveAddressList.add(loadAddress);
+        KwtLogisticsOrderAddress unloadAddress = new KwtLogisticsOrderAddress();
+        unloadAddress.setId(new IdWorker(NumberConstant.TWO).nextId());
+        unloadAddress.setLOrderId(lOrderId);
+        unloadAddress.setAddressType(NumberConstant.TWO);
+        unloadAddress.setName(x.getUnloadName());
+//        unloadAddress.setType();
+        unloadAddress.setContacts(x.getUnloadContacts());
+        unloadAddress.setPhone(x.getUnloadPhone());
+        unloadAddress.setCityCode(x.getUnloadCityCode());
+        unloadAddress.setCityName(x.getUnloadCityName());
+        unloadAddress.setDetailAddress(x.getUnloadDetailAddress());
+        unloadAddress.setEntryType(NumberConstant.FOUR);
+        unloadAddress.setStatus(NumberConstant.ZERO);
+        unloadAddress.setCreateBy(LoginUserHolder.getUserId());
+        unloadAddress.setCreateTime(date1);
+        unloadAddress.setUpdateBy(LoginUserHolder.getUserId());
+        unloadAddress.setUpdateTime(date1);
+        saveAddressList.add(unloadAddress);
+    }
+
+    private static void setLogisticOrderInfo(AddLogisticOrderDTO orderDTO, AddLogisticOrderDTO.LogisticInfo x, Long lOrderId, String lOrderNo, List<KwtLogisticsOrder> saveLogisticsOrderList) {
+        KwtLogisticsOrder kwtLogisticsOrder = new KwtLogisticsOrder();
+        kwtLogisticsOrder.setId(lOrderId);
+        kwtLogisticsOrder.setEntId(LoginUserHolder.getEntId());
+        kwtLogisticsOrder.setType(x.getType());
+        kwtLogisticsOrder.setTOrderId(orderDTO.getTradeOrderId());
+        kwtLogisticsOrder.setTOrderNo(orderDTO.getTradeOrderNo());
+        kwtLogisticsOrder.setLOrderNo(lOrderNo);
+        kwtLogisticsOrder.setPid(lOrderId);
+        kwtLogisticsOrder.setPids(lOrderId.toString());
+        kwtLogisticsOrder.setBillingMode(x.getBillingMode());
+        kwtLogisticsOrder.setPrice(x.getPrice());
+        kwtLogisticsOrder.setPriceType(x.getPriceType());
+        kwtLogisticsOrder.setAmount(x.getAmount());
+        kwtLogisticsOrder.setUnit(x.getAmountUnit());
+        kwtLogisticsOrder.setLoss(x.getLoss() == null ? null : x.getLoss());
+        kwtLogisticsOrder.setLossUnit(x.getLossUnit());
+        kwtLogisticsOrder.setGoodsPrice(orderDTO.getGoodsPrice());
+        kwtLogisticsOrder.setGoodsPriceUnit(orderDTO.getGoodsPriceUnit());
+        kwtLogisticsOrder.setStartTime(Objects.isNull(x.getStartTime()) ?
+                null : DateUtil.localDateToLocalDateTimeStart(x.getStartTime()));
+        kwtLogisticsOrder.setEndTime(Objects.isNull(x.getEndTime()) ?
+                null : DateUtil.localDateToLocalDateTimeStart(x.getEndTime()));
+        BigDecimal decimal = BigDecimal.ZERO ;
+        kwtLogisticsOrder.setSubcontractAmount(decimal);
+        kwtLogisticsOrder.setEntrustAmount(decimal);
+        kwtLogisticsOrder.setUnloadAmount(decimal);
+        kwtLogisticsOrder.setLoadAmount(decimal);
+        kwtLogisticsOrder.setIgnoreAmount(decimal);
+        kwtLogisticsOrder.setDeficitAmount(decimal);
+        kwtLogisticsOrder.setDeficitPrice(decimal);
+        kwtLogisticsOrder.setTotalUnloadAmount(decimal);
+        kwtLogisticsOrder.setTotalLoadAmount(decimal);
+        kwtLogisticsOrder.setPayment(x.getPayment());
+        kwtLogisticsOrder.setRemark(x.getRemark());
+        kwtLogisticsOrder.setStatus(LogisticsOrderV1Enum.PENDING_ORDER.getCode());
+        kwtLogisticsOrder.setCreateBy(LoginUserHolder.getUserId());
+        Date date = new Date();
+        kwtLogisticsOrder.setCreateTime(date);
+        kwtLogisticsOrder.setUpdateBy(LoginUserHolder.getUserId());
+        kwtLogisticsOrder.setUpdateTime(date);
+        kwtLogisticsOrder.setBindStatus(String.valueOf(NumberConstant.ZERO));
+        saveLogisticsOrderList.add(kwtLogisticsOrder);
+    }
 }

+ 28 - 14
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtLogisticsConsignmentService.java

@@ -2232,8 +2232,7 @@ public class KwtLogisticsConsignmentService {
 
 
         //分页查询物流订单
-       IPage<KwtLogisticsOrder> page = logisticsOrderRepository.queryByPage(allEnt,logOrderIds,req.getOrderStatus(),
-               req.getOrderNo(),
+       IPage<KwtLogisticsOrder> page = logisticsOrderRepository.queryByPage(allEnt,logOrderIds, req.getOrderNo(),req.getOrderStatus(),
                req.getStartTime(), req.getEndTime(), req.getPageNum(), req.getPageSize());
         List<KwtLogisticsOrder> records = page.getRecords();
         if(org.springframework.util.CollectionUtils.isEmpty(records)){
@@ -2282,7 +2281,16 @@ public class KwtLogisticsConsignmentService {
                 .map(x ->getLogisticsOrderResp(x, finalLogOrderIdAndUnitTypeKeyAndUnitMap, finalLogIdAndGoodsMap
                         , finalGoodsIdAndGoodsMap, finalLogisticsOrderIdAndUnitTypeKeyAndAddressMap, finalLogOrderIdAndContractMap))
                 .collect(Collectors.toList());
-
+        if(org.apache.commons.lang3.StringUtils.isNotBlank(req.getConsignCompanyId())){
+            resps = resps.stream()
+                    .filter(x-> org.apache.commons.lang3.StringUtils.equals(x.getConsignCompanyId(), req.getConsignCompanyId()))
+                    .collect(Collectors.toList());
+        }
+        if (org.apache.commons.lang3.StringUtils.isNotBlank(req.getCarriageCompanyId())){
+            resps = resps.stream()
+                    .filter(x-> org.apache.commons.lang3.StringUtils.equals(x.getCarriageCompanyId(), req.getCarriageCompanyId()))
+                    .collect(Collectors.toList());
+        }
         return PageDataResult.of(page,resps);
     }
 
@@ -2316,8 +2324,8 @@ public class KwtLogisticsConsignmentService {
         Map<String, KwtLogisticsOrderAddress> logisticsOrderIdAndUnitTypeKeyAndAddressMap = Maps.newHashMap();
         if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(logOrderAddressList)){
            logisticsOrderIdAndUnitTypeKeyAndAddressMap =
-                    logOrderAddressList.stream().peek(x -> x.setLogisticsOrderIdAndUnitTypeKey(x.getLOrderId() + "-" + x.getAddressType()))
-                    .collect(Collectors.toMap(KwtLogisticsOrderAddress::getLogisticsOrderIdAndUnitTypeKey,
+                    logOrderAddressList.stream()
+                    .collect(Collectors.toMap(x->x.getLOrderId() + "-" + x.getAddressType(),
                             Function.identity(), (x, y) -> x));
         }
         return logisticsOrderIdAndUnitTypeKeyAndAddressMap;
@@ -2363,9 +2371,13 @@ public class KwtLogisticsConsignmentService {
         Set<Long> allEnt = Sets.newHashSet();
         //根据企业类型查询企业
         if (StringUtils.isBlank(req.getEntId())){
-            return allEnt;
+           req.setEntId(String.valueOf(LoginUserHolder.getEntId()));
         }
-        allEnt.add(Long.parseLong(req.getEntId()));
+
+        if (StringUtils.isBlank(req.getEntId())){
+          return allEnt;
+        }
+        allEnt.add( Long.parseLong(req.getEntId()));
         EntCacheResDto entCacheResDto = remoteSystemService.queryEntTreeById(Long.parseLong(req.getEntId()));
         if (Objects.nonNull(entCacheResDto)) {
             EntCacheResDto entCacheResDto1 = remoteSystemService.queryEntTreeById(entCacheResDto.getId());
@@ -2398,9 +2410,11 @@ public class KwtLogisticsConsignmentService {
         logisticsOrderResp.setCarriageCompanyName(carriageCompany.getFirmName());
 
         KwtLogisticsOrderGoods goods = finalLogIdAndGoodsMap.getOrDefault(kwtLogisticsOrder.getId(), new KwtLogisticsOrderGoods());
-        KwpGoods kwpGoods = finalGoodsIdAndGoodsMap.getOrDefault(goods.getGoodsId(), new KwpGoods());
-        logisticsOrderResp.setGoodsId(String.valueOf(goods.getId()));
-        logisticsOrderResp.setGoodsName(kwpGoods.getName());
+        KwpGoods kwpGoods = finalGoodsIdAndGoodsMap.get(goods.getGoodsId());
+        if (Objects.nonNull(kwpGoods)){
+            logisticsOrderResp.setGoodsId(String.valueOf(goods.getGoodsId()));
+            logisticsOrderResp.setGoodsName(kwpGoods.getName()+"/"+kwpGoods.getGoodsType()+"/"+kwpGoods.getSpec());
+        }
         logisticsOrderResp.setTransportPrice(Objects.nonNull(kwtLogisticsOrder.getPrice()) ? kwtLogisticsOrder.getPrice().setScale(2,
                 RoundingMode.HALF_UP).toPlainString() : "0.00");
         logisticsOrderResp.setChargeType(kwtLogisticsOrder.getBillingMode());
@@ -2446,7 +2460,7 @@ public class KwtLogisticsConsignmentService {
     public LogisticsOrderDetailResp getLogisticsOrderDetail(@Valid LogisticsOrderReq req) {
         KwtLogisticsOrder logisticsOrder =
                 logisticsOrderRepository.queryByLogisticsOrderId(Long.valueOf(req.getLogisticsOrderId()));
-        if (Objects.nonNull(logisticsOrder)){
+        if (Objects.isNull(logisticsOrder)){
             throw new BusinessException("物流订单不存在");
         }
         //根据物流订单号查询物流合同
@@ -2472,8 +2486,7 @@ public class KwtLogisticsConsignmentService {
         Map<String, KwtLogisticsOrderAddress> logOrderIdAndUnitTypeKeyAndAddressMap = Maps.newHashMap();
         if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(addressList)){
             logOrderIdAndUnitTypeKeyAndAddressMap = addressList.stream()
-                    .peek(x -> x.setLogisticsOrderIdAndUnitTypeKey(x.getLOrderId() + "-" + x.getAddressType()))
-                    .collect(Collectors.toMap(KwtLogisticsOrderAddress::getLogisticsOrderIdAndUnitTypeKey, Function.identity(), (v1, v2) -> v1));
+                    .collect(Collectors.toMap(x->x.getLOrderId() + "-" + x.getAddressType(), Function.identity(), (v1, v2) -> v1));
         }
 
         //根据物流订单号查询运单信息
@@ -2486,7 +2499,8 @@ public class KwtLogisticsConsignmentService {
     }
 
     @NotNull
-    private static LogisticsOrderDetailResp getLogisticsOrderDetailResp(KwtLogisticsOrderContract orderContract, Map<String, KwtLogisticsOrderUnit> logOrderIdUnitTypeKeyAndUnitMap, KwtLogisticsOrder logisticsOrder, KwpGoods kwpGoods, Map<String, KwtLogisticsOrderAddress> logOrderIdAndUnitTypeKeyAndAddressMap, List<KwtWaybillOrderSubtask> waybillOrderSubtasks) {
+    private static LogisticsOrderDetailResp getLogisticsOrderDetailResp(KwtLogisticsOrderContract orderContract, Map<String, KwtLogisticsOrderUnit> logOrderIdUnitTypeKeyAndUnitMap, KwtLogisticsOrder logisticsOrder,
+                                                                        KwpGoods kwpGoods, Map<String, KwtLogisticsOrderAddress> logOrderIdAndUnitTypeKeyAndAddressMap, List<KwtWaybillOrderSubtask> waybillOrderSubtasks) {
         LogisticsOrderDetailResp logisticsOrderDetailResp = new LogisticsOrderDetailResp();
         //设置合同信息
         setContractInfo(orderContract, logisticsOrderDetailResp);

+ 22 - 0
sql/2025/11/30/2025_11_30_cxf_alert.sql

@@ -35,3 +35,25 @@ ALTER TABLE kwo_trade_order_goods ADD goods_name varchar(255)   NOT NULL default
 
 
 ALTER TABLE kwt_waybill_order_ticket ADD uploading_time  datetime NULL comment '上传凭证时间';
+
+
+
+
+# create table kwt_node_trajectory
+# (
+#     id           bigint        not null comment '主键'
+#         primary key,
+#     w_order_id   bigint        not null comment '车辆运单id',
+#     w_subtask_id bigint        null comment '运单关联子单ID',
+#     w_address_id bigint        null comment '车辆运单地址ID',
+#     order_status tinyint       null comment '运单状态',
+#     truck_id     bigint        null comment '车辆id',
+#     truck_no     varchar(11)        null comment '车牌号',
+#     driver_id    bigint        null comment '司机id',
+#     driver_name    bigint        null comment '司机名称',
+#     weighbridge_id  bigint      null comment '地磅id',
+#     weighbridge_name  bigint      null comment '地磅名称',
+#     create_by    bigint        not null default 0 comment '创建人',
+#     create_time  datetime      not null default CURRENT_TIMESTAMP comment '创建时间'
+# )
+#     comment '车辆运单-节点轨迹';