Просмотр исходного кода

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

czh 2 лет назад
Родитель
Сommit
443da9c335
18 измененных файлов с 855 добавлено и 31 удалено
  1. 7 1
      sckw-common/sckw-common-mongo/src/main/java/com/sckw/mongo/model/SckwLogisticsOrder.java
  2. 4 0
      sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/req/AcceptanceOrderParam.java
  3. 2 0
      sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/req/AddressInfo.java
  4. 2 5
      sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/req/BatchDeleteParam.java
  5. 2 2
      sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/req/CompleteOrderParam.java
  6. 2 2
      sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/req/PurchaseOrderDraftParam.java
  7. 2 2
      sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/req/PurchaseOrderParam.java
  8. 2 0
      sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/req/UnitInfo.java
  9. 2 2
      sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/req/UpdateOrderParam.java
  10. 10 1
      sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTradeOrderService.java
  11. 3 0
      sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTransportDemandService.java
  12. 171 0
      sckw-modules/sckw-order/src/main/resources/bootstrap-local.yml
  13. 3 0
      sckw-modules/sckw-product/src/main/java/com/sckw/product/service/KwpGoodsService.java
  14. 3 0
      sckw-modules/sckw-report/src/main/java/com/sckw/report/service/KwOrderService.java
  15. 17 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/AcceptCarriageOrderController.java
  16. 277 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/dto/AddOrderDTO.java
  17. 344 15
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/AcceptCarriageOrderService.java
  18. 2 1
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/LogisticsConsignmentService.java

+ 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;
 
     /**
      * 商品编号

+ 4 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/req/AcceptanceOrderParam.java

@@ -2,6 +2,7 @@ package com.sckw.order.model.vo.req;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
 import jakarta.validation.Valid;
+import jakarta.validation.constraints.DecimalMin;
 import jakarta.validation.constraints.NotBlank;
 import jakarta.validation.constraints.NotNull;
 import lombok.Getter;
@@ -25,12 +26,15 @@ public class AcceptanceOrderParam {
     private Long id;
 
     @NotNull(message = "订单总量不能为空")
+    @DecimalMin(value = "0.00",message = "订单总量最小为零")
     private BigDecimal amount;
 
     @NotNull(message = "订单成交单价不能为空")
+    @DecimalMin(value = "0.00",message = "订单成交单价最小为零")
     private BigDecimal unitPrice;
 
     @NotNull(message = "订单金额不能为空")
+    @DecimalMin(value = "0.00",message = "订单金额最小为零")
     private BigDecimal price;
 
     @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")

+ 2 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/req/AddressInfo.java

@@ -6,6 +6,7 @@ import jakarta.validation.constraints.Pattern;
 import lombok.Getter;
 import lombok.Setter;
 import lombok.ToString;
+import org.hibernate.validator.constraints.Range;
 
 /**
  * @desc: 地址信息
@@ -21,6 +22,7 @@ public class AddressInfo {
      * 地址类型(1装货地址、2卸货地址)
      */
     @NotNull(message = "地址类型不能为空")
+    @Range(min = 1, max = 2, message ="非法地址类型")
     private String addressType;
 
     /**

+ 2 - 5
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/req/BatchDeleteParam.java

@@ -4,6 +4,7 @@ import jakarta.validation.constraints.*;
 import lombok.Getter;
 import lombok.Setter;
 import lombok.ToString;
+import org.hibernate.validator.constraints.Range;
 
 /**
  * @desc: 批量删除请求参数
@@ -18,11 +19,7 @@ public class BatchDeleteParam {
     @NotBlank(message = "订单ids不能为空")
     private String ids;
 
-    /**
-     * 订单类型(1采购订单、2销售订单)
-     */
-    @Min(value = 1, message = "非法订单类型")
-    @Max(value = 2, message = "非法订单类型")
     @NotNull(message = "订单类型不能为空")
+    @Range(min = 1, max = 2, message = "非法订单类型")
     private Integer orderType;
 }

+ 2 - 2
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/req/CompleteOrderParam.java

@@ -1,6 +1,6 @@
 package com.sckw.order.model.vo.req;
 
-import jakarta.validation.constraints.Min;
+import jakarta.validation.constraints.DecimalMin;
 import jakarta.validation.constraints.NotNull;
 import lombok.Getter;
 import lombok.Setter;
@@ -23,7 +23,7 @@ public class CompleteOrderParam {
     private Long id;
 
     @NotNull(message = "实际交付量不能为空")
-    @Min(value = 0, message = "实际交付量不能为负数")
+    @DecimalMin(value = "0.00",message = "实际交付量最小为零")
     private BigDecimal actualAmount;
 
     /**

+ 2 - 2
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/req/PurchaseOrderDraftParam.java

@@ -40,12 +40,12 @@ public class PurchaseOrderDraftParam {
     /**
      * 单位信息
      */
-    @Size(min = 2, max = 2, message = "单位信息只能有两条")
+    @Size(max = 2, message = "单位信息最多有两条")
     private List<UnitInfo> unitInfo;
     /**
      * 地址信息
      */
-    @Size(min = 2, max = 2, message = "地址信息只能有两条")
+    @Size(max = 2, message = "地址信息最多有两条")
     private List<AddressInfo> addressInfo;
     /**
      * 开始时间

+ 2 - 2
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/req/PurchaseOrderParam.java

@@ -46,14 +46,14 @@ public class PurchaseOrderParam {
      * 单位信息
      */
     @NotEmpty(message = "单位信息不能为空")
-    @Size(min = 2, max = 2, message = "单位信息只能有两条")
+    @Size(min = 2, max = 2, message = "采购或供应单位信息缺失")
     @Valid
     private List<UnitInfo> unitInfo;
     /**
      * 地址信息
      */
     @NotEmpty(message = "地址信息不能为空")
-    @Size(min = 2, max = 2, message = "地址信息只能有两条")
+    @Size(min = 2, max = 2, message = "装货或卸货地址信息缺失")
     @Valid
     private List<AddressInfo> addressInfo;
     /**

+ 2 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/req/UnitInfo.java

@@ -6,6 +6,7 @@ import jakarta.validation.constraints.Pattern;
 import lombok.Getter;
 import lombok.Setter;
 import lombok.ToString;
+import org.hibernate.validator.constraints.Range;
 
 /**
  * @desc: 单位信息
@@ -21,6 +22,7 @@ public class UnitInfo {
      * 单位类型(1销售单位、2采购单位)
      */
     @NotNull(message = "单位类型不能为空")
+    @Range(min = 1, max = 2, message = "非法单位类型")
     private String unitType;
 
     /**

+ 2 - 2
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/req/UpdateOrderParam.java

@@ -67,12 +67,12 @@ public class UpdateOrderParam {
     /**
      * 单位信息
      */
-    @Size(max = 2, message = "单位信息只能有两条")
+    @Size(max = 2, message = "单位信息最多有两条")
     private List<UnitInfo> unitInfo;
     /**
      * 地址信息
      */
-    @Size(max = 2, message = "地址信息只能有两条")
+    @Size(max = 2, message = "地址信息最多有两条")
     private List<AddressInfo> addressInfo;
 
     /**

+ 10 - 1
sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTradeOrderService.java

@@ -128,8 +128,12 @@ public class KwoTradeOrderService {
             List<Long> entIds = unitInfos.stream().map(UnitInfo::getEntId).distinct().toList();
             Map<Long, EntCacheResDto> entMap = remoteSystemService.queryEntTreeByIds(entIds);
             unitInfos.forEach(e -> {
+                EntCacheResDto ent = entMap.get(e.getEntId());
+                if (Objects.isNull(ent)) {
+                    throw new BusinessException("企业:" + e.getFirmName() + "的一级企业信息不存在!");
+                }
                 KwoTradeOrderUnit unit = BeanUtils.copyProperties(e, KwoTradeOrderUnit.class);
-                unit.setTOrderId(id).setTOrderNo(tOrderNo).setTopEntId(entMap.get(e.getEntId()).getId());
+                unit.setTOrderId(id).setTOrderNo(tOrderNo).setTopEntId(ent.getId());
                 list.add(unit);
                 if (Objects.equals(e.getUnitType(), DictEnum.TORDER_UNIT_TYPE_1.getValue())) {
                     order.setProcureEntId(e.getEntId()).setProcureTopEntId(unit.getTopEntId()).setProcureFirmName(e.getFirmName())
@@ -252,6 +256,11 @@ public class KwoTradeOrderService {
         List<Long> entIds = unitInfo.stream().map(UnitInfo::getEntId).toList();
         Map<Long, EntCacheResDto> entMap = remoteSystemService.queryEntTreeByIds(entIds);
         unitInfo.forEach(e -> {
+            EntCacheResDto ent = entMap.get(e.getEntId());
+            if (Objects.isNull(ent)) {
+                log.error("企业:{}找不到对应一级企业信息", e.getEntId());
+                throw new BusinessException("一级企业信息不存在!");
+            }
             if (Objects.equals(e.getUnitType(), DictEnum.TORDER_UNIT_TYPE_1.getValue())) {
                 orderCheckDTO.setProcureTopEntId(entMap.get(e.getEntId()).getId());
             } else {

+ 3 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTransportDemandService.java

@@ -254,6 +254,9 @@ public class KwoTransportDemandService {
         List<KwoTransportDemand> demands = kwoTransportDemandMapper.selectList(wrapper);
         Map<Integer, List<KwoTransportDemand>> map = demands.stream().collect(Collectors.groupingBy(KwoTransportDemand::getStatus));
         List<TableTop> tableTops = new ArrayList<>();
+        TableTop all = new TableTop();
+        all.setName("全部").setTotal(CollectionUtils.isEmpty(demands) ? 0 : demands.size());
+        tableTops.add(all);
         List<DictEnum> enums = DictEnum.getEnumsByType(DictTypeEnum.TRANSPORT_DEMAND_STATUS.getType());
         enums.forEach(e -> {
             Integer value = Integer.valueOf(e.getValue());

+ 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

+ 3 - 0
sckw-modules/sckw-product/src/main/java/com/sckw/product/service/KwpGoodsService.java

@@ -519,6 +519,9 @@ public class KwpGoodsService {
         List<KwpGoods> goodsList = getGoodsLists(BeanUtils.copyProperties(params, SelectGoodsListParam.class), false).getRecords();
         Map<Integer, List<KwpGoods>> map = goodsList.stream().collect(Collectors.groupingBy(KwpGoods::getStatus));
         List<TableTop> tableTops = new ArrayList<>();
+        TableTop all = new TableTop();
+        all.setName("全部").setTotal(CollectionUtils.isEmpty(goodsList) ? 0 : goodsList.size());
+        tableTops.add(all);
         GoodsStatusEnum.getSortList().forEach(e -> {
             List<KwpGoods> list = map.get(e.getCode());
             int total = CollectionUtils.isEmpty(list) ? 0 : list.size();

+ 3 - 0
sckw-modules/sckw-report/src/main/java/com/sckw/report/service/KwOrderService.java

@@ -208,6 +208,9 @@ public class KwOrderService {
         List<SckwTradeOrder> orders = mongoTemplate.find(query, SckwTradeOrder.class);
         Map<Integer, List<SckwTradeOrder>> map = orders.stream().collect(Collectors.groupingBy(SckwTradeOrder::getStatus));
         List<TableTop> tableTops = new ArrayList<>();
+        TableTop all = new TableTop();
+        all.setName("全部").setTotal(CollectionUtils.isEmpty(orders) ? 0 : orders.size());
+        tableTops.add(all);
         List<DictEnum> tOrderStatusEnums = DictEnum.getEnumsByType(DictTypeEnum.TORDER_STATUS.getType());
         tOrderStatusEnums.forEach(e -> {
             Integer value = Integer.valueOf(e.getValue());

+ 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());