lengfaqiang 2 лет назад
Родитель
Сommit
cff4ecd5b6

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

@@ -44,6 +44,12 @@ public class SckwLogisticsOrder {
      */
     private Long lOrderPid;
 
+    /**
+     * 单据下所有的id(包含一二三级订单id“,”隔开)
+     */
+    private String lOrderPids;
+
+
     /**
      * 交易订单id(kwo_trade_order)
      */
@@ -182,7 +188,7 @@ public class SckwLogisticsOrder {
     /**
      * 商品主键
      */
-    private Integer goodsId;
+    private Long goodsId;
 
     /**
      * 商品编号

+ 171 - 0
sckw-modules/sckw-order/src/main/resources/bootstrap-local.yml

@@ -0,0 +1,171 @@
+spring:
+  rabbitmq:
+    username: admin
+    password: admin
+    host: 10.10.10.138
+    port: 5672
+    virtual-host: /
+  cloud:
+    nacos:
+      discovery:
+        # 服务注册地址
+        #        server-addr: 47.108.162.14:8848
+        server-addr: 10.10.10.230:8848
+        # 命名空间
+        namespace: sckw_lfdc
+        # nacos用户名
+        username: nacos
+        # nacos密码
+        password: nacos
+        # 共享配置
+        group: sckw-service-platform
+        # 权重 1-100 数值越大权重越大分配的流量就越大,通常结合权重负载均衡策略
+      #        weight: 100
+      config:
+        # 配置中心地址
+        #        server-addr: 47.108.162.14:8848
+        server-addr: 10.10.10.230:8848
+        # 配置文件格式
+        file-extension: yaml
+        # 命名空间
+        namespace: sckw_lfdc
+        # 共享配置
+        group: sckw-service-platform
+        enabled: true
+    stream:
+      bindings:
+        sckwSms-out-0:
+          destination: sckw-sms
+          content-type: application/json
+          default-binder: defaultRabbit
+          group: sckw
+        sckwMessage-out-0:
+          destination: sckw-message
+          content-type: application/json
+          default-binder: defaultRabbit
+          group: sckw
+      binders:
+        defaultRabbit:
+          type: rabbit
+          environment:
+            spring:
+              rabbitmq:
+                virtual-host: /
+                host: 39.104.134.114
+                port: 5672
+                username: wph
+                password: Yy123...
+    # sentinel降级配置
+    sentinel:
+      transport:
+        client-ip: ${spring.cloud.client.ip-address} # 获取本机IP地址
+        port: 8719  #默认8719端口,如果被占用会向上扫描。
+        #控制台地址
+        #dashboard: 47.108.162.14:19527
+        dashboard: 127.0.0.1:19527
+      log:
+        #日志路径
+        dir: logs/sentinel
+        # 默认将调用链路收敛,导致链路流控效果无效
+        web-context-unify: false
+        #持久化nacos配置中
+      datasource:
+        #sentinel-rule: # 唯一名称可自定义
+        #限流
+        flow:
+          nacos:
+            # 设置Nacos的连接地址、命名空间和Group ID
+            namespace:  sckw-service-platform-dev
+            server-addr:  ${spring.cloud.nacos.discovery.server-addr}
+            # username: ${spring.cloud.nacos.discovery.username}
+            # password: ${spring.cloud.nacos.discovery.password}
+            # 设置Nacos中配置文件的命名规则
+            #            data-id:  ${spring.application.name}-sentinel-flow-rules
+            data-id:  sckw-file-sentinel-flow-rules
+            group-id: SENTINEL_GROUP
+            data-type: json
+            # 必填的重要字段,指定当前规则类型是"限流"
+            rule-type: flow
+        #熔断
+        degrade:
+          nacos:
+            namespace:  sckw-service-platform-dev
+            server-addr: ${spring.cloud.nacos.discovery.server-addr}
+            #data-id: ${spring.application.name}-sentinel-degrade-rules
+            data-id: sckw-file-sentinel-degrade-rules
+            group-id: SENTINEL_GROUP
+            #熔断
+            rule-type: degrade
+      #取消慢加载
+      eager: true
+  datasource:
+    dynamic:
+      seata: true
+#sfs:
+#  nacos:
+#    server-addr: 127.0.0.1:8848
+#    namespace: 967df0d8-156b-441a-a5ab-615b4a865168
+#    group: MY_GROUP
+#
+#    nacos:
+#      server-addr: ${sfs.nacos.server-addr}
+#      namespace: ${sfs.nacos.namespace}
+#      group: ${sfs.nacos.group}
+
+seata:
+  # seata 服务分组,要与服务端nacos-config.txt中service.vgroup_mapping的后缀对应
+  # 事务分组名称,要和服务端对应
+  tx-service-group: file-seata-service-group
+  service:
+    vgroup-mapping:
+      # key是事务分组名称 value要和服务端的机房名称保持一致
+      file-seata-service-group: default
+  registry:
+    # 指定nacos作为注册中心
+    type: nacos
+    nacos:
+      server-addr: ${spring.cloud.nacos.discovery.server-addr}
+      #server-addr: 47.108.162.14:8848
+      namespace: ${spring.cloud.nacos.discovery.namespace}
+      #      group: SEATA_GROUP
+      group: ${spring.cloud.nacos.discovery.group}
+  config:
+    # 指定nacos作为配置中心
+    type: nacos
+    nacos:
+      server-addr: ${spring.cloud.nacos.discovery.server-addr}
+      #server-addr: 47.108.162.14:8848
+      namespace: ${spring.cloud.nacos.discovery.namespace}
+      group: ${spring.cloud.nacos.discovery.group}
+  application-id: ${spring.application.name}
+  #  当前不生效,使用驼峰
+  enabled: true
+  #  enable-auto-data-source-proxy: false
+  enableAutoDataSourceProxy: false
+#  application-id: sckw-seata-file
+# 支持feign对sentinel支持
+#feign:
+#  sentinel:
+#    enabled: true
+
+dubbo:
+  application:
+    # 此处没有延用spring.application.name是因为当前项目本身也会注册到nacos中,如果dubbo也延用相同的名称,在nacos服务里会看到注册的producer-server服务数为2
+    name: order-dubbo-server
+  protocol:
+    name: dubbo
+    port: -1
+    prefer-serialization: java
+  registry:
+    # 配置dubbo的注册中心为nacos
+    address: nacos://${spring.cloud.nacos.discovery.server-addr}
+    group: ${spring.cloud.nacos.config.group}
+    protocol: nacos
+    #use-as-config-center: false
+    #use-as-metadata-center: false
+aliyun:
+  oss:
+    endpoint: oss-cn-chengdu.aliyuncs.com
+    accessKeyId: LTAI5tPEbubCGq5Rdwygbz4Q
+    secret: 7mQLWMaBJeZPRV1SRGogctYGXwppjQ
+    bucket: kaiwu-saas

+ 17 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/AcceptCarriageOrderController.java

@@ -218,6 +218,7 @@ public class AcceptCarriageOrderController {
 
     /**
      * 承运订单-完结订单-页面数据查询
+     *
      * @param orderId
      * @return
      */
@@ -263,4 +264,20 @@ public class AcceptCarriageOrderController {
             return HttpResult.error(HttpStatus.GLOBAL_EXCEPTION_CODE, e.getMessage());
         }
     }
+
+    /**
+     * 承运订单-新建订单
+     *
+     * @param addOrderDTO 页面传递参数
+     * @return
+     */
+    @RequestMapping(value = "/addOrder", method = RequestMethod.POST)
+    public HttpResult addOrder(@Validated @RequestBody AddOrderDTO addOrderDTO) {
+        try {
+            return acceptCarriageOrderService.addOrder(addOrderDTO);
+        } catch (Exception e) {
+            log.error("承运订单-新建订单 error:{}", e.getMessage(), e);
+            return HttpResult.error(HttpStatus.GLOBAL_EXCEPTION_CODE, e.getMessage());
+        }
+    }
 }

+ 277 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/dto/AddOrderDTO.java

@@ -0,0 +1,277 @@
+package com.sckw.transport.model.dto;
+
+import jakarta.validation.constraints.DecimalMin;
+import jakarta.validation.constraints.Digits;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+import org.hibernate.validator.constraints.Length;
+
+import java.math.BigDecimal;
+
+/**
+ * @author lfdc
+ * @description 承运订单/托运订单-新建订单
+ * @date 2023-07-31 10:07:23
+ */
+@Data
+public class AddOrderDTO {
+
+    /**
+     * 托运单位
+     */
+    @NotBlank(message = "托运单位名称不能为空")
+    private String consignCompany;
+    /**
+     * 托运单位id
+     */
+    @NotBlank(message = "托运单位id不能为空")
+    private String consignCompanyId;
+
+    /**
+     * 托运联系电话
+     */
+    @NotBlank(message = "托运联系电话不能为空")
+    private String consignContactPhone;
+
+    /**
+     * 托运联系人
+     */
+    @NotBlank(message = "托运联系人不能为空")
+    private String consignContacts;
+
+    /**
+     * 承运单位
+     */
+    @NotBlank(message = "承运单位不能为空")
+    private String acceptCompany;
+
+    /**
+     * 承运单位ID
+     */
+    @NotBlank(message = "承运单位ID不能为空")
+    private String acceptCompanyId;
+
+    /**
+     * 承运联系电话
+     */
+    @NotBlank(message = "承运联系电话不能为空")
+    private String acceptContactPhone;
+    /**
+     * 承运联系人
+     */
+    @NotBlank(message = "承运联系人不能为空")
+    private String acceptContacts;
+
+    /**
+     * 货物名称
+     */
+    @NotNull(message = "货物名称不能为空")
+    private String goodsName;
+
+    /**
+     * 货物id
+     */
+    @NotNull(message = "货物id不能为空")
+    private String goodsId;
+
+    /**
+     * skuId
+     */
+    private String skuId;
+
+    /**
+     * 计费方式
+     */
+    @NotNull(message = "计费方式不能为空")
+    private String billingMode;
+
+    /**
+     * 计费方式类型
+     */
+    @NotNull(message = "计费方式类型不能为空")
+    private String billingModeType;
+
+    /**
+     * 运价
+     */
+    @NotBlank(message = "运价不能为空")
+    @Digits(integer = 10, fraction = 2, message = "装货量格式错误")
+    @DecimalMin(value = "0.00", message = "运价最小为{value}")
+    private BigDecimal price;
+
+    /**
+     * 运价方式
+     */
+    @NotNull(message = "运价方式不能为空")
+    private String priceType;
+
+    /**
+     * 税率
+     */
+//    @NotNull(message = "税率不能为空")
+//    @Digits(integer = 10,fraction = 2,message = "税率格式错误")
+//    @DecimalMin(value = "0.00",message = "税率最小为{value}")
+    private BigDecimal taxRate;
+
+    /**
+     * 税率单位
+     */
+    @NotBlank(message = "税率单位不能为空")
+    private Long taxRateUnit;
+
+    /**
+     * 总量
+     */
+    @NotNull(message = "总量不能为空")
+    @Digits(integer = 10, fraction = 2, message = "总量格式错误")
+    @DecimalMin(value = "0.00",message = "总量最小值为{value}")
+    private BigDecimal amount;
+
+    /**
+     * 总量
+     */
+    @NotBlank(message = "总量单位不能为空")
+    private String amountUnit;
+
+    /**
+     * 合理损耗
+     */
+    @Digits(integer = 10, fraction = 2, message = "合理损耗格式错误")
+    @DecimalMin(value = "0.00",message = "合理损耗最小值为{value}")
+    private BigDecimal loss;
+
+    /**
+     * 合理损耗单位
+     */
+    private String lossUnit;
+
+    /**
+     * 商品价值(扣亏货值)
+     */
+    @Digits(integer = 10, fraction = 2, message = "扣亏货值格式错误")
+    @DecimalMin(value = "0.00",message = "扣亏货值最小值为{value}")
+    private Long goodsPrice;
+    /**
+     * 商品价值(扣亏货值)单位
+     */
+    @NotBlank(message = "扣亏货值不能为空")
+    private String goodsPriceUnit;
+
+    /**
+     * 计划卸货时间
+     */
+    @NotBlank(message = "计划卸货时间不能为空")
+    private String endTime;
+
+    /**
+     * 计划发货时间
+     */
+    @NotBlank(message = "计划发货时间不能为空")
+    private String startTime;
+
+    /**
+     * 结算周期(周结、月结、季结)
+     */
+    @NotNull(message = "结算周期不能为空")
+    private String settlementCycle;
+
+    /**
+     * 合同id
+     */
+    @NotNull(message = "合同id不能为空")
+    private String contractId;
+
+    /**
+     * 合同编号
+     */
+    @NotBlank(message = "合同编号不能为空")
+    private String contractNo;
+
+    /**
+     * 合同名称
+     */
+    @NotBlank(message = "合同名称不能为空")
+    private String contractName;
+
+    /**
+     * 合同签约方式
+     */
+    @NotBlank(message = "合同签约方式不能为空")
+    private String payment;
+
+    /**
+     * 备注
+     */
+    @Length(max = 200, message = "单据编号长度错误最大长度:{max}")
+    private String remark;
+
+    /**
+     * 联系人
+     */
+    @NotBlank(message = "联系人不能为空")
+    private String contacts;
+
+    /**
+     * 联系电话
+     */
+    @NotBlank(message = "联系电话不能为空")
+    private String phone;
+
+    /**
+     * 装货城市编码
+     */
+    @NotBlank(message = "装货城市编码不能为空")
+    private String loadCityCode;
+
+    /**
+     * 装货城市名称
+     */
+    @NotBlank(message = "装货城市名称不能为空")
+    private String loadCityName;
+
+    /**
+     * 装货详细地址
+     */
+    @NotBlank(message = "装货详细地址不能为空")
+    private String loadDetailAddress;
+
+    /**
+     * 装货地址经度
+     */
+    private String loadLat;
+
+    /**
+     * 装货地址纬度
+     */
+    private String loadLng;
+
+    /**
+     * 卸货城市编码
+     */
+    @NotBlank(message = "卸货城市编码不能为空")
+    private String unloadCityCode;
+
+    /**
+     * 卸货城市名称
+     */
+    @NotBlank(message = "卸货城市名称不能为空")
+    private String unloadCityName;
+
+    /**
+     * 卸货详细地址
+     */
+    @NotBlank(message = "卸货详细地址不能为空")
+    private String unloadDetailAddress;
+
+    /**
+     * 卸货地址经度
+     */
+    private String unloadLat;
+
+    /**
+     * 卸货地址纬度
+     */
+    private String unloadLng;
+
+}

+ 344 - 15
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/AcceptCarriageOrderService.java

@@ -33,10 +33,7 @@ import com.sckw.system.api.model.dto.res.EntCacheResDto;
 import com.sckw.system.api.model.dto.res.SysDictResDto;
 import com.sckw.transport.dao.*;
 import com.sckw.transport.model.*;
-import com.sckw.transport.model.dto.OrderFinishDTO;
-import com.sckw.transport.model.dto.OrderTakingDTO;
-import com.sckw.transport.model.dto.StopOrderTakingDTO;
-import com.sckw.transport.model.dto.SubcontractConsignmentDTO;
+import com.sckw.transport.model.dto.*;
 import com.sckw.transport.model.param.DriverParam;
 import com.sckw.transport.model.vo.*;
 import jakarta.annotation.Resource;
@@ -50,6 +47,7 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.ObjectUtils;
 
 import java.math.BigDecimal;
+import java.text.ParseException;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -204,7 +202,7 @@ public class AcceptCarriageOrderService {
             throw new RuntimeException("生成物流托运合同异常");
         }
         insertSubcontractLogisticsGoods(bo, lOrderNo, orderId);
-        insertSubcontractLogisticsOrder(bo, lOrderNo, order, orderId, pids, orderStatus,logisticsOrder);
+        insertSubcontractLogisticsOrder(bo, lOrderNo, order, orderId, pids, orderStatus, logisticsOrder);
         insertSubcontractLogisticsOrderContract(bo, orderId);
         insertSubcontractLogisticsOrderUnit(bo, orderId);
         insertSubcontractLogisticsOrderAddress(bo, orderId, logisticsOrder);
@@ -273,7 +271,7 @@ public class AcceptCarriageOrderService {
         logisticsOrder.setRemark(bo.getRemark());
         logisticsOrder.setEntId(LoginUserHolder.getEntId());
         logisticsOrder.setFirmName(remoteSystemService.queryEntCacheById(LoginUserHolder.getEntId()).getFirmName());
-        logisticsOrder.setGoodsId(Integer.parseInt(bo.getGoodsId()));
+        logisticsOrder.setGoodsId(Long.parseLong(bo.getGoodsId()));
         KwpGoods goods = goodsInfoService.getGoodsById(Long.parseLong(bo.getGoodsId()));
         logisticsOrder.setGoodsType(goods == null ? null : goods.getGoodsType());
         logisticsOrder.setGoodsSpec(goods == null ? null : goods.getSpec());
@@ -468,17 +466,18 @@ public class AcceptCarriageOrderService {
 
     /**
      * 分包托运-承运订单-主体
-     * @param bo    页面填写分包数据
-     * @param lOrderNo  当前分包物流订单编号
-     * @param order 当前物流订单数据
-     * @param orderId   当前订单主键id
-     * @param pids  组装的pids
-     * @param orderStatus   当前单据状态
-     * @param logisticsOrder   父级物流订单
+     *
+     * @param bo             页面填写分包数据
+     * @param lOrderNo       当前分包物流订单编号
+     * @param order          当前物流订单数据
+     * @param orderId        当前订单主键id
+     * @param pids           组装的pids
+     * @param orderStatus    当前单据状态
+     * @param logisticsOrder 父级物流订单
      */
     private void insertSubcontractLogisticsOrder(SubcontractConsignmentDTO bo, String lOrderNo,
                                                  KwtLogisticsOrder order,
-                                                 Long orderId, String pids, Integer orderStatus,KwtLogisticsOrder logisticsOrder) {
+                                                 Long orderId, String pids, Integer orderStatus, KwtLogisticsOrder logisticsOrder) {
         order.setId(orderId);
         order.setEntId(LoginUserHolder.getEntId());
         order.setType(logisticsOrder.getType());
@@ -1077,11 +1076,341 @@ public class AcceptCarriageOrderService {
 
     /**
      * 承运订单-完结订单-数据查询展示
-     * @param orderId   物流订单id
+     *
+     * @param orderId 物流订单id
      * @return
      */
     public HttpResult acceptCarriageOrderFinishDetail(String orderId) {
         OrderFinishVO orderFinishVO = kwtLogisticsOrderMapper.selectOrderFinishData(orderId);
         return HttpResult.ok(orderFinishVO);
     }
+
+    /**
+     * 承运订单-页面新建订单
+     *
+     * @param orderDTO
+     * @return
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public HttpResult addOrder(AddOrderDTO orderDTO) throws ParseException {
+        /**保存新建数据*/
+        Long lOrderId = new IdWorker(NumberConstant.ONE).nextId();
+        /**生成订单编号*/
+        String lOrderNo = com.sckw.transport.utils.StringUtils.getLOrderNo();
+        /**根据合同计算当前单据状态*/
+        /**判断生成物流订单应生成哪一种单据状态*/
+        List<Long> contractList = new ArrayList<>();
+        contractList.add(Long.parseLong(orderDTO.getContractId()));
+        Map<Long, ContractCommonInfoResDto> longContractCommonInfoResDtoMap = remoteContractService.queryContractBaseInfo(contractList);
+        if (CollectionUtils.isEmpty(longContractCommonInfoResDtoMap)) {
+            throw new RuntimeException("承运订单新建订单-并未有对应合同,应先签约合同");
+        }
+        if (longContractCommonInfoResDtoMap.get(Long.parseLong(orderDTO.getContractId())) == null) {
+            throw new RuntimeException("承运订单新建订单-并未有对应合同,应先签约合同");
+        }
+        ContractCommonInfoResDto infoResDto = longContractCommonInfoResDtoMap.get(Long.parseLong(orderDTO.getContractId()));
+        /**状态判断
+         * 是否是已签约合同
+         * */
+        // 0 已签约 1待签约
+        Integer status = infoResDto.getStatus();
+        Integer orderStatus = LogisticsOrderEnum.PENDING_ORDER.getCode();
+        if (NumberConstant.ONE == status) {
+            orderStatus = LogisticsOrderEnum.TO_BE_PLANNED.getCode();
+        } else if (NumberConstant.ZERO == status) {
+            orderStatus = LogisticsOrderEnum.PENDING_ORDER.getCode();
+        } else {
+            log.info("承运订单创建订单异常");
+            throw new RuntimeException("自建订单异常");
+        }
+        saveLogisticsOrder(orderDTO, lOrderId, orderStatus, lOrderNo);
+        saveLogisticsOrderAddress(orderDTO, lOrderId);
+        saveLogisticsOrderContract(orderDTO, lOrderId, status);
+        saveLogisticsOrderTrack(lOrderId, orderStatus);
+        saveLogisticsOrderUnit(orderDTO, lOrderId);
+        saveMongoDb(orderDTO, orderStatus, lOrderId, lOrderNo, infoResDto);
+        return HttpResult.ok();
+    }
+
+    /**
+     * 承运订单-新建订单-保存mongodb
+     *
+     * @param orderDTO    页面请求参数
+     * @param orderStatus 主体单据状态
+     * @param lOrderId    主体订单id
+     * @param lOrderNo    主体订单编号
+     * @param infoResDto  合同信息
+     */
+    private void saveMongoDb(AddOrderDTO orderDTO, Integer orderStatus, Long lOrderId, String lOrderNo, ContractCommonInfoResDto infoResDto) {
+        SckwLogisticsOrder order = new SckwLogisticsOrder();
+        order.set_id(lOrderId);
+        order.setLOrderId(lOrderId);
+        order.setLOrderNo(lOrderNo);
+        order.setLOrderPid(null);
+        order.setLOrderPids(String.valueOf(lOrderId));
+        order.setType(NumberConstant.TWO);
+        order.setSettlementCycle(Long.parseLong(orderDTO.getSettlementCycle()));
+        order.setPrice(orderDTO.getPrice());
+        order.setPriceType(order.getPriceType());
+        order.setAmount(orderDTO.getAmount());
+        order.setUnit(orderDTO.getAmountUnit());
+        order.setLoss(orderDTO.getLoss());
+        order.setLossUnit(orderDTO.getLossUnit());
+        order.setGoodsPrice(orderDTO.getGoodsPrice() == null ? null : new BigDecimal(orderDTO.getGoodsPrice()));
+        order.setGoodsPriceUnit(orderDTO.getGoodsPriceUnit());
+        BigDecimal decimal = new BigDecimal(NumberConstant.ZERO);
+        order.setSubcontractAmount(decimal);
+        order.setEntrustAmount(decimal);
+        order.setUnloadAmount(decimal);
+        order.setLoadAmount(decimal);
+        order.setIgnoreAmount(decimal);
+        order.setDeficitAmount(decimal);
+        order.setDeficitPrice(decimal);
+        order.setPayment(StringUtils.isBlank(orderDTO.getPayment()) ? null : Long.parseLong(orderDTO.getPayment()));
+        order.setTaxRate(orderDTO.getTaxRate());
+        order.setRemark(orderDTO.getRemark());
+        order.setStatus(String.valueOf(orderStatus));
+        order.setEntId(LoginUserHolder.getEntId());
+        order.setFirmName(LoginUserHolder.getEntName());
+        order.setGoodsId(Long.parseLong(orderDTO.getGoodsId()));
+        KwpGoods goods = goodsInfoService.getGoodsById(Long.parseLong(orderDTO.getGoodsId()));
+        order.setGoodsCode(goods == null ? null : goods.getCode());
+        order.setGoodsName(goods == null ? null : goods.getName());
+        order.setGoodsType(goods == null ? null : goods.getGoodsType());
+//        order.setGoodsIndustry(goods == null ? null : goods.get);
+        order.setGoodsSpec(goods == null ? null : goods.getSpec());
+        order.setContractId(orderDTO.getContractId());
+        order.setContractNo(infoResDto.getContractCode());
+        order.setContractName(infoResDto.getContactName());
+        order.setContractSigningWay(String.valueOf(infoResDto.getSigningWay()));
+        order.setCheckEntId(Long.parseLong(orderDTO.getConsignCompanyId()));
+        order.setCheckFirmName(orderDTO.getConsignCompany());
+        order.setCheckContacts(orderDTO.getConsignContacts());
+        order.setCheckPhone(orderDTO.getConsignContactPhone());
+        order.setCarrierEntId(Long.parseLong(orderDTO.getAcceptCompanyId()));
+        order.setCarrierFirmName(orderDTO.getAcceptCompany());
+        order.setCarrierContacts(orderDTO.getAcceptContacts());
+        order.setCarrierPhone(orderDTO.getAcceptContactPhone());
+//        order.setLoadType();
+//        order.setLoadContacts();
+//        order.setLoadPhone();
+//        order.setLoadCityCode();
+//        order.setLoadCityName();
+//        order.setLoadDetailAddress();
+//        order.setLoadLat();
+//        order.setLoadLng();
+//        order.setUnloadType();
+//        order.setUnloadContacts();
+//        order.setUnloadPhone();
+//        order.setUnloadCityCode();
+//        order.setUnloadCityName();
+//        order.setUnloadDetailAddress();
+//        order.setUnloadLat();
+//        order.setUnloadLng();
+        order.setCreateBy(LoginUserHolder.getUserId());
+        order.setCreateByName(LoginUserHolder.getUserName());
+        order.setCreateTime(new Date());
+        order.setUpdateBy(LoginUserHolder.getUserId());
+        order.setUpdateByName(LoginUserHolder.getUserName());
+        order.setUpdateTime(new Date());
+        order.setWOrderNo(lOrderNo);
+        order.setCarryingCapacity(orderDTO.getAmount().longValue());
+        order.setBillingMode(orderDTO.getBillingMode());
+        SckwBusSum busSum = new SckwBusSum();
+        busSum.setBusSumType(BusinessTypeEnum.LOGISTICS_ORDER_TYPE.getName());
+        busSum.setMethod(NumberConstant.ONE);
+        busSum.setObject(order);
+        streamBridge.send("sckw-busSum", com.alibaba.fastjson2.JSON.toJSONString(busSum));
+
+    }
+
+    /**
+     * 承运订单-页面新增订单-订单对应企业单位
+     *
+     * @param orderDTO 页面请求参数
+     * @param lOrderId 主体id
+     */
+    private void saveLogisticsOrderUnit(AddOrderDTO orderDTO, Long lOrderId) {
+        //托运
+        KwtLogisticsOrderUnit consignUnit = new KwtLogisticsOrderUnit();
+        consignUnit.setId(new IdWorker(NumberConstant.ONE).nextId());
+        consignUnit.setLOrderId(lOrderId);
+        consignUnit.setUnitType(NumberConstant.ONE);
+        consignUnit.setEntId(Long.parseLong(orderDTO.getConsignCompanyId()));
+        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());
+        //承运
+        KwtLogisticsOrderUnit unit = new KwtLogisticsOrderUnit();
+        unit.setId(new IdWorker(NumberConstant.TWO).nextId());
+        unit.setLOrderId(lOrderId);
+        unit.setUnitType(NumberConstant.TWO);
+        unit.setEntId(Long.parseLong(orderDTO.getAcceptCompanyId()));
+        unit.setFirmName(orderDTO.getAcceptCompany());
+        unit.setContacts(orderDTO.getAcceptContacts());
+        unit.setPhone(orderDTO.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());
+        logisticsOrderUnitMapper.insert(consignUnit);
+        logisticsOrderUnitMapper.insert(unit);
+
+    }
+
+    /**
+     * 承运订单-页面新增订单-订单状态
+     *
+     * @param lOrderId    主体id
+     * @param orderStatus 主体单据状态
+     */
+    private void saveLogisticsOrderTrack(Long lOrderId, Integer orderStatus) {
+        KwtLogisticsOrderTrack track = new KwtLogisticsOrderTrack();
+        track.setId(new IdWorker(NumberConstant.ONE).nextId());
+        track.setLOrderId(lOrderId);
+        track.setStatus(orderStatus);
+        track.setCreateBy(LoginUserHolder.getUserId());
+        track.setCreateTime(new Date());
+        track.setUpdateBy(LoginUserHolder.getUserId());
+        track.setUpdateTime(new Date());
+        logisticsOrderTrackMapper.insert(track);
+    }
+
+    /**
+     * 承运订单-新建订单-地址信息保存
+     *
+     * @param orderDTO 页面请求参数
+     * @param lOrderId 主体id
+     */
+    private void saveLogisticsOrderAddress(AddOrderDTO orderDTO, Long lOrderId) {
+        KwtLogisticsOrderAddress loadAddress = new KwtLogisticsOrderAddress();
+        loadAddress.setId(new IdWorker(NumberConstant.ONE).nextId());
+        loadAddress.setLOrderId(lOrderId);
+        loadAddress.setAddressType(NumberConstant.ONE);
+//        loadAddress.setName();
+//        loadAddress.setType();
+//        loadAddress.setContacts();
+//        loadAddress.setPhone();
+        loadAddress.setCityCode(Integer.valueOf(orderDTO.getLoadCityCode()));
+        loadAddress.setCityName(orderDTO.getLoadCityName());
+        loadAddress.setDetailAddress(orderDTO.getLoadDetailAddress());
+        loadAddress.setLat(orderDTO.getLoadLat());
+        loadAddress.setLng(orderDTO.getLoadLng());
+        loadAddress.setEntryType(NumberConstant.FOUR);
+        loadAddress.setStatus(NumberConstant.ZERO);
+        loadAddress.setCreateBy(LoginUserHolder.getUserId());
+        Date date = new Date();
+        loadAddress.setCreateTime(date);
+        loadAddress.setUpdateBy(LoginUserHolder.getUserId());
+        loadAddress.setUpdateTime(date);
+
+        KwtLogisticsOrderAddress unloadAddress = new KwtLogisticsOrderAddress();
+        unloadAddress.setId(new IdWorker(NumberConstant.TWO).nextId());
+        unloadAddress.setLOrderId(lOrderId);
+        unloadAddress.setAddressType(NumberConstant.TWO);
+//        unloadAddress.setName();
+//        unloadAddress.setType();
+//        unloadAddress.setContacts();
+//        unloadAddress.setPhone();
+        unloadAddress.setCityCode(Integer.valueOf(orderDTO.getUnloadCityCode()));
+        unloadAddress.setCityName(orderDTO.getUnloadCityName());
+        unloadAddress.setDetailAddress(orderDTO.getUnloadDetailAddress());
+        unloadAddress.setLat(orderDTO.getUnloadLat());
+        unloadAddress.setLng(orderDTO.getUnloadLng());
+        unloadAddress.setEntryType(NumberConstant.FOUR);
+        unloadAddress.setStatus(NumberConstant.ZERO);
+        unloadAddress.setCreateBy(LoginUserHolder.getUserId());
+        unloadAddress.setCreateTime(date);
+        unloadAddress.setUpdateBy(LoginUserHolder.getUserId());
+        unloadAddress.setUpdateTime(date);
+        logisticsOrderAddressMapper.insert(loadAddress);
+        logisticsOrderAddressMapper.insert(unloadAddress);
+    }
+
+    /**
+     * 承运订单-新建订单-合体主体
+     *
+     * @param orderDTO 页面请求参数
+     * @param lOrderId 主体id
+     * @param status   合同状态
+     */
+    private void saveLogisticsOrderContract(AddOrderDTO orderDTO, Long lOrderId, Integer status) {
+        //托运
+        KwtLogisticsOrderContract consignContract = new KwtLogisticsOrderContract();
+        consignContract.setId(new IdWorker(NumberConstant.ONE).nextId());
+        consignContract.setContractId(Long.parseLong(orderDTO.getContractId()));
+        consignContract.setLOrderId(lOrderId);
+        consignContract.setStatus(status);
+        consignContract.setCreateBy(LoginUserHolder.getUserId());
+        consignContract.setCreateTime(new Date());
+        consignContract.setUpdateBy(LoginUserHolder.getUserId());
+        consignContract.setUpdateTime(new Date());
+        //承运
+        KwtLogisticsOrderContract acceptContract = new KwtLogisticsOrderContract();
+        acceptContract.setId(new IdWorker(NumberConstant.TWO).nextId());
+        acceptContract.setContractId(Long.parseLong(orderDTO.getContractId()));
+        acceptContract.setLOrderId(lOrderId);
+        acceptContract.setStatus(status);
+        acceptContract.setCreateBy(LoginUserHolder.getUserId());
+        acceptContract.setCreateTime(new Date());
+        acceptContract.setUpdateBy(LoginUserHolder.getUserId());
+        acceptContract.setUpdateTime(new Date());
+        kwtLogisticsOrderContractMapper.insert(consignContract);
+        kwtLogisticsOrderContractMapper.insert(acceptContract);
+    }
+
+    /**
+     * 承运订单-页面新增订单-订单主体
+     *
+     * @param orderDTO    页面请求参数
+     * @param lOrderId    主体id
+     * @param orderStatus 订单状态
+     * @param lOrderNo    主体订单编号
+     */
+    private void saveLogisticsOrder(AddOrderDTO orderDTO, Long lOrderId, Integer orderStatus, String lOrderNo) throws ParseException {
+        KwtLogisticsOrder order = new KwtLogisticsOrder();
+        order.setId(lOrderId);
+        order.setEntId(LoginUserHolder.getEntId());
+        order.setType(String.valueOf(NumberConstant.TWO));
+        order.setLOrderNo(lOrderNo);
+        order.setPids(lOrderId.toString());
+        order.setSettlementCycle(Long.parseLong(orderDTO.getSettlementCycle()));
+        order.setBillingMode(orderDTO.getBillingMode());
+        order.setPrice(orderDTO.getPrice());
+        order.setPriceType(Long.parseLong(orderDTO.getPriceType()));
+        order.setAmount(orderDTO.getAmount());
+        order.setUnit(orderDTO.getAmountUnit());
+        order.setLoss(orderDTO.getLossUnit() == null ? null : new BigDecimal((orderDTO.getLossUnit())));
+        order.setLossUnit(orderDTO.getLossUnit());
+        order.setGoodsPrice(orderDTO.getGoodsPrice() == null ? null : new BigDecimal((orderDTO.getGoodsPrice())));
+        order.setGoodsPriceUnit(orderDTO.getGoodsPriceUnit());
+        order.setStartTime(org.apache.commons.lang3.StringUtils.isBlank(orderDTO.getStartTime()) ?
+                null : DateUtil.strToDate(StringTimeUtil.fillStart(orderDTO.getStartTime()), StringConstant.DEFAULT_DATE_PATTERN));
+        order.setEndTime(org.apache.commons.lang3.StringUtils.isBlank(orderDTO.getEndTime()) ?
+                null : DateUtil.strToDate(StringTimeUtil.fillStart(orderDTO.getEndTime()), StringConstant.DEFAULT_DATE_PATTERN));
+        BigDecimal decimal = new BigDecimal(NumberConstant.ZERO);
+        order.setSubcontractAmount(decimal);
+        order.setEntrustAmount(decimal);
+        order.setUnloadAmount(decimal);
+        order.setLoadAmount(decimal);
+        order.setIgnoreAmount(decimal);
+        order.setDeficitAmount(decimal);
+        order.setDeficitPrice(decimal);
+        order.setTaxRate(orderDTO.getTaxRate());
+        order.setRemark(orderDTO.getRemark());
+        order.setStatus(orderStatus);
+        order.setCreateBy(LoginUserHolder.getUserId());
+        order.setCreateTime(new Date());
+        order.setUpdateBy(LoginUserHolder.getUserId());
+        order.setUpdateTime(new Date());
+        logisticsOrderMapper.insert(order);
+    }
 }

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

@@ -130,6 +130,7 @@ public class LogisticsConsignmentService {
 
     /**
      * 销售订单-物流托运生成托运订单
+     *
      * @param bo
      * @return
      */
@@ -254,7 +255,7 @@ public class LogisticsConsignmentService {
         logisticsOrder.setRemark(bo.getRemark());
         logisticsOrder.setEntId(LoginUserHolder.getEntId());
         logisticsOrder.setFirmName(remoteSystemService.queryEntCacheById(LoginUserHolder.getEntId()).getFirmName());
-        logisticsOrder.setGoodsId(Integer.parseInt(bo.getGoodsId()));
+        logisticsOrder.setGoodsId(Long.parseLong(bo.getGoodsId()));
         KwpGoods goods = goodsInfoService.getGoodsById(Long.parseLong(bo.getGoodsId()));
         logisticsOrder.setGoodsType(goods == null ? null : goods.getGoodsType());
         logisticsOrder.setGoodsSpec(goods == null ? null : goods.getSpec());