Bläddra i källkod

1、4.2接口调整;

zk 1 år sedan
förälder
incheckning
3cb16ec4c4

+ 71 - 290
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/dto/LogisticsConsignmentDto.java

@@ -19,7 +19,7 @@ import java.util.List;
 
 /**
  * @author lfdc
- * @description LogisticsConsignmentDto-V4.2
+ * @desc LogisticsConsignmentDto-V4.2
  * @date 2023-07-06 14:07:50
  */
 
@@ -29,7 +29,7 @@ import java.util.List;
 public class LogisticsConsignmentDto implements Serializable {
 
     /**
-     * 单据类型
+     * 单据类型采购订单1,销售订单2
      */
     @NotBlank(message = "单据类型不能为空")
     private String type;
@@ -41,11 +41,80 @@ public class LogisticsConsignmentDto implements Serializable {
     @com.fasterxml.jackson.annotation.JsonProperty("tOrderId")
     private String tOrderId;
 
+    /**
+     * 贸易订单编号
+     */
+    @NotBlank(message = "贸易订单编号不能为空")
+    @JsonProperty("tOrderNo")
+    private String tOrderNo;
+
+    /**
+     * 托运单位
+     */
+    @NotNull(message = "托运单位名称不能为空")
+    private String checkCompany;
+    /**
+     * 托运单位id
+     */
+    @NotNull(message = "托运单位id不能为空")
+    private String checkCompanyId;
+
+    /**
+     * 联系电话
+     */
+    @NotNull(message = "托运联系电话不能为空")
+    private String checkContactPhone;
+    /**
+     * 联系人
+     */
+    @NotNull(message = "托运联系人不能为空")
+    private String checkContacts;
+    /**
+     * 托运联系人id
+     */
+    @NotNull(message = "托运联系人不能为空")
+    private String checkContactsId;
+
+    /**
+     * 承运单位
+     */
+    @NotBlank(message = "承运单位不能为空")
+    private String consignCompany;
+
+    /**
+     * 承运单位ID
+     */
+    @NotBlank(message = "承运单位ID不能为空")
+    private String consignCompanyId;
+
+    /**
+     * 联系电话
+     */
+    @NotNull(message = "承运联系电话不能为空")
+    private String consignContactPhone;
+    /**
+     * 联系人
+     */
+    @NotNull(message = "承运联系人不能为空")
+    private String consignContacts;
+
+    /**
+     * 承运联系人id
+     */
+    @NotNull(message = "承运联系人id不能为空")
+    private String consignContactsId;
+
     /**
      * 商品ID
      */
+    @NotNull(message = "商品id不能为空")
     private Long goodsId;
 
+    /**
+     * 商品类型
+     */
+    private String goodsType;
+
     /**
      * goodsName
      */
@@ -56,13 +125,6 @@ public class LogisticsConsignmentDto implements Serializable {
      */
     private String skuId;
 
-    /**
-     * 贸易订单编号
-     */
-    @NotBlank(message = "贸易订单编号不能为空")
-    @JsonProperty("tOrderNo")
-    private String tOrderNo;
-
     /**
      * 结算周期
      */
@@ -160,62 +222,6 @@ public class LogisticsConsignmentDto implements Serializable {
      */
     private String remark;
 
-    /**
-     * 托运单位
-     */
-    @NotNull(message = "托运单位名称不能为空")
-    private String checkCompany;
-    /**
-     * 托运单位id
-     */
-    @NotNull(message = "托运单位id不能为空")
-    private String checkCompanyId;
-
-    /**
-     * 联系电话
-     */
-    @NotNull(message = "托运联系电话不能为空")
-    private String checkContactPhone;
-    /**
-     * 联系人
-     */
-    @NotNull(message = "托运联系人不能为空")
-    private String checkContacts;
-    /**
-     * 托运联系人id
-     */
-    @NotNull(message = "托运联系人不能为空")
-    private String checkContactsId;
-
-    /**
-     * 承运单位
-     */
-    @NotBlank(message = "承运单位不能为空")
-    private String consignCompany;
-
-    /**
-     * 承运单位ID
-     */
-    @NotBlank(message = "承运单位ID不能为空")
-    private String consignCompanyId;
-
-    /**
-     * 联系电话
-     */
-    @NotNull(message = "承运联系电话不能为空")
-    private String consignContactPhone;
-    /**
-     * 联系人
-     */
-    @NotNull(message = "承运联系人不能为空")
-    private String consignContacts;
-
-    /**
-     * 承运联系人id
-     */
-    @NotNull(message = "承运联系人id不能为空")
-    private String consignContactsId;
-
 
     /**
      * 合同信息
@@ -242,229 +248,4 @@ public class LogisticsConsignmentDto implements Serializable {
     @JsonProperty("lineFreightList")
     private List<LineFreightDto> lineFreightList;
 
-
-//
-//    /**
-//     *总量
-//     */
-//    @Digits(integer = 10,fraction = 2,message = "总量格式不正确")
-//    @DecimalMin(value = "0.00",message = "分配总量量不能小于{value}")
-//    private BigDecimal amount;
-//    /**
-//     * 分配承运量
-//     */
-//    @Digits(integer = 10,fraction = 2,message = "分配承运量格式不正确")
-//    @DecimalMin(value = "0.00",message = "分配承运量不能小于{value}")
-//    private BigDecimal carryingCapacity;
-//    /**
-//     * 分配承运量使用的单位(吨、方、箱、件))
-//     */
-//    @NotNull(message = "分配承运量单位不能为空")
-//    private String carryingCapacityUnit;
-//
-//    /**
-//     * 托运单位
-//     */
-//    @NotNull(message = "托运单位名称不能为空")
-//    private String checkCompany;
-//    /**
-//     * 托运单位id
-//     */
-//    @NotNull(message = "托运单位id不能为空")
-//    private String checkCompanyId;
-//
-//    /**
-//     * 联系电话
-//     */
-//    @NotNull(message = "托运联系电话不能为空")
-//    private String checkContactPhone;
-//    /**
-//     * 联系人
-//     */
-//    @NotNull(message = "托运联系人不能为空")
-//    private String checkContacts;
-//    /**
-//     * 托运联系人id
-//     */
-//    @NotNull(message = "托运联系人不能为空")
-//    private String checkContactsId;
-//
-//    /**
-//     * 合理损耗
-//     */
-////    @NotNull(message = "合理损耗不能为空")
-////    @DecimalMin(value = "0.00",message = "必须为大于0的正整数")
-//    @Digits(integer = 5, fraction = 2, message = "合理损耗超长")
-//    private BigDecimal loss;
-//    /**
-//     * 合理损耗单位
-//     */
-//    private String lossUnit;
-//
-//    /**
-//     * 商品价值(扣亏货值)
-//     */
-////    @NotNull(message = "扣亏货值不能为空")
-////    @DecimalMin(value = "0.00",message = "必须为大于0的正整数")
-//    private BigDecimal goodsPrice;
-//    /**
-//     * 商品价值(扣亏货值)单位
-//     */
-//    private String goodsPriceUnit;
-//    /**
-//     * 承运单位
-//     */
-//    @NotBlank(message = "承运单位不能为空")
-//    private String consignCompany;
-//
-//    /**
-//     * 承运单位ID
-//     */
-//    @NotBlank(message = "承运单位ID不能为空")
-//    private String consignCompanyId;
-//
-//    /**
-//     * 联系电话
-//     */
-//    @NotNull(message = "承运联系电话不能为空")
-//    private String consignContactPhone;
-//    /**
-//     * 联系人
-//     */
-//    @NotNull(message = "承运联系人不能为空")
-//    private String consignContacts;
-//
-//    /**
-//     * 承运联系人id
-//     */
-//    @NotNull(message = "承运联系人id不能为空")
-//    private String consignContactsId;
-//
-//    /**
-//     * 结算周期(周结、月结、季结)
-//     */
-////    @NotNull(message = "结算周期不能为空")
-//    @Digits(integer = 5, fraction = 0, message = "合理损耗超长")
-//    private Long settlementCycle;
-//
-//    /**
-//     * 合同id
-//     */
-//    @NotNull(message = "合同id不能为空")
-//    private String contractId;
-//    /**
-//     * 合同编号
-//     */
-//    @NotNull(message = "合同编号不能为空")
-//    private String contractNo;
-//
-//    /**
-//     * 合同名称
-//     */
-//    @NotNull(message = "合同名称不能为空")
-//    private String contractName;
-//
-//    /**
-//     * 支付方式
-//     */
-//    @NotNull(message = "支付方式不能为空")
-//    private String payment;
-//
-//    /**
-//     * 签约方式
-//     */
-//    @NotNull(message = "签约方式不能为空")
-//    private String signingWay;
-//
-//    /**
-//     * 货物名称
-//     */
-//    @NotNull(message = "货物名称不能为空")
-//    private String goodsName;
-//
-//    /**
-//     * 货物id
-//     */
-//    @NotNull(message = "货物id不能为空")
-//    private String goodsId;
-//
-//    /**
-//     * skuId
-//     */
-//    private String skuId;
-//    /**
-//     * 是否全量
-//     */
-//    @NotNull(message = "是否全量不能为空")
-//    private Boolean isFullDose;
-//    /**
-//     * 订单id-分包时要使用
-//     */
-//    @JsonProperty("lOrderId")
-//    private String lOrderId;
-//    /**
-//     * 订单编号-分包时要使用
-//     */
-//    @JsonProperty("lOrderNo")
-//    private String lOrderNo;
-//    /**
-//     * 贸易订单id
-//     */
-//    @JsonProperty("tOrderId")
-//    @NotNull(message = "贸易订单id不能为空")
-//    private String tOrderId;
-//    /**
-//     * 贸易订单编号
-//     */
-//    @JsonProperty("tOrderNo")
-//    @NotNull(message = "贸易订单编号不能为空")
-//    private String tOrderNo;
-//    /**
-//     * 运价
-//     */
-//    @NotNull(message = "运价不能为空")
-//    @DecimalMin(value = "0.00",message = "运价必须为大于0的正整数")
-//    @Digits(integer = 6,fraction = 2,message = "运价格式填写错误")
-//    private BigDecimal price;
-//    /**
-//     * 运价方式
-//     */
-//    @NotNull(message = "运价方式不能为空")
-//    private String priceType;
-//    /**
-//     * 计划卸货时间
-//     */
-//    @NotNull(message = "计划卸货时间不能为空")
-//    @JsonFormat(pattern="yyyy-MM-dd", timezone = "GMT+8")
-////    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-//    private LocalDate receiveGoodsDateTime;
-//    /**
-//     * 计划发货时间
-//     */
-//    @NotNull(message = "计划发货时间不能为空")
-//    @JsonFormat(pattern="yyyy-MM-dd", timezone = "GMT+8")
-////    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-//    private LocalDate shipmentsDateTime;
-//    /**
-//     * 税率
-//     */
-//    @NotNull(message = "税率不能为空")
-//    private Long taxRate;
-////    /**
-////     * 税率类型
-////     */
-////    @NotNull(message = "税率类型不能为空")
-////    private String taxRateType;
-//    /**
-//     * 备注
-//     */
-//    @Length(max = 100,message = "单据编号长度错误最大长度:{max}")
-//    private String remark;
-//    /**
-//     * 计费方式
-//     */
-//    @NotNull(message = "计费方式不能为空")
-//    private String billingMode;
-
-
 }

+ 100 - 87
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/dto/LogisticsOrderSubcontractDto.java

@@ -19,7 +19,7 @@ import java.util.List;
 
 /**
  * @author lfdc
- * @description 物流订单-分包托运-v4.2
+ * @desc 物流订单-分包托运-v4.2
  * @date 2024-03-05 14:03:45
  */
 @Data
@@ -28,30 +28,29 @@ import java.util.List;
 public class LogisticsOrderSubcontractDto implements Serializable {
 
     /**
-     * 订单类型-托运订单1-承运订单2
-     */
-    @NotBlank(message = "订单类型不能为空")
-    private String type;
-    /**
-     *总量
+     * 订单id-分包时要使用
      */
-    private BigDecimal amount;
+    @JsonProperty("lOrderId")
+    private String lOrderId;
+
     /**
-     * 分配承运量
+     * 订单编号-分包时要使用
      */
-    @Digits(integer = 10,fraction = 2,message = "分配承运量填写错误")
-    @DecimalMin(value = "0.00",message = "委托量不能小于{value}")
-    private BigDecimal carryingCapacity;
+    @JsonProperty("lOrderNo")
+    private String lOrderNo;
+
     /**
-     * 分配承运量使用的单位
+     * 订单类型-托运订单1-承运订单2
      */
-    private String carryingCapacityUnit;
+    @NotBlank(message = "订单类型不能为空")
+    private String type;
 
     /**
      * 托运单位
      */
     @NotNull(message = "托运单位名称不能为空")
     private String consignCompany;
+
     /**
      * 托运单位id
      */
@@ -63,6 +62,7 @@ public class LogisticsOrderSubcontractDto implements Serializable {
      */
     @NotNull(message = "托运联系电话不能为空")
     private String consignContactPhone;
+
     /**
      * 托运联系人
      */
@@ -74,33 +74,7 @@ public class LogisticsOrderSubcontractDto implements Serializable {
      */
     @NotNull(message = "托运联系人id不能为空")
     private String consignContactsId;
-    /**
-     * 承运联系人id
-     */
-    @NotNull(message = "承运联系人id不能为空")
-    private String acceptContactsId;
 
-    /**
-     * 合理损耗
-     */
-//    @NotNull(message = "合理损耗不能为空")
-    @Digits(integer = 5, fraction = 2,message = "合理损耗格式填写错误")
-    private BigDecimal loss;
-    /**
-     * 合理损耗单位
-     */
-    private String lossUnit;
-
-    /**
-     * 商品价值(扣亏货值)
-     */
-//    @NotNull(message = "扣亏货值不能为空")
-    @Digits(integer = 5, fraction = 2,message = "商品价值(扣亏货值)格式填写错误")
-    private BigDecimal goodsPrice;
-    /**
-     * 商品价值(扣亏货值)单位
-     */
-    private String goodsPriceUnit;
     /**
      * 承运单位
      */
@@ -118,6 +92,7 @@ public class LogisticsOrderSubcontractDto implements Serializable {
      */
     @NotNull(message = "承运联系电话不能为空")
     private String acceptContactPhone;
+
     /**
      * 承运联系人
      */
@@ -125,67 +100,97 @@ public class LogisticsOrderSubcontractDto implements Serializable {
     private String acceptContacts;
 
     /**
-     * 结算周期(周结、月结、季结)
+     * 承运联系人id
      */
-//    @NotNull(message = "结算周期不能为空")
-    private Long settlementCycle;
+    @NotNull(message = "承运联系人id不能为空")
+    private String acceptContactsId;
 
     /**
-     * 合同id
+     * 货物id
      */
-    @NotNull(message = "合同id不能为空")
-    private String contractId;
+    //@NotNull(message = "货物id不能为空")
+    private String goodsId;
+
     /**
-     * 合同编号
+     * 商品类型
      */
-    @NotNull(message = "合同编号不能为空")
-    private String contractNo;
+    private String goodsType;
 
     /**
-     * 合同名称
+     * 货物名称
      */
-    @NotNull(message = "合同名称不能为空")
-    private String contractName;
+    @NotNull(message = "货物名称不能为空")
+    private String goodsName;
+
+    /**
+     * skuId
+     */
+    private String skuId;
+
+    /**
+     * 结算周期(周结、月结、季结)
+     */
+    // @NotNull(message = "结算周期不能为空")
+    private Long settlementCycle;
+
+    /**
+     * 税率
+     */
+    @NotNull(message = "税率不能为空")
+    private Long taxRate;
 
     /**
      * 合同签约方式
      */
     @NotNull(message = "合同签约方式不能为空")
     private String payment;
+
     /**
-     * 货物名称
+     * 分配承运量使用的单位
      */
-    @NotNull(message = "货物名称不能为空")
-    private String goodsName;
+    private String carryingCapacityUnit;
 
     /**
-     * 货物id
+     * 商品价值(扣亏货值)
      */
-//    @NotNull(message = "货物id不能为空")
-    private String goodsId;
+    // @NotNull(message = "扣亏货值不能为空")
+    @Digits(integer = 5, fraction = 2,message = "商品价值(扣亏货值)格式填写错误")
+    private BigDecimal goodsPrice;
 
     /**
-     * skuId
+     * 商品价值(扣亏货值)单位
      */
-    private String skuId;
+    private String goodsPriceUnit;
 
     /**
-     * 是否全量
+     * 合理损耗
      */
-    @NotNull(message = "是否全量不能为空")
-    private Boolean isFullDose;
+    // @NotNull(message = "合理损耗不能为空")
+    @Digits(integer = 5, fraction = 2,message = "合理损耗格式填写错误")
+    private BigDecimal loss;
 
     /**
-     * 订单id-分包时要使用
+     * 合理损耗单位
      */
-    @JsonProperty("lOrderId")
-    private String lOrderId;
+    private String lossUnit;
 
     /**
-     * 订单编号-分包时要使用
+     * 扣亏货值
      */
-    @JsonProperty("lOrderNo")
-    private String lOrderNo;
+    @Digits(integer = 5,fraction = 2,message = "扣亏货值格式填写错误")
+    private BigDecimal defectiveValue;
+
+    /**
+     * 计费方式
+     */
+    @NotNull(message = "计费方式不能为空")
+    private String billingMode;
+
+    /**
+     * 是否全量
+     */
+    @NotNull(message = "是否全量不能为空")
+    private Boolean isFullDose;
 
     /**
      * 运价
@@ -200,6 +205,18 @@ public class LogisticsOrderSubcontractDto implements Serializable {
     @NotNull(message = "运价方式不能为空")
     private String priceType;
 
+    /**
+     *总量
+     */
+    private BigDecimal amount;
+
+    /**
+     * 分配承运量
+     */
+    @Digits(integer = 10,fraction = 2,message = "分配承运量填写错误")
+    @DecimalMin(value = "0.00",message = "委托量不能小于{value}")
+    private BigDecimal carryingCapacity;
+
     /**
      * 计划卸货日期
      */
@@ -217,26 +234,28 @@ public class LogisticsOrderSubcontractDto implements Serializable {
     private LocalDate endTime;
 
     /**
-     * 税率
+     * 合同id
      */
-    @NotNull(message = "税率不能为空")
-    private Long taxRate;
+    @NotNull(message = "合同id不能为空")
+    private String contractId;
+
     /**
-     * 备注
+     * 合同编号
      */
-    @Length(max = 200, message = "单据编号长度错误最大长度:{max}")
-    private String remark;
+    @NotNull(message = "合同编号不能为空")
+    private String contractNo;
+
     /**
-     * 计费方式
+     * 合同名称
      */
-    @NotNull(message = "计费方式不能为空")
-    private String billingMode;
+    @NotNull(message = "合同名称不能为空")
+    private String contractName;
 
     /**
-     * 扣亏货值
+     * 备注
      */
-    @Digits(integer = 5,fraction = 2,message = "扣亏货值格式填写错误")
-    private BigDecimal defectiveValue;
+    @Length(max = 200, message = "单据编号长度错误最大长度:{max}")
+    private String remark;
 
     /**
      * 地址信息
@@ -245,12 +264,6 @@ public class LogisticsOrderSubcontractDto implements Serializable {
     @JsonProperty("addressInfo")
     private List<AddressInfoDto> addressInfo;
 
-//    /**
-//     * 辅助单位
-//     */
-//    @JsonProperty("assistUnit")
-//    private List<GoodsUnitParam> assistUnit;
-
     /**
      * 线路分配
      */

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

@@ -894,9 +894,9 @@ public class KwtLogisticsOrderConsignmentService {
     private void checkLogisticsOrder(AddLogisticsOrderParam addOrderDTO) {
         /**计费方式验证*/
         if (!DictEnum.CHARGING_TYPE_4.getValue().equals(addOrderDTO.getBillingMode())) {
-            if (Objects.isNull(addOrderDTO.getGoodsId())) {
+            /*if (Objects.isNull(addOrderDTO.getGoodsId())) {
                 throw new RuntimeException("商品id不能为空");
-            }
+            }*/
             if (addOrderDTO.getPrice() == null || addOrderDTO.getPrice().compareTo(NumberConstant.ZERO_TWO) < 1) {
                 throw new RuntimeException("运价填写错误");
             }

+ 45 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtWaybillOrderV1Service.java

@@ -22,6 +22,9 @@ import com.sckw.fleet.api.model.vo.RDriverVo;
 import com.sckw.fleet.api.model.vo.RTruckVo;
 import com.sckw.mongo.model.SckwWaybillOrder;
 import com.sckw.order.api.dubbo.TradeOrderInfoService;
+import com.sckw.stream.enums.MessageEnum;
+import com.sckw.stream.model.SckwMessage;
+import com.sckw.stream.model.UserInfo;
 import com.sckw.system.api.RemoteSystemService;
 import com.sckw.system.api.model.dto.res.AreaTreeFrontResDto;
 import com.sckw.system.api.model.dto.res.EntCacheResDto;
@@ -670,6 +673,7 @@ public class KwtWaybillOrderV1Service {
                 KwtWaybillOrderTicket ticket = waybillOrderTicketDao.findWaybillOrderTicketV2(address.getId(), subtask.getUnit());
                 //数据组装
                 JSONObject addressJson = new JSONObject();
+                addressJson.put("addressType", address.getAddressType());
                 addressJson.put("addressName", address.getName());
                 addressJson.put("addressCityName", address.getCityName());
                 addressJson.put("addressDetail", address.getDetailAddress());
@@ -686,6 +690,7 @@ public class KwtWaybillOrderV1Service {
             }
 
             JSONObject order = JSON.parseObject(JSON.toJSONString(waybillOrder));
+            order.put("typeName", waybillOrder.getType() == NumberConstant.ONE ? "趟次" : "循环");
             order.put("statusName", CarWaybillEnum.getName(waybillOrder.getStatus()));
             order.put("carrierFirmName", ents.get(waybillOrder.getEntId()) != null ? ents.get(waybillOrder.getEntId()).getFirmName() : null);
             order.put("addresses", addressList);
@@ -1276,6 +1281,26 @@ public class KwtWaybillOrderV1Service {
             logisticsOrder.setEntrustAmount(entrustAmount.subtract(BigDecimal.valueOf(subtask.getEntrustAmount())));
             logisticsOrderDao.updateById(logisticsOrder);
         }
+
+        /*6发送消息**/
+        List<UserInfo> users = new ArrayList<>() {{
+            add(new UserInfo(waybillOrder.getCreateBy(), waybillOrder.getEntId()));
+        }};
+        Map<String, Object> msgParams = new HashMap<>() {{
+            put("orderNo", waybillOrder.getWOrderNo());
+            put("driverName", waybillOrder.getDriverName());
+        }};
+        SckwMessage msg = new SckwMessage();
+        msg.setRequestId(UUIDUtils.get32UUID());
+        msg.setMessageEnum(MessageEnum.WAYBILL_REFUSE_SENDCAR_TRIP);
+        msg.setParams(msgParams);
+        msg.setMsgUrls(new HashMap<>(Global.NUMERICAL_SIXTEEN) {{
+            put("app", refuseSendCarAppUrl);
+            put("pc", refuseSendCarPcUrl);
+        }});
+        msg.setUserInfos(users);
+        msg.setCreateBy(LoginUserHolder.getUserId());
+        streamBridge.send("sckw-message", JSON.toJSONString(msg));
         return HttpResult.ok();
     }
 
@@ -1384,6 +1409,26 @@ public class KwtWaybillOrderV1Service {
             logisticsOrder.setEntrustAmount(entrustAmount.subtract(BigDecimal.valueOf(subtask.getEntrustAmount())));
             logisticsOrderDao.updateById(logisticsOrder);
         }
+
+        /*6、发送消息**/
+        List<UserInfo> users = new ArrayList<>() {{
+            add(new UserInfo(waybillOrder.getCreateBy(), waybillOrder.getEntId()));
+        }};
+        Map<String, Object> msgParams = new HashMap<>() {{
+            put("orderNo", waybillOrder.getWOrderNo());
+            put("driverName", waybillOrder.getDriverName());
+        }};
+        SckwMessage msg = new SckwMessage();
+        msg.setRequestId(UUIDUtils.get32UUID());
+        msg.setMessageEnum(MessageEnum.WAYBIL_CONFIRM_DEPARTURE);
+        msg.setParams(msgParams);
+        msg.setMsgUrls(new HashMap<>(Global.NUMERICAL_SIXTEEN) {{
+            put("app", refuseSendCarAppUrl);
+            put("pc", refuseSendCarPcUrl);
+        }});
+        msg.setUserInfos(users);
+        msg.setCreateBy(LoginUserHolder.getUserId());
+        streamBridge.send("sckw-message", JSON.toJSONString(msg));
         return HttpResult.ok();
     }