瀏覽代碼

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

czh 2 年之前
父節點
當前提交
3593049d83
共有 46 個文件被更改,包括 864 次插入285 次删除
  1. 2 0
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/common/enums/enums/DictEnum.java
  2. 1 0
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/common/enums/enums/DictTypeEnum.java
  3. 50 79
      sckw-common/sckw-common-stream/src/main/java/com/sckw/stream/enums/MessageEnum.java
  4. 6 2
      sckw-common/sckw-common-stream/src/main/java/com/sckw/stream/model/SckwMessage.java
  5. 22 0
      sckw-common/sckw-common-stream/src/main/java/com/sckw/stream/model/UserInfo.java
  6. 3 29
      sckw-modules/sckw-message/src/main/java/com/sckw/message/controller/MessageController.java
  7. 4 3
      sckw-modules/sckw-message/src/main/java/com/sckw/message/dao/KwmMessageMapper.java
  8. 5 0
      sckw-modules/sckw-message/src/main/java/com/sckw/message/model/KwmMessageUser.java
  9. 91 0
      sckw-modules/sckw-message/src/main/java/com/sckw/message/model/dto/MessageListDTO.java
  10. 7 2
      sckw-modules/sckw-message/src/main/java/com/sckw/message/model/dto/SelectMessagesDTO.java
  11. 4 13
      sckw-modules/sckw-message/src/main/java/com/sckw/message/model/vo/req/ReadMessagesReqVO.java
  12. 6 3
      sckw-modules/sckw-message/src/main/java/com/sckw/message/model/vo/req/SelectMessagesReqVO.java
  13. 0 5
      sckw-modules/sckw-message/src/main/java/com/sckw/message/model/vo/req/StatisticsMessagesReqVO.java
  14. 10 14
      sckw-modules/sckw-message/src/main/java/com/sckw/message/model/vo/res/KwmMessageListResVO.java
  15. 4 3
      sckw-modules/sckw-message/src/main/java/com/sckw/message/service/KwmMessageService.java
  16. 44 0
      sckw-modules/sckw-message/src/main/java/com/sckw/message/service/KwmMessageUserService.java
  17. 44 51
      sckw-modules/sckw-message/src/main/java/com/sckw/message/service/MessageService.java
  18. 13 11
      sckw-modules/sckw-message/src/main/java/com/sckw/message/service/SckwMessageHandlerService.java
  19. 18 11
      sckw-modules/sckw-message/src/main/resources/mapper/KwmMessageMapper.xml
  20. 2 0
      sckw-modules/sckw-message/src/main/resources/mapper/KwmMessageUserMapper.xml
  21. 22 0
      sckw-modules/sckw-order/src/main/java/com/sckw/order/model/dto/OrderCheckDTO.java
  22. 160 16
      sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTradeOrderService.java
  23. 16 0
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/dto/LedgerLogisticsDto.java
  24. 8 0
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/dto/LedgerTradeDto.java
  25. 6 0
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/vo/res/LedgerLogisticsDetailVo.java
  26. 5 0
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/vo/res/LedgerTradeDetailVo.java
  27. 11 1
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpLedgerLogisticsService.java
  28. 10 1
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpLedgerTradeService.java
  29. 6 4
      sckw-modules/sckw-payment/src/main/resources/mapper/KwpLedgerLogisticsMapper.xml
  30. 3 1
      sckw-modules/sckw-payment/src/main/resources/mapper/KwpLedgerTradeMapper.xml
  31. 12 0
      sckw-modules/sckw-product/src/main/java/com/sckw/product/controller/KwpGoodsController.java
  32. 28 0
      sckw-modules/sckw-product/src/main/java/com/sckw/product/model/vo/req/GetPriceParam.java
  33. 35 2
      sckw-modules/sckw-product/src/main/java/com/sckw/product/service/KwpGoodsService.java
  34. 1 1
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/AcceptCarriageOrderController.java
  35. 1 1
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/dao/KwtLogisticsOrderMapper.java
  36. 10 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/dao/KwtWaybillOrderTrackMapper.java
  37. 10 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/AcceptCarriageOrderVO.java
  38. 5 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/SckwLogisticsOrderVO.java
  39. 30 3
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/WaybillOrderDriverVo.java
  40. 8 3
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/AcceptCarriageOrderService.java
  41. 37 1
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/ConsignOrderService.java
  42. 56 3
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtWaybillOrderService.java
  43. 14 8
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/TransportCommonService.java
  44. 4 2
      sckw-modules/sckw-transport/src/main/resources/mapper/KwtLogisticsOrderMapper.xml
  45. 15 12
      sckw-modules/sckw-transport/src/main/resources/mapper/KwtWaybillOrderMapper.xml
  46. 15 0
      sckw-modules/sckw-transport/src/main/resources/mapper/KwtWaybillOrderTrackMapper.xml

+ 2 - 0
sckw-common/sckw-common-core/src/main/java/com/sckw/core/common/enums/enums/DictEnum.java

@@ -18,6 +18,8 @@ public enum DictEnum {
     /**
      *
      */
+    SYSTEM_MSG("msg_category", "SYSTEM", "系统消息"),
+    BUSINESS_MSG("msg_category", "BUSINESS", "业务消息"),
     SMS_REGISTER("send_sms_type", "register", "短信注册"),
     SMS_LOGIN("send_sms_type", "login", "短信登录"),
     SMS_UPDATE_PASSWORD("send_sms_type", "updatePassword", "短信修改密码"),

+ 1 - 0
sckw-common/sckw-common-core/src/main/java/com/sckw/core/common/enums/enums/DictTypeEnum.java

@@ -11,6 +11,7 @@ import lombok.Getter;
 @Getter
 @AllArgsConstructor
 public enum DictTypeEnum {
+    MSG_CATEGORY("msg_category", "消息分类"),
     SEND_SMS_TYPE("send_sms_type", "发送短信类型"),
     INTEGRAL_TYPE("integral_type", "积分类型"),
     UNIT_TYPE("unit_type", "商品单位类型"),

+ 50 - 79
sckw-common/sckw-common-stream/src/main/java/com/sckw/stream/enums/MessageEnum.java

@@ -1,78 +1,89 @@
 package com.sckw.stream.enums;
 
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
 /**
  * @author zk
  * @description 短信模板
  * @date 2020/06/16 08:37:44
  */
+@AllArgsConstructor
+@Getter
 public enum MessageEnum {
-    /**SYSTEM 系统消息、BUSINESS业务消息、INDUSTRY行业消息**/
-    XXXXXX("SYSTEM", "xxxxx", "xxxx", "xxxxxx","terminal"),
-    XXXXXX1("BUSINESS", "xxxxx", "xxxx", "xxxxxx","terminal"),
-
-    //认证通过
-    AUDIT_PASS("SYSTEM","SYSTEM_ENT_APPR","认证通过通知","审核通过!您的资质已认证成功,危品汇欢迎您的入驻!","terminal,ios,android"),
-    //委托单-指派成功
-    RECEIVE_ASSIGN_ENTRUST("BUSINESS", "BUSINESS_RECEIVE_ASSIGN_ENTRUST", "新委托单通知",
-            "${firmName}委托承运:从${loadAddress}至${unloadAddress},承运${supplyName},委托量${weight}吨,运价${price}!","terminal,ios,android"),
-
     /**
-     * 新销售订单(有新的待受理订单)
+     * 采发起采购下单
      */
-    NEW_SALE_ORDER("BUSINESS", "BUSINESS_TORDER_NEW_SALE", "有新的待受理订单",
-                                   "${firmName}发起采购,请及时进行受理;订单号:${orderNo}","terminal,ios,android"),
-
+    ORDER_INITIATE_PURCHASE("BUSINESS", "BUSINESS_ORDER_INITIATE_PURCHASE", "发起采购下单",
+            "贵司发起了对【${firmName}】的商品采购申请,请留意后续消息;订单号:${orderNo}","terminal,ios,android"),
+    /**
+     * 有新的待受理订单
+     */
+    ORDER_NEW_PENDING("BUSINESS", "BUSINESS_ORDER_NEW_PENDING", "有新的待受理订单",
+                                   "【${firmName}】发起采购申请,请及时进行受理;订单号:${orderNo}","terminal,ios,android"),
+    /**
+     * 发起代客下单
+     */
+    ORDER_INITIATE_SALE("BUSINESS", "BUSINESS_ORDER_INITIATE_SALE", "发起代客下单",
+                           "贵司已代【${firmName}】发起了商品采购,请及时联系往来单位;订单号:${orderNo}","terminal,ios,android"),
+    /**
+     * 有新的代客下单信息
+     */
+    ORDER_NEW_VALET_MSG("BUSINESS", "BUSINESS_ORDER_NEW_VALET_MSG", "有新的代客下单信息",
+            "【${firmName}】代您发起了商品采购,请确认;订单号:${orderNo}","terminal,ios,android"),
     /**
-     * 新采购订单(有新的代客下单信息)
+     * 驳回采购订单
      */
-    NEW_PURCHASE_ORDER("BUSINESS", "BUSINESS_TORDER_NEW_PURCHASE", "有新的代客下单信息",
-                           "${firmName}代您发起了商品采购,请确认;订单号:${orderNo}","terminal,ios,android"),
+    ORDER_REJECT_VALET("BUSINESS", "BUSINESS_ORDER_REJECT_VALET", "驳回采购订单",
+            "贵司驳回了【${firmName}】的采购申请,请及时通知采购单位;订单号:${orderNo}","terminal,ios,android"),
     /**
      * 采购订单被驳回
      */
-    REJECT_PURCHASE_ORDER("BUSINESS", "BUSINESS_TORDER_REJECT_PURCHASE", "采购订单被驳回",
-            "您的采购申请被${firmName}驳回,请及时查看;订单号:${orderNo}","terminal,ios,android"),
+    ORDER_REJECT_PURCHASE("BUSINESS", "BUSINESS_ORDER_REJECT_PURCHASE", "采购订单被驳回",
+            "您的采购申请被【${firmName}】驳回,请及时查看;订单号:${orderNo}","terminal,ios,android"),
+    /**
+     * 司机拒绝接单
+     */
+    WAYBILL_REFUSE_SENDCAR_TRIP("BUSINESS", "BUSINESS_WAYBILL_REFUSE_SENDCAR_TRIP", "司机拒绝接单",
+            "贵司指派的运单被拒绝接单了,请及时确认;运单号:${orderNo},司机:${driverName}","terminal,ios,android"),
+    /**
+     * 司机拒绝接单
+     */
+    WAYBILL_REFUSE_SENDCAR_CIRCULATE("BUSINESS", "BUSINESS_WAYBILL_REFUSE_SENDCAR_CIRCULATE", "司机拒绝接单",
+            "贵司指派的运单被拒绝接单了,请及时确认;承运单号:${orderNo},司机:${driverName}","terminal,ios,android"),
+
+    /**
+     * 司机拒绝出车
+     */
+    WAYBIL_CONFIRM_DEPARTURE("BUSINESS", "BUSINESS_WAYBIL_CONFIRM_DEPARTURE", "司机拒绝出车",
+            "贵司的运单被拒绝出车了,请及时确认;运单号:${orderNo},司机:${driverName}","terminal,ios,android"),
     ;
 
     /**
-     * 消息分类
+     * 消息分类:BUSINESS业务消息,SYSTEM系统消息
      */
-    private String category;
+    private final String category;
 
     /**
      * 消息类型
      */
-    private String type;
+    private final String type;
 
     /**
      * 消息标题
      */
-    private String title;
+    private final String title;
 
     /**
      * 消息内容
      */
-    private String content;
+    private final String content;
 
     /**
      * 显示终端 terminal ios android
      */
-    private String pushType;
+    private final String pushType;
 
-    /**
-     * @description 构造方法
-     * @author zk
-     * @date 2020/6/08 11:28
-     * @param category 消息分类, type 消息类型, title 消息标题, content 消息内容
-     * @return
-     **/
-    private MessageEnum(String category, String type, String title, String content, String pushType) {
-        this.category = category;
-        this.type = type;
-        this.title = title;
-        this.content = content;
-        this.pushType = pushType;
-    }
 
     public static String getCategoryByType(String type) {
         for (MessageEnum entityEnum : MessageEnum.values()) {
@@ -100,44 +111,4 @@ public enum MessageEnum {
         }
         return null;
     }
-
-    public String getCategory() {
-        return category;
-    }
-
-    public void setCategory(String category) {
-        this.category = category;
-    }
-
-    public String getType() {
-        return type;
-    }
-
-    public void setType(String type) {
-        this.type = type;
-    }
-
-    public String getTitle() {
-        return title;
-    }
-
-    public void setTitle(String title) {
-        this.title = title;
-    }
-
-    public String getContent() {
-        return content;
-    }
-
-    public void setContent(String content) {
-        this.content = content;
-    }
-
-    public String getPushType() {
-        return pushType;
-    }
-
-    public void setPushType(String pushType) {
-        this.pushType = pushType;
-    }
 }

+ 6 - 2
sckw-common/sckw-common-stream/src/main/java/com/sckw/stream/model/SckwMessage.java

@@ -4,9 +4,12 @@ import com.sckw.stream.enums.MessageEnum;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
 
 import java.util.Date;
+import java.util.List;
 import java.util.Map;
+
 /**
  * @desc: message消费对象
  * @author: yzc
@@ -15,6 +18,7 @@ import java.util.Map;
 @Data
 @NoArgsConstructor
 @AllArgsConstructor
+@Accessors(chain = true)
 public class SckwMessage {
 
     /**
@@ -53,9 +57,9 @@ public class SckwMessage {
     private Long createBy;
 
     /**
-     * 推送用户
+     * 推送用户信息
      */
-    private String userIds;
+    private List<UserInfo> userInfos;
 
     /**
      * 移动端推送

+ 22 - 0
sckw-common/sckw-common-stream/src/main/java/com/sckw/stream/model/UserInfo.java

@@ -0,0 +1,22 @@
+package com.sckw.stream.model;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+/**
+ * @desc: 用户信息
+ * @author: yzc
+ * @date: 2023-09-01 16:59
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Accessors(chain = true)
+public class UserInfo {
+
+    private Long userId;
+
+    private Long entId;
+}

+ 3 - 29
sckw-modules/sckw-message/src/main/java/com/sckw/message/controller/MessageController.java

@@ -8,7 +8,6 @@ import com.sckw.core.web.response.HttpResult;
 import com.sckw.message.model.KwmMessage;
 import com.sckw.message.model.vo.req.*;
 import com.sckw.message.model.vo.res.KwmMessageListResVO;
-import com.sckw.message.model.vo.res.MessagesStatisticsResVO;
 import com.sckw.message.service.MessageService;
 import jakarta.validation.Valid;
 import lombok.RequiredArgsConstructor;
@@ -66,9 +65,9 @@ public class MessageController {
      * @Param params:
      * @return: com.sckw.core.web.response.HttpResult
      */
-    @PostMapping(value = "/statisticsList", produces = MediaType.APPLICATION_JSON_VALUE)
-    public HttpResult statisticsList(@RequestBody @Valid StatisticsMessagesReqVO params) {
-        return HttpResult.ok("消息列表统计查询成功", messageService.statisticsList(params));
+    @PostMapping(value = "/statistic", produces = MediaType.APPLICATION_JSON_VALUE)
+    public HttpResult statistic(@RequestBody @Valid StatisticsMessagesReqVO params) {
+        return HttpResult.ok("消息列表统计查询成功", messageService.statistics(params));
     }
 
     /**
@@ -97,29 +96,4 @@ public class MessageController {
         return HttpResult.ok("删除消息成功");
     }
 
-    /**
-     * @param category
-     * @return com.sckw.core.web.response.HttpResult
-     * @desc: 消息统计查询
-     * @author: yzc
-     * @date: 2023-06-14 10:54
-     */
-    @GetMapping(value = "/statistics")
-    public HttpResult statistics(@RequestParam(required = false) String category) {
-        List<MessagesStatisticsResVO> result = messageService.statistics(category);
-        return HttpResult.ok("消息统计查询", result);
-    }
-
-    /**
-     * @param findMessagesReqVO
-     * @return com.sckw.core.web.response.HttpResult
-     * @desc: 查找消息集合
-     * @author: yzc
-     * @date: 2023-06-09 15:12
-     */
-    @PostMapping(value = "/findList", produces = MediaType.APPLICATION_JSON_VALUE)
-    public HttpResult findList(@RequestBody FindMessagesReqVO findMessagesReqVO) {
-        return HttpResult.ok("查找消息集合", messageService.selectMessages(findMessagesReqVO));
-    }
-
 }

+ 4 - 3
sckw-modules/sckw-message/src/main/java/com/sckw/message/dao/KwmMessageMapper.java

@@ -1,8 +1,9 @@
 package com.sckw.message.dao;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.sckw.message.model.dto.SelectMessagesDTO;
 import com.sckw.message.model.KwmMessage;
+import com.sckw.message.model.dto.MessageListDTO;
+import com.sckw.message.model.dto.SelectMessagesDTO;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
@@ -20,7 +21,7 @@ public interface KwmMessageMapper extends BaseMapper<KwmMessage> {
      * @author: yzc
      * @date: 2023-06-13 9:11
      * @param item
-     * @return java.util.List<com.sckw.message.model.KwmMessage>
+     * @return java.util.List<com.sckw.message.model.dto.MessageListDTO>
      */
-    List<KwmMessage> findPage(@Param("item") SelectMessagesDTO item);
+    List<MessageListDTO> findPage(@Param("item") SelectMessagesDTO item);
 }

+ 5 - 0
sckw-modules/sckw-message/src/main/java/com/sckw/message/model/KwmMessageUser.java

@@ -28,6 +28,11 @@ public class KwmMessageUser extends BaseModel {
      */
     private Long msgId;
 
+    /**
+     * 一级企业id
+     */
+    private Long entId;
+
     /**
      * 用户id
      */

+ 91 - 0
sckw-modules/sckw-message/src/main/java/com/sckw/message/model/dto/MessageListDTO.java

@@ -0,0 +1,91 @@
+package com.sckw.message.model.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @author: yzc
+ * @date: 2023-06-08 15:44
+ * @description: 消息列表dto
+ */
+@Getter
+@Setter
+@ToString
+public class MessageListDTO implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 4676530802038232669L;
+
+    /**
+     * kwm_message_user id
+     */
+    private Long id;
+
+    private Long entId;
+
+    private Long userId;
+
+    private Integer status;
+
+    private String remark;
+
+    private Long createBy;
+
+    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createTime;
+
+    private Long updateBy;
+
+    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date updateTime;
+
+    /**
+     * kwm_message id
+     */
+    private Long msgId;
+
+    /**
+     * 消息分类
+     */
+    private String category;
+
+    /**
+     * 消息类型
+     */
+    private String type;
+
+    /**
+     * 消息标题
+     */
+    private String title;
+
+    /**
+     * 消息内容
+     */
+    private String content;
+
+    /**
+     * 消息跳转url
+     */
+    private String url;
+
+    /**
+     * 消息跳转参数
+     */
+    private String params;
+
+    /**
+     * 推送设备类型
+     */
+    private String clientType;
+
+    private String msgRemark;
+
+
+}

+ 7 - 2
sckw-modules/sckw-message/src/main/java/com/sckw/message/model/dto/SelectMessagesDTO.java

@@ -19,6 +19,11 @@ import java.util.Date;
 @Builder
 public class SelectMessagesDTO {
 
+    /**
+     * 一级企业id
+     */
+    private Long entId;
+
     /**
      * 用户id
      */
@@ -30,9 +35,9 @@ public class SelectMessagesDTO {
     private String category;
 
     /**
-     * 消息类型
+     * 消息状态(0未读,1已读)
      */
-    private String type;
+    private Integer status;
 
     /**
      * 创建时间开始(yyyy-MM-dd HH:mm:ss)

+ 4 - 13
sckw-modules/sckw-message/src/main/java/com/sckw/message/model/vo/req/ReadMessagesReqVO.java

@@ -1,11 +1,10 @@
 package com.sckw.message.model.vo.req;
 
+import jakarta.validation.constraints.NotBlank;
 import lombok.Getter;
 import lombok.Setter;
 import lombok.ToString;
 
-import java.util.List;
-
 /**
  * @desc: 读取消息请求参数
  * @author: yzc
@@ -16,20 +15,12 @@ import java.util.List;
 @ToString
 public class ReadMessagesReqVO {
 
-    /**
-     * 消息分类
-     */
-    private String category;
-
-    /**
-     * 消息类型
-     */
-    private String type;
 
     /**
-     * 消息id集合 不传则更新全部为已读
+     * 消息ids
      */
-    private List<Long> msgIds;
+    @NotBlank(message = "消息ids不能为空")
+    private String ids;
 
 
 }

+ 6 - 3
sckw-modules/sckw-message/src/main/java/com/sckw/message/model/vo/req/SelectMessagesReqVO.java

@@ -1,5 +1,6 @@
 package com.sckw.message.model.vo.req;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.sckw.core.model.page.PageRequest;
 import lombok.Getter;
 import lombok.Setter;
@@ -18,23 +19,25 @@ import java.util.Date;
 public class SelectMessagesReqVO extends PageRequest {
 
     /**
-     * 消息
+     * 消息类
      */
     private String category;
 
     /**
-     * 消息类型
+     * 消息状态(0未读,1已读)
      */
-    private String type;
+    private Integer status;
 
     /**
      * 创建时间开始(yyyy-MM-dd HH:mm:ss)
      */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date startCreateTime;
 
     /**
      * 创建时间结束(yyyy-MM-dd HH:mm:ss)
      */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date endCreateTime;
 
 

+ 0 - 5
sckw-modules/sckw-message/src/main/java/com/sckw/message/model/vo/req/StatisticsMessagesReqVO.java

@@ -21,11 +21,6 @@ public class StatisticsMessagesReqVO {
      */
     private String category;
 
-    /**
-     * 消息类型
-     */
-    private String type;
-
     /**
      * 创建时间开始(yyyy-MM-dd HH:mm:ss)
      */

+ 10 - 14
sckw-modules/sckw-message/src/main/java/com/sckw/message/model/vo/res/KwmMessageListResVO.java

@@ -28,10 +28,7 @@ public class KwmMessageListResVO {
      */
     private String category;
 
-    /**
-     * 消息类型
-     */
-    private String type;
+    private String categoryLabel;
 
     /**
      * 消息标题
@@ -49,25 +46,24 @@ public class KwmMessageListResVO {
     private String url;
 
     /**
-     * 消息跳转参数
+     * 创建时间
      */
-    private String params;
+    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createTime;
 
     /**
-     * 推送设备类型
+     * 提交人
      */
-    private String clientType;
+    private Long creatBy;
 
     /**
-     * 创建时间
+     * 提交人姓名
      */
-    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
-    private Date createTime;
+    private String createByName;
 
     /**
-     * 更新时间
+     * 提交人部门
      */
-    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
-    private Date updateTime;
+    private String createByDept;
 
 }

+ 4 - 3
sckw-modules/sckw-message/src/main/java/com/sckw/message/service/KwmMessageService.java

@@ -6,8 +6,9 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.sckw.core.utils.CollectionUtils;
 import com.sckw.core.utils.StringUtils;
 import com.sckw.message.dao.KwmMessageMapper;
-import com.sckw.message.model.dto.SelectMessagesDTO;
 import com.sckw.message.model.KwmMessage;
+import com.sckw.message.model.dto.MessageListDTO;
+import com.sckw.message.model.dto.SelectMessagesDTO;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
@@ -91,12 +92,12 @@ public class KwmMessageService {
 
     /**
      * @param dto
-     * @return java.util.List<com.sckw.message.model.KwmMessage>
+     * @return java.util.List<com.sckw.message.model.dto.MessageListDTO>
      * @desc: 分页查询
      * @author: yzc
      * @date: 2023-06-13 9:08
      */
-    public List<KwmMessage> findPage(SelectMessagesDTO dto) {
+    public List<MessageListDTO> findPage(SelectMessagesDTO dto) {
         return kwmMessageMapper.findPage(dto);
     }
 

+ 44 - 0
sckw-modules/sckw-message/src/main/java/com/sckw/message/service/KwmMessageUserService.java

@@ -2,7 +2,9 @@ package com.sckw.message.service;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.sckw.core.model.constant.Global;
 import com.sckw.core.utils.CollectionUtils;
+import com.sckw.core.web.context.LoginUserHolder;
 import com.sckw.message.dao.KwmMessageUserMapper;
 import com.sckw.message.model.KwmMessageUser;
 import lombok.RequiredArgsConstructor;
@@ -11,6 +13,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
+import java.util.Objects;
 
 /**
  * @desc: 用户消息相关service
@@ -106,4 +109,45 @@ public class KwmMessageUserService {
                 .eq(KwmMessageUser::getDelFlag, 0).last("LIMIT 1");
         return kwmMessageUserMapper.selectOne(wrapper);
     }
+
+    /**
+     * @desc: 根据msgIds获取
+     * @author: yzc
+     * @date: 2023-09-04 11:50
+     * @Param ids:
+     * @return: java.util.List<com.sckw.message.model.KwmMessageUser>
+     */
+    public List<KwmMessageUser> getByMsgIds(List<Long> ids) {
+        LambdaQueryWrapper<KwmMessageUser> wrapper = new LambdaQueryWrapper<>();
+        wrapper.in(KwmMessageUser::getId, ids)
+                .eq(KwmMessageUser::getDelFlag, Global.NO);
+        Integer isMain = LoginUserHolder.getIsMain();
+        if (Objects.equals(isMain, 1)) {
+            wrapper.eq(KwmMessageUser::getEntId, LoginUserHolder.getEntId());
+        } else {
+            wrapper.eq(KwmMessageUser::getUserId, LoginUserHolder.getUserId());
+        }
+        List<KwmMessageUser> list = kwmMessageUserMapper.selectList(wrapper);
+        return CollectionUtils.emptyIfNull(list);
+    }
+
+    /**
+     * @desc: 根据msgIds更新状态
+     * @author: yzc
+     * @date: 2023-09-04 11:56
+     * @Param ids:
+     * @return: void
+     */
+    public void readByMsgIds(List<Long> ids) {
+        LambdaUpdateWrapper<KwmMessageUser> wrapper = new LambdaUpdateWrapper<>();
+        wrapper.set(KwmMessageUser::getStatus, Global.YES)
+                .in(KwmMessageUser::getId, ids);
+        Integer isMain = LoginUserHolder.getIsMain();
+        if (Objects.equals(isMain, 1)) {
+            wrapper.eq(KwmMessageUser::getEntId, LoginUserHolder.getEntId());
+        } else {
+            wrapper.eq(KwmMessageUser::getUserId, LoginUserHolder.getUserId());
+        }
+        kwmMessageUserMapper.update(null, wrapper);
+    }
 }

+ 44 - 51
sckw-modules/sckw-message/src/main/java/com/sckw/message/service/MessageService.java

@@ -1,5 +1,8 @@
 package com.sckw.message.service;
 
+import com.sckw.core.common.enums.enums.DictEnum;
+import com.sckw.core.common.enums.enums.DictTypeEnum;
+import com.sckw.core.exception.BusinessException;
 import com.sckw.core.model.constant.Global;
 import com.sckw.core.model.vo.TableBottom;
 import com.sckw.core.model.vo.TableStatisticRes;
@@ -11,12 +14,18 @@ import com.sckw.core.web.context.LoginUserHolder;
 import com.sckw.message.enums.MsgStatusEnum;
 import com.sckw.message.model.KwmMessage;
 import com.sckw.message.model.KwmMessageUser;
+import com.sckw.message.model.dto.MessageListDTO;
 import com.sckw.message.model.dto.SelectMessagesDTO;
 import com.sckw.message.model.vo.req.*;
 import com.sckw.message.model.vo.res.KwmMessageListResVO;
 import com.sckw.message.model.vo.res.MessagesStatisticsResVO;
+import com.sckw.system.api.RemoteSystemService;
+import com.sckw.system.api.model.dto.res.EntCacheResDto;
+import com.sckw.system.api.model.dto.res.UserCacheResDto;
+import com.sckw.system.api.model.pojo.DeptInfoPojo;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.dubbo.config.annotation.DubboReference;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -36,31 +45,9 @@ public class MessageService {
     private final KwmMessageService kwmMessageService;
     private final KwmMessageUserService kwmMessageUserService;
 
+    @DubboReference(version = "1.0.0", group = "design", check = false)
+    private RemoteSystemService remoteSystemService;
 
-    /**
-     * @param params
-     * @return java.util.List<com.sckw.message.model.KwmMessage>
-     * @desc: 查询消息列表
-     * @author: yzc
-     * @date: 2023-06-09 14:21
-     */
-    public List<KwmMessage> selectMessages(FindMessagesReqVO params) {
-        List<KwmMessageUser> messageUsers = kwmMessageUserService.getByUserId(LoginUserHolder.getUserId());
-        Map<Long, KwmMessageUser> map = messageUsers.stream().collect(Collectors.toMap(KwmMessageUser::getMsgId, e -> e, (k1, k2) -> k1));
-        if (CollectionUtils.isEmpty(map)) {
-            return Collections.emptyList();
-        }
-        List<Long> msgIds = map.keySet().stream().toList();
-        List<KwmMessage> list = kwmMessageService.getList(msgIds, params.getCategory(), params.getType(), null);
-        list.forEach(e -> {
-            KwmMessageUser messageUser = map.get(e.getId());
-            e.setStatus(messageUser.getStatus());
-            e.setCreateTime(messageUser.getCreateTime());
-            e.setUpdateTime(messageUser.getUpdateTime());
-            e.setUpdateBy(messageUser.getUpdateBy());
-        });
-        return list;
-    }
 
     /**
      * @param reqVO
@@ -71,25 +58,12 @@ public class MessageService {
      */
     @Transactional(rollbackFor = Exception.class)
     public void read(ReadMessagesReqVO reqVO) {
-        Long userId = LoginUserHolder.getUserId();
-        List<Long> msgIds = kwmMessageUserService.getMsgIdsByUserId(userId);
-        if (CollectionUtils.isEmpty(msgIds)) {
-            return;
-        }
-        List<Long> ids = reqVO.getMsgIds();
-        //msgIds不为空直接更新用户消息为已读
-        if (CollectionUtils.isNotEmpty(ids)) {
-            List<Long> list = ids.stream().filter(msgIds::contains).toList();
-            kwmMessageUserService.readByUserAndMsgIds(userId, list);
-        } else {
-            //msgIds为空根据category及type更新用户消息为已读
-            List<KwmMessage> messageList = kwmMessageService.getList(msgIds, reqVO.getCategory(), reqVO.getType(), 0);
-            if (CollectionUtils.isEmpty(messageList)) {
-                return;
-            }
-            List<Long> updateMsgIds = messageList.stream().map(KwmMessage::getId).toList();
-            kwmMessageUserService.readByUserAndMsgIds(userId, updateMsgIds);
+        List<Long> ids = StringUtils.splitStrToList(reqVO.toString(), Long.class);
+        List<KwmMessageUser> msgList = kwmMessageUserService.getByMsgIds(ids);
+        if (!Objects.equals(ids.size(), msgList.size())) {
+            throw new BusinessException("无权限读取消息!");
         }
+        kwmMessageUserService.readByMsgIds(ids);
     }
 
     /**
@@ -131,15 +105,34 @@ public class MessageService {
      */
     public List<KwmMessageListResVO> select(SelectMessagesReqVO reqVO) {
         SelectMessagesDTO dto = BeanUtils.copyProperties(reqVO, SelectMessagesDTO.class);
-        dto.setUserId(LoginUserHolder.getUserId());
-        List<KwmMessage> list = kwmMessageService.findPage(dto);
+        //当前登录人是企业管理员则查看全部消息,否则只查看对应用户消息
+        Integer isMain = LoginUserHolder.getIsMain();
+        if (Objects.equals(isMain, 1)) {
+            dto.setEntId(LoginUserHolder.getEntId());
+        } else {
+            dto.setUserId(LoginUserHolder.getUserId());
+        }
+        List<MessageListDTO> list = kwmMessageService.findPage(dto);
         if (CollectionUtils.isEmpty(list)) {
             return Collections.emptyList();
         }
+        List<Long> userIds = list.stream().map(MessageListDTO::getCreateBy).toList();
+        Map<Long, UserCacheResDto> map = remoteSystemService.queryUserCacheMapByIds(userIds);
         List<KwmMessageListResVO> result = new ArrayList<>(list.size());
         list.forEach(e -> {
+            UserCacheResDto user = map.get(e.getCreateBy());
             KwmMessageListResVO res = BeanUtils.copyProperties(e, KwmMessageListResVO.class);
             res.setStatusLabel(MsgStatusEnum.getNameByCode(res.getStatus()));
+            res.setCategoryLabel(DictEnum.getLabel(DictTypeEnum.MSG_CATEGORY.getType(), e.getCategory()));
+            if (Objects.nonNull(user)) {
+                res.setCreateByName(user.getName());
+                EntCacheResDto entInfo = user.getEntInfo();
+                if (Objects.nonNull(entInfo)) {
+                    //司机有企业信息,没有部门信息
+                    List<DeptInfoPojo> deptInfo = entInfo.getDeptInfo();
+                    res.setCreateByDept(CollectionUtils.isEmpty(deptInfo) ? "司机" : deptInfo.get(0).getName());
+                }
+            }
             result.add(res);
         });
         return result;
@@ -201,15 +194,15 @@ public class MessageService {
      */
     @Transactional(rollbackFor = Exception.class)
     public KwmMessage detail(Long id) {
-        Long userId = LoginUserHolder.getUserId();
-        KwmMessageUser messageUser = kwmMessageUserService.getByMsgIdAndUserId(id, userId);
-        if (Objects.isNull(messageUser)) {
+        List<Long> ids = Collections.singletonList(id);
+        List<KwmMessageUser> msgList = kwmMessageUserService.getByMsgIds(ids);
+        if (CollectionUtils.isEmpty(msgList)) {
             return KwmMessage.builder().build();
         }
-        KwmMessage message = kwmMessageService.getById(id);
-        List<Long> ids = Collections.singletonList(id);
+        KwmMessageUser kwmMessageUser = msgList.get(0);
+        KwmMessage message = kwmMessageService.getById(kwmMessageUser.getMsgId());
         //更新用户消息为已读状态
-        kwmMessageUserService.readByUserAndMsgIds(userId, ids);
+        kwmMessageUserService.readByMsgIds(ids);
         return message;
     }
 
@@ -220,7 +213,7 @@ public class MessageService {
      * @Param params:
      * @return: com.sckw.core.model.vo.TableStatisticRes
      */
-    public TableStatisticRes statisticsList(StatisticsMessagesReqVO params) {
+    public TableStatisticRes statistics(StatisticsMessagesReqVO params) {
         TableStatisticRes res = new TableStatisticRes();
         List<KwmMessageListResVO> messages = this.select(BeanUtils.copyProperties(params, SelectMessagesReqVO.class));
         Map<Integer, List<KwmMessageListResVO>> map = messages.stream().collect(Collectors.groupingBy(KwmMessageListResVO::getStatus));

+ 13 - 11
sckw-modules/sckw-message/src/main/java/com/sckw/message/service/SckwMessageHandlerService.java

@@ -2,6 +2,7 @@ package com.sckw.message.service;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.nacos.shaded.com.google.common.collect.Lists;
+import com.sckw.core.utils.CollectionUtils;
 import com.sckw.core.utils.StringUtils;
 import com.sckw.message.model.KwmMessage;
 import com.sckw.message.model.KwmMessageUser;
@@ -9,12 +10,12 @@ import com.sckw.redis.constant.RedisConstant;
 import com.sckw.redis.utils.RedissonUtils;
 import com.sckw.stream.enums.MessageEnum;
 import com.sckw.stream.model.SckwMessage;
+import com.sckw.stream.model.UserInfo;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.Arrays;
 import java.util.List;
 
 /**
@@ -45,13 +46,14 @@ public class SckwMessageHandlerService {
             log.info("重复message消息:{},不处理", sckwMessage.getRequestId());
             return;
         }
-        String userIds = sckwMessage.getUserIds();
-        if (StringUtils.isBlank(userIds)) {
-            log.error("message消息处理用户id为空,不处理");
+        List<UserInfo> userInfos = sckwMessage.getUserInfos();
+        if (CollectionUtils.isEmpty(userInfos)) {
+            log.error("message消息处理用户信息为空,不处理");
             return;
         }
         //构建message对象
         MessageEnum messageEnum = sckwMessage.getMessageEnum();
+        Long createBy = sckwMessage.getCreateBy();
         String content = StringUtils.replaceTextVar(messageEnum.getContent(), sckwMessage.getParams());
         KwmMessage kwmMessage = KwmMessage.builder()
                 .category(messageEnum.getCategory())
@@ -62,19 +64,19 @@ public class SckwMessageHandlerService {
                 .url(sckwMessage.getMsgUrl())
                 .params(JSON.toJSONString(sckwMessage.getParams()))
                 .build();
-        kwmMessage.setCreateBy(sckwMessage.getCreateBy());
-        kwmMessage.setUpdateBy(sckwMessage.getCreateBy());
+        kwmMessage.setCreateBy(createBy);
+        kwmMessage.setUpdateBy(createBy);
         Long msgId = kwmMessageService.insert(kwmMessage);
         //多个用户id,构建多个KwmMessageUser对象保存
-        List<String> userIdList = Arrays.asList(userIds.split(","));
         List<KwmMessageUser> messageUsers = Lists.newArrayList();
-        userIdList.forEach(e -> {
+        userInfos.forEach(e -> {
             KwmMessageUser messageUser = KwmMessageUser.builder()
-                    .userId(Long.valueOf(e))
+                    .userId(e.getUserId())
+                    .entId(e.getEntId())
                     .msgId(msgId)
                     .build();
-            messageUser.setCreateBy(sckwMessage.getCreateBy());
-            messageUser.setUpdateBy(sckwMessage.getCreateBy());
+            messageUser.setCreateBy(createBy);
+            messageUser.setUpdateBy(createBy);
             messageUsers.add(messageUser);
         });
         kwmMessageUserService.batchSave(messageUsers);

+ 18 - 11
sckw-modules/sckw-message/src/main/resources/mapper/KwmMessageMapper.xml

@@ -2,21 +2,28 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.sckw.message.dao.KwmMessageMapper">
 
-  <select id="findPage" resultType="com.sckw.message.model.KwmMessage" >
+  <select id="findPage" resultType="com.sckw.message.model.dto.MessageListDTO" >
     select
-      m.id, m.category, m.type, m.title, m.content, m.url, m.params, m.client_type clientType, m.remark,
-      mu.status, m.create_by createBy, m.create_time createTime, m.update_by updateBy, m.update_time updateTime
-    from kwm_message m
-    left join kwm_message_user mu
-    on m.id = mu.msg_id
+      mu.id, mu.ent_id entId, mu.user_id userId, mu.status, mu.reamrk, mu.create_by createBy, mu.create_time createTime,
+      mu.update_by updateBy, mu.update_time updateTime, m.id as msgId, m.category, m.type, m.title, m.content, m.url,
+      m.params, m.client_type clientType, m.remark as msgRemark
+    from kwm_message_user mu
+    left join kwm_message m
+    on mu.msg_id = m.id
     <where>
-        m.del_flag = 0 and mu.del_flag = 0 and mu.user_id = #{item.userId}
+        m.del_flag = 0 and mu.del_flag = 0
+        <if test="item.entId != null">
+            and mu.ent_id = #{item.entId}
+        </if>
+        <if test="item.userId != null">
+            and mu.user_id = #{item.userId}
+        </if>
+        <if test="item.status != null">
+            and mu.status = #{item.status}
+        </if>
         <if test="item.category != null and item.category != ''">
           and m.category = #{item.category}
         </if>
-        <if test="item.type != null and item.type != ''">
-          and m.type = #{item.type}
-        </if>
         <if test="item.startCreateTime != null">
             and m.create_time &gt;= #{item.startCreateTime,jdbcType=TIMESTAMP}
         </if>
@@ -24,6 +31,6 @@
             and m.create_time &lt;= #{item.endCreateTime,jdbcType=TIMESTAMP}
         </if>
     </where>
-    ORDER BY m.status, m.create_time desc
+    ORDER BY m.create_time desc
   </select>
 </mapper>

+ 2 - 0
sckw-modules/sckw-message/src/main/resources/mapper/KwmMessageUserMapper.xml

@@ -7,6 +7,7 @@
         <trim prefix="(" suffix=")" suffixOverrides=",">
             id,
             msg_id,
+            ent_id,
             user_id,
             remark,
             status,
@@ -21,6 +22,7 @@
             <trim prefix="(" suffix=")" suffixOverrides=",">
                 #{item.id,jdbcType=BIGINT},
                 #{item.msgId,jdbcType=BIGINT},
+                #{item.entId,jdbcType=BIGINT},
                 #{item.userId,jdbcType=VARCHAR},
                 #{item.remark,jdbcType=VARCHAR},
                 #{item.status,jdbcType=INTEGER},

+ 22 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/dto/OrderCheckDTO.java

@@ -1,11 +1,13 @@
 package com.sckw.order.model.dto;
 
+import com.sckw.stream.model.UserInfo;
 import lombok.Getter;
 import lombok.Setter;
 import lombok.ToString;
 import lombok.experimental.Accessors;
 
 import java.math.BigDecimal;
+import java.util.List;
 
 /**
  * @desc: 订单校验参数dto
@@ -53,6 +55,16 @@ public class OrderCheckDTO {
      */
     private Long procureEntId;
 
+    /**
+     * 采购企业名称
+     */
+    private String procureFireName;
+
+    /**
+     * 采购企业联系人集合
+     */
+    private List<UserInfo> procureUsers;
+
     /**
      * 供应一级企业id
      */
@@ -62,6 +74,16 @@ public class OrderCheckDTO {
      */
     private Long supplyEntId;
 
+    /**
+     * 供应企业名称
+     */
+    private String supplyFireName;
+
+    /**
+     * 供应企业联系人集合
+     */
+    private List<UserInfo> supplyUsers;
+
     /**
      * 订单来源 1采购下单2代客下单
      */

+ 160 - 16
sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTradeOrderService.java

@@ -35,7 +35,10 @@ import com.sckw.product.api.model.GoodsDetail;
 import com.sckw.product.api.model.KwpGoods;
 import com.sckw.redis.constant.RedisConstant;
 import com.sckw.redis.utils.RedissonUtils;
+import com.sckw.stream.enums.MessageEnum;
 import com.sckw.stream.model.SckwBusSum;
+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;
@@ -45,11 +48,13 @@ import com.sckw.transport.api.dubbo.TransportDubboService;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboReference;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.cloud.stream.function.StreamBridge;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
 import java.util.*;
+import java.util.function.Function;
 import java.util.stream.Collectors;
 
 /**
@@ -88,6 +93,12 @@ public class KwoTradeOrderService {
     private final KwoTradeOrderContractService kwoTradeOrderContractService;
     private final KwoTradeOrderTrackService kwoTradeOrderTrackService;
 
+    @Value("${valet.order.list.url}")
+    private String valetOrderListUrl;
+
+    @Value("${purchase.order.list.url}")
+    private String purchaseOrderListUrl;
+
     /**
      * @desc: 采购下单草稿
      * @author: yzc
@@ -250,11 +261,11 @@ public class KwoTradeOrderService {
         if (Objects.isNull(goodsInfo.getPriceRangeId())) {
             throw new BusinessException("采购下单价格梯度信息不能为空!");
         }
-        OrderCheckDTO orderCheckDTO = BeanUtils.copyProperties(param, OrderCheckDTO.class);
-        getTopEnt(orderCheckDTO, param.getUnitInfo());
-        orderCheckDTO.setGoodsId(goodsInfo.getGoodsId()).setUnitPrice(goodsInfo.getUnitPrice())
+        OrderCheckDTO orderCheck = BeanUtils.copyProperties(param, OrderCheckDTO.class);
+        getTopEnt(orderCheck, param.getUnitInfo());
+        orderCheck.setGoodsId(goodsInfo.getGoodsId()).setUnitPrice(goodsInfo.getUnitPrice())
                 .setOrderSource(DictEnum.TORDER_SOURCE_1.getValue());
-        orderCheck(orderCheckDTO, false);
+        orderCheck(orderCheck, false);
         KwoTradeOrder order = BeanUtils.copyProperties(param, KwoTradeOrder.class);
         order.setEntId(LoginUserHolder.getEntId()).setTOrderNo(getOrderNo())
                 .setUnit(param.getGoodsInfo().getUnit()).setSource(DictEnum.TORDER_SOURCE_1.getValue())
@@ -265,21 +276,94 @@ public class KwoTradeOrderService {
         if (!Objects.equals(HttpStatus.SUCCESS_CODE, updateResult.getCode())) {
             throw new BusinessException(updateResult.getMsg());
         }
+        //添加订单其他信息
         addOtherOrderInfo(order, BeanUtils.copyProperties(param, ValetOrderParam.class), false);
-        //TODO:发送提醒消息
+        //发送消息提醒
+        submitOrderSendMsg(orderCheck, order.getTOrderNo());
+    }
+
+    /**
+     * @desc: 提交订单发送message
+     * @author: yzc
+     * @date: 2023-09-01 14:35
+     * @Param orderCheck:
+     * @Param orderNo:
+     * @return: void
+     */
+    private void submitOrderSendMsg(OrderCheckDTO orderCheck, String orderNo) {
+        Map<String, Object> map = new HashMap<>();
+        map.put("orderNo", orderNo);
+        //提交人信息
+        List<UserInfo> userInfos = new ArrayList<>();
+        UserInfo createUser = new UserInfo();
+        createUser.setUserId(LoginUserHolder.getUserId()).setEntId(LoginUserHolder.getEntId());
+        userInfos.add(createUser);
+
+        boolean flag = Objects.equals(orderCheck.getOrderSource(), DictEnum.TORDER_SOURCE_1.getValue());
+        //采购下单
+        if (flag) {
+            //给创建人发消息
+            map.put("firmName", orderCheck.getSupplyFireName());
+            SckwMessage msg = new SckwMessage();
+            msg.setRequestId(UUIDUtils.get32UUID())
+                    .setMessageEnum(MessageEnum.ORDER_INITIATE_PURCHASE)
+                    .setParams(map)
+                    .setMsgUrl(purchaseOrderListUrl)
+                    .setUserInfos(userInfos)
+                    .setCreateBy(LoginUserHolder.getUserId());
+            log.info("发起采购下单消息:{}", JSON.toJSONString(msg));
+            streamBridge.send("sckw-message", JSON.toJSONString(msg));
+            //给供应企业联系人发消息
+            map.put("firmName", orderCheck.getProcureFireName());
+            SckwMessage contactsMsg = new SckwMessage();
+            contactsMsg.setRequestId(UUIDUtils.get32UUID())
+                    .setMessageEnum(MessageEnum.ORDER_NEW_PENDING)
+                    .setParams(map)
+                    .setMsgUrl(valetOrderListUrl)
+                    .setUserInfos(orderCheck.getSupplyUsers())
+                    .setCreateBy(LoginUserHolder.getUserId());
+            log.info("有新的待受理订单消息:{}", JSON.toJSONString(contactsMsg));
+            streamBridge.send("sckw-message", JSON.toJSONString(contactsMsg));
+        } else {
+            //代客下单
+            //给创建人发消息
+            map.put("firmName", orderCheck.getProcureFireName());
+            SckwMessage msg = new SckwMessage();
+            msg.setRequestId(UUIDUtils.get32UUID())
+                    .setMessageEnum(MessageEnum.ORDER_INITIATE_SALE)
+                    .setParams(map)
+                    .setMsgUrl(valetOrderListUrl)
+                    .setUserInfos(userInfos)
+                    .setCreateBy(LoginUserHolder.getUserId());
+            log.info("发起代客下单消息:{}", JSON.toJSONString(msg));
+            streamBridge.send("sckw-message", JSON.toJSONString(msg));
+            //给采购企业联系人发消息
+            map.put("firmName", orderCheck.getSupplyFireName());
+            SckwMessage contactsMsg = new SckwMessage();
+            contactsMsg.setRequestId(UUIDUtils.get32UUID())
+                    .setMessageEnum(MessageEnum.ORDER_NEW_VALET_MSG)
+                    .setParams(map)
+                    .setMsgUrl(purchaseOrderListUrl)
+                    .setUserInfos(orderCheck.getSupplyUsers())
+                    .setCreateBy(LoginUserHolder.getUserId());
+            log.info("有新的代客下单消息:{}", JSON.toJSONString(contactsMsg));
+            streamBridge.send("sckw-message", JSON.toJSONString(contactsMsg));
+        }
     }
 
     /**
      * @desc: 获取采购销售顶级企业id
      * @author: yzc
      * @date: 2023-07-25 10:03
-     * @Param orderCheckDTO:
+     * @Param orderCheck:
      * @Param unitInfo:
      * @return: void
      */
-    private void getTopEnt(OrderCheckDTO orderCheckDTO, List<UnitInfo> unitInfo) {
+    private void getTopEnt(OrderCheckDTO orderCheck, List<UnitInfo> unitInfo) {
         List<Long> entIds = unitInfo.stream().map(UnitInfo::getEntId).toList();
         Map<Long, EntCacheResDto> entMap = remoteSystemService.queryEntTreeByIds(entIds);
+        List<UserInfo> procureUsers = new ArrayList<>();
+        List<UserInfo> supplyUsers = new ArrayList<>();
         unitInfo.forEach(e -> {
             Long entId = e.getEntId();
             EntCacheResDto ent = entMap.get(entId);
@@ -288,13 +372,22 @@ public class KwoTradeOrderService {
                 throw new BusinessException("一级企业信息不存在!");
             }
             if (Objects.equals(e.getUnitType(), DictEnum.TORDER_UNIT_TYPE_1.getValue())) {
-                orderCheckDTO.setProcureTopEntId(ent.getId());
-                orderCheckDTO.setProcureEntId(entId);
+                UserInfo procureUser = new UserInfo();
+                orderCheck.setProcureTopEntId(ent.getId());
+                orderCheck.setProcureEntId(entId);
+                orderCheck.setProcureFireName(e.getFirmName());
+                procureUser.setUserId(e.getContactsId()).setEntId(ent.getId());
+                procureUsers.add(procureUser);
             } else {
-                orderCheckDTO.setSupplyTopEntId(ent.getId());
-                orderCheckDTO.setSupplyEntId(entId);
+                UserInfo supplyUser = new UserInfo();
+                orderCheck.setSupplyTopEntId(ent.getId());
+                orderCheck.setSupplyEntId(entId);
+                orderCheck.setSupplyFireName(e.getFirmName());
+                supplyUser.setUserId(e.getContactsId()).setEntId(ent.getId());
+                supplyUsers.add(supplyUser);
             }
         });
+        orderCheck.setProcureUsers(procureUsers).setSupplyUsers(supplyUsers);
     }
 
     /**
@@ -388,7 +481,8 @@ public class KwoTradeOrderService {
             throw new BusinessException(updateResult.getMsg());
         }
         addOtherOrderInfo(order, BeanUtils.copyProperties(param, ValetOrderParam.class), false);
-        //TODO:发送提醒消息
+        //发送消息提醒
+        submitOrderSendMsg(orderCheck, order.getTOrderNo());
     }
 
 
@@ -580,6 +674,7 @@ public class KwoTradeOrderService {
                 && kwoTradeOrderUnitService.entMatch(param.getId(), LoginUserHolder.getEntId(), source)) {
             throw new BusinessException("无权限修改此订单!");
         }
+        OrderCheckDTO orderCheck = new OrderCheckDTO();
         if (Objects.equals(param.getOperateType(), 1)) {
             checkParams(param, source);
             if (Objects.equals(source, DictEnum.TORDER_SOURCE_1.getValue())) {
@@ -597,7 +692,7 @@ public class KwoTradeOrderService {
                     throw new BusinessException("Invalid contract status");
                 }
             }
-            OrderCheckDTO orderCheck = BeanUtils.copyProperties(param, OrderCheckDTO.class);
+            orderCheck = BeanUtils.copyProperties(param, OrderCheckDTO.class);
             getTopEnt(orderCheck, param.getUnitInfo());
             orderCheck.setGoodsId(param.getGoodsInfo().getGoodsId()).setUnitPrice(param.getGoodsInfo().getUnitPrice())
                     .setOrderSource(source);
@@ -616,9 +711,9 @@ public class KwoTradeOrderService {
         ValetOrderParam valetOrderParam = BeanUtils.copyProperties(param, ValetOrderParam.class);
 
         addOtherOrderInfo(order, valetOrderParam, true);
-        //TODO:发送提醒消息
+        //订单提交发送提醒消息
         if (Objects.equals(param.getOperateType(), 1)) {
-
+            submitOrderSendMsg(orderCheck, order.getTOrderNo());
         }
     }
 
@@ -843,7 +938,56 @@ public class KwoTradeOrderService {
         updateParam.setTOrderId(order.getId()).setStatus(order.getStatus()).setUpdateBy(LoginUserHolder.getUserId())
                 .setUpdateByName(LoginUserHolder.getUserName()).setUpdateTime(new Date());
         saveMongoDb(3, updateParam);
-        //TODO:发送提醒消息
+        //发送提醒消息
+        List<KwoTradeOrderUnit> units = kwoTradeOrderUnitService.getByOrderId(order.getId());
+        rejectOrderSendMsg(units, order);
+    }
+
+    /**
+     * @desc: 驳回订单发送消息
+     * @author: yzc
+     * @date: 2023-09-04 16:44
+     * @Param units:
+     * @Param order:
+     * @return: void
+     */
+    private void rejectOrderSendMsg(List<KwoTradeOrderUnit> units, KwoTradeOrder order) {
+        Map<String, KwoTradeOrderUnit> unitMap = units.stream().collect
+                (Collectors.toMap(KwoTradeOrderUnit::getUnitType, Function.identity()));
+        Map<String, Object> map = new HashMap<>();
+        map.put("orderNo", order.getTOrderNo());
+
+        //给供应企业联系人发消息
+        List<UserInfo> purchaseUsers = new ArrayList<>();
+        UserInfo purchaseUser = new UserInfo();
+        KwoTradeOrderUnit purchase = unitMap.get(DictEnum.TORDER_UNIT_TYPE_1.getValue());
+        purchaseUser.setUserId(purchase.getContactsId()).setEntId(purchase.getTopEntId());
+        purchaseUsers.add(purchaseUser);
+        SckwMessage contactsMsg = new SckwMessage();
+        map.put("firmName", purchase.getFirmName());
+        contactsMsg.setRequestId(UUIDUtils.get32UUID())
+                .setMessageEnum(MessageEnum.ORDER_REJECT_VALET)
+                .setParams(map)
+                .setMsgUrl(valetOrderListUrl)
+                .setUserInfos(purchaseUsers)
+                .setCreateBy(LoginUserHolder.getUserId());
+        log.info("驳回采购订单消息:{}", JSON.toJSONString(contactsMsg));
+        streamBridge.send("sckw-message", JSON.toJSONString(contactsMsg));
+        //给订单创建人发消息
+        List<UserInfo> userInfos = new ArrayList<>();
+        UserInfo createUser = new UserInfo();
+        createUser.setUserId(order.getCreateBy()).setEntId(order.getEntId());
+        userInfos.add(createUser);
+        map.put("firmName", unitMap.get(DictEnum.TORDER_UNIT_TYPE_2.getValue()).getFirmName());
+        SckwMessage msg = new SckwMessage();
+        msg.setRequestId(UUIDUtils.get32UUID())
+                .setMessageEnum(MessageEnum.ORDER_REJECT_PURCHASE)
+                .setParams(map)
+                .setMsgUrl(purchaseOrderListUrl)
+                .setUserInfos(userInfos)
+                .setCreateBy(LoginUserHolder.getUserId());
+        log.info("采购订单被驳回消息:{}", JSON.toJSONString(msg));
+        streamBridge.send("sckw-message", JSON.toJSONString(msg));
     }
 
     /**

+ 16 - 0
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/dto/LedgerLogisticsDto.java

@@ -70,7 +70,23 @@ public class LedgerLogisticsDto implements ILedger {
      */
     private String trading;
     private String tradingLabel;
+    /**
+     * 对账托运方财务联系人电话
+     */
+    private String auditPhone;
 
+    /**
+     * 对账托运方财务联系人名称
+     */
+    private String auditUser;
+    /**
+     * 对账承运方财务联系人名称
+     */
+    private String successUser;
+    /**
+     * 对账承运方财务联系人电话
+     */
+    private String successPhone;
 
     /**
      * 总应收/元

+ 8 - 0
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/dto/LedgerTradeDto.java

@@ -85,6 +85,14 @@ public class LedgerTradeDto implements ILedger {
      * 对账采购财务联系人名称
      */
     private String auditUser;
+    /**
+     * 对账销售财务联系人名称
+     */
+    private String successUser;
+    /**
+     * 对账销售财务联系人电话
+     */
+    private String successPhone;
 
     /**
      * 对账清单凭证

+ 6 - 0
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/vo/res/LedgerLogisticsDetailVo.java

@@ -43,5 +43,11 @@ public class LedgerLogisticsDetailVo {
     private List<LogisticsOrderDTO> orderList = new ArrayList<>();
     private String remark;
 
+    /**
+     * 承运方或托运方财务联系人信息
+     */
+    private String user;
+    private String phone;
+
 
 }

+ 5 - 0
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/vo/res/LedgerTradeDetailVo.java

@@ -41,5 +41,10 @@ public class LedgerTradeDetailVo {
 
     private List<OrderDto> orderList;
     private String remark;
+    /**
+     * 销售联系人或采购联系人信息
+     */
+    private String phone;
+    private String user;
 
 }

+ 11 - 1
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpLedgerLogisticsService.java

@@ -604,7 +604,17 @@ public class KwpLedgerLogisticsService extends AbsLedger {
     public LedgerLogisticsDetailVo queryDetail(Long id, Integer unitType) {
         LedgerLogisticsDto ledgerLogisticsDto = logisticsMapper.selectId(id, unitType);
         orderCheck(ledgerLogisticsDto);
-        return getLedgerLogisticsDetailVo(ledgerLogisticsDto);
+        LedgerLogisticsDetailVo detailVo = getLedgerLogisticsDetailVo(ledgerLogisticsDto);
+        //1-托运方 展示
+        if (unitType == 1) {
+            detailVo.setUser(ledgerLogisticsDto.getAuditUser());
+            detailVo.setPhone(ledgerLogisticsDto.getAuditPhone());
+        } else {
+            //对账发起方
+            detailVo.setUser(ledgerLogisticsDto.getSuccessUser());
+            detailVo.setPhone(ledgerLogisticsDto.getSuccessPhone());
+        }
+        return detailVo;
     }
 
     /**

+ 10 - 1
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpLedgerTradeService.java

@@ -714,7 +714,16 @@ public class KwpLedgerTradeService extends AbsLedger {
         LedgerTradeDto ledgerTradeDto = tradeMapper.selectId(id, unitType);
         orderCheck(ledgerTradeDto);
         //查询对账单关联的贸易订单
-        return getDetail(ledgerTradeDto);
+        LedgerTradeDetailVo detail = getDetail(ledgerTradeDto);
+        //1-采购(销售方查询数据,展示)
+        if (unitType == 1) {
+            detail.setUser(ledgerTradeDto.getAuditUser());
+            detail.setPhone(ledgerTradeDto.getAuditPhone());
+        } else {
+            detail.setUser(ledgerTradeDto.getSuccessUser());
+            detail.setPhone(ledgerTradeDto.getSuccessPhone());
+        }
+        return detail;
     }
 
     public PageRes<OrderDto> orderList(LedgerListReq ledgerListReq) {

+ 6 - 4
sckw-modules/sckw-payment/src/main/resources/mapper/KwpLedgerLogisticsMapper.xml

@@ -151,13 +151,15 @@
         order by kll.generate_time desc
     </select>
     <select id="countSum" resultType="com.sckw.payment.model.vo.res.LedgerCountSumVo">
-        select count(1)             "ledgerCount",
-        sum(kll.total_price) "totalPrice"
+        select IFNULL(count(1), 0)  "ledgerCount",
+               sum(kll.total_price) "totalPrice"
         from kwp_ledger_logistics kll
                  inner join kwp_ledger_logistics_unit kllu
-                            on kll.id = kllu.l_ledger_id and kllu.del_flag = 0 and kllu.unit_type = #{logisticsReq.unitType,jdbcType=INTEGER}
+                            on kll.id = kllu.l_ledger_id and kllu.del_flag = 0 and
+                               kllu.unit_type = #{logisticsReq.unitType,jdbcType=INTEGER}
                  inner join kwp_ledger_logistics_unit kllu2
-                            on kll.id = kllu2.l_ledger_id and kllu2.del_flag = 0 and kllu2.unit_type = #{logisticsReq.unitTypeTwo,jdbcType=INTEGER}
+                            on kll.id = kllu2.l_ledger_id and kllu2.del_flag = 0 and
+                               kllu2.unit_type = #{logisticsReq.unitTypeTwo,jdbcType=INTEGER}
         <where>
             kll.del_flag = 0
               and kllu2.top_ent_id = #{logisticsReq.entId,jdbcType=BIGINT}

+ 3 - 1
sckw-modules/sckw-payment/src/main/resources/mapper/KwpLedgerTradeMapper.xml

@@ -197,7 +197,7 @@
         order by klt.generate_time desc
     </select>
     <select id="countSum" resultType="com.sckw.payment.model.vo.res.LedgerCountSumVo">
-        select count(1)             "ledgerCount",
+        select IFNULL(count(1), 0)  "ledgerCount",
                sum(klt.total_price) "totalPrice"
         from kwp_ledger_trade klt
                  inner join kwp_ledger_trade_unit kltu
@@ -362,6 +362,8 @@
                klt.actual_price  actualPrice,
                klt.audit_phone   auditPhone,
                klt.audit_user    auditUser,
+               klt.success_user    successUser,
+               klt.success_phone    successPhone,
                klt.url,
                klt.generate_time generateTime,
                klt.receipt_time  receiptTime,

+ 12 - 0
sckw-modules/sckw-product/src/main/java/com/sckw/product/controller/KwpGoodsController.java

@@ -223,4 +223,16 @@ public class KwpGoodsController {
     public HttpResult nameDuplicationJudgment(@RequestParam String name, @RequestParam Long supplyEntId) {
         return HttpResult.ok("商品名称判重成功", kwpGoodsService.nameDuplicationJudgment(name, supplyEntId, null));
     }
+
+    /**
+     * @desc: 获取商品价格
+     * @author: yzc
+     * @date: 2023-09-05 10:54
+     * @Param param:
+     * @return: com.sckw.core.web.response.HttpResult
+     */
+    @PostMapping(value = "/getPrice", produces = MediaType.APPLICATION_JSON_VALUE)
+    public HttpResult getPrice(@RequestBody @Validated GetPriceParam param) {
+        return HttpResult.ok("获取商品价格成功", kwpGoodsService.getPrice(param));
+    }
 }

+ 28 - 0
sckw-modules/sckw-product/src/main/java/com/sckw/product/model/vo/req/GetPriceParam.java

@@ -0,0 +1,28 @@
+package com.sckw.product.model.vo.req;
+
+import jakarta.validation.constraints.DecimalMin;
+import jakarta.validation.constraints.NotNull;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+
+import java.math.BigDecimal;
+
+/**
+ * @desc: 获取价格请求参数
+ * @author: yzc
+ * @date: 2023-09-05 10:03
+ */
+@Getter
+@Setter
+@ToString
+public class GetPriceParam {
+
+    @NotNull(message = "商品id不能为空")
+    private Long goodsId;
+
+    @NotNull(message = "订单数量不能为空")
+    @DecimalMin(value = "0.01",message = "订单数量必须大于零")
+    private BigDecimal num;
+
+}

+ 35 - 2
sckw-modules/sckw-product/src/main/java/com/sckw/product/service/KwpGoodsService.java

@@ -243,7 +243,9 @@ public class KwpGoodsService {
         List<KwpGoodsPriceRange> priceRanges = kwpGoodsPriceRangeService.getByGoodsId(id);
         List<GoodsPriceRangesDetail> ranges = BeanUtils.copyToList(priceRanges, GoodsPriceRangesDetail.class);
         ranges.stream().filter(r -> r.getEndAmount().compareTo(new BigDecimal("-1.00")) == 0)
-                .forEach(r -> {r.setEndAmountLabel("不限");});
+                .forEach(r -> {
+                    r.setEndAmountLabel("不限");
+                });
         //商品属性信息
         List<KwpGoodsAttribute> attributesList = kwpGoodsAttributeService.getByGoodsId(id);
         List<GoodsAttributesDetail> attributes = BeanUtils.copyToList(attributesList, GoodsAttributesDetail.class);
@@ -1018,8 +1020,39 @@ public class KwpGoodsService {
      */
     public Long getCountBySupplyEnt(Long supplyEntId) {
         LambdaQueryWrapper<KwpGoods> wrapper = new LambdaQueryWrapper<>();
-        wrapper.eq(KwpGoods::getSupplyEntId,supplyEntId).eq(KwpGoods::getDelFlag, Global.NO).
+        wrapper.eq(KwpGoods::getSupplyEntId, supplyEntId).eq(KwpGoods::getDelFlag, Global.NO).
                 ne(KwpGoods::getStatus, GoodsStatusEnum.SAVED.getCode());
         return kwpGoodsMapper.selectCount(wrapper);
     }
+
+    /**
+     * @desc: 获取商品价格
+     * @author: yzc
+     * @date: 2023-09-05 10:54
+     * @Param param:
+     * @return: java.math.BigDecimal
+     */
+    public BigDecimal getPrice(GetPriceParam param) {
+        List<KwpGoodsPriceRange> priceRanges = kwpGoodsPriceRangeService.getByGoodsId(param.getGoodsId());
+        if (CollectionUtils.isEmpty(priceRanges)) {
+            throw new BusinessException("商品价格信息异常!");
+        }
+        //价格区间空挡四舍五入取整,保证数量在价格区间段
+        BigDecimal num = param.getNum().setScale(0, RoundingMode.HALF_UP);
+        BigDecimal notLimit = null;
+        BigDecimal price = null;
+        for (KwpGoodsPriceRange e : priceRanges) {
+            if (num.compareTo(e.getStartAmount()) >= 0) {
+                BigDecimal endAmount = e.getEndAmount();
+                if (num.compareTo(endAmount) <= 0) {
+                    price = e.getPrice();
+                    break;
+                }
+                if (endAmount.compareTo(new BigDecimal("-1.00")) == 0) {
+                    notLimit = e.getPrice();
+                }
+            }
+        }
+        return Objects.nonNull(price) ? price : notLimit;
+    }
 }

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

@@ -127,7 +127,7 @@ public class AcceptCarriageOrderController {
      * @return
      */
     @RequestMapping(value = "/getLogisticsOrderContract", method = RequestMethod.POST)
-    public HttpResult getLogisticsOrderContract(@Validated @RequestBody ContractParam contractParam) {
+    public HttpResult getLogisticsOrderContract(@Valid @RequestBody ContractParam contractParam) {
         try {
             return transportCommonService.getLogisticsOrderByContractId(contractParam);
         } catch (Exception e) {

+ 1 - 1
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/dao/KwtLogisticsOrderMapper.java

@@ -90,7 +90,7 @@ public interface KwtLogisticsOrderMapper extends BaseMapper<KwtLogisticsOrder> {
      * @param dictValue
      * @return
      */
-    Long selectLogisticOrderCount(@Param("logisticsOrderParam") LogisticsOrderParam logisticsOrderParam, @Param("dictValue") String dictValue);
+    Long selectLogisticOrderCount(@Param("logisticsOrderParam") LogisticsOrderParam logisticsOrderParam, @Param("dictValue") String dictValue, @Param("entId") Long entId);
 
     Map<String, String> getRejectReason(@Param("id") String id, @Param("status") Integer status);
 

+ 10 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/dao/KwtWaybillOrderTrackMapper.java

@@ -3,6 +3,7 @@ package com.sckw.transport.dao;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.sckw.transport.model.KwtWaybillOrderTrack;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 @Mapper
 public interface KwtWaybillOrderTrackMapper extends BaseMapper<KwtWaybillOrderTrack> {
@@ -18,4 +19,13 @@ public interface KwtWaybillOrderTrackMapper extends BaseMapper<KwtWaybillOrderTr
     int updateByPrimaryKeySelective(KwtWaybillOrderTrack record);
 
     int updateByPrimaryKey(KwtWaybillOrderTrack record);
+
+    /**
+     * @param wOrderId 车辆订单id
+     * @param status 状态
+     * @desc 查询车辆运单状态信息
+     * @author zk
+     * @date 2023/7/27
+     **/
+    KwtWaybillOrderTrack findWaybillOrderTrack(@Param("wOrderId") Long wOrderId, @Param("status") Integer status);
 }

+ 10 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/AcceptCarriageOrderVO.java

@@ -250,6 +250,11 @@ public class AcceptCarriageOrderVO /*extends PageRequest*/ {
      */
     private BigDecimal loadAmount;
 
+    /**
+     *总装货量
+     */
+    private BigDecimal totalLoadAmount;
+
     /**
      * 剩余量
      */
@@ -276,4 +281,9 @@ public class AcceptCarriageOrderVO /*extends PageRequest*/ {
      */
     private BigDecimal unloadAmount;
 
+    /**
+     * 卸货量
+     */
+    private BigDecimal totalUnloadAmount;
+
 }

+ 5 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/SckwLogisticsOrderVO.java

@@ -194,6 +194,11 @@ public class SckwLogisticsOrderVO {
      */
     private Long payment;
 
+    /**
+     * 付款方式(预付款、线下支付、第三方支付)
+     */
+    private String paymentLabel;
+
     /**
      * 发票税率(%)
      */

+ 30 - 3
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/WaybillOrderDriverVo.java

@@ -1,8 +1,11 @@
 package com.sckw.transport.model.vo;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.sckw.core.model.constant.Global;
 import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
 import java.math.BigDecimal;
 import java.util.Date;
 
@@ -66,11 +69,15 @@ public class WaybillOrderDriverVo {
     /**
      * 计划结束时间
      */
+    @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date endTime;
 
     /**
      * 计划开始时间
      */
+    @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date startTime;
 
     /**
@@ -78,10 +85,21 @@ public class WaybillOrderDriverVo {
      */
     private BigDecimal entrustAmount;
 
+
+    /**
+     * 实际剩余量
+     */
+    private BigDecimal residueAmount;
+
+    /**
+     * 单位(吨、方、箱、件)
+     */
+    private String unit;
+
     /**
      * 装货地址名称
      */
-    private Integer loadName;
+    private String loadName;
 
     /**
      * 装货所在地区
@@ -101,7 +119,7 @@ public class WaybillOrderDriverVo {
     /**
      * 卸货地址名称
      */
-    private Integer unloadName;
+    private String unloadName;
 
     /**
      * 卸货所在地区
@@ -146,7 +164,7 @@ public class WaybillOrderDriverVo {
     /**
      * 单据状态
      */
-    private String status;
+    private Integer status;
 
     /**
      * 创建人姓名
@@ -156,8 +174,17 @@ public class WaybillOrderDriverVo {
     /**
      * 派车时间-创建时间
      */
+    @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date createTime;
 
+    /**
+     * 操作时间
+     */
+    @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date operateTime;
+
     public String getTypeName() {
         return type != null && type == Global.NUMERICAL_ONE ? "趟次" : "循环";
     }

+ 8 - 3
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/AcceptCarriageOrderService.java

@@ -1385,11 +1385,11 @@ public class AcceptCarriageOrderService {
             tradeOrder.setActualUnloadAmount(map.get("totalUnloadAmount"));
             tradeOrder.setUpdateBy(LoginUserHolder.getUserId());
             tradeOrder.setUpdateByName(LoginUserHolder.getUserName());
-            log.info("承运订单-分包托运-手动完结订单请求参数:{}",JSONObject.toJSONString(tradeOrder));
+            log.info("承运订单-分包托运-手动完结订单请求参数:{}", JSONObject.toJSONString(tradeOrder));
             HttpResult httpResult = tradeOrderInfoService.completeLogisticsOrder(tradeOrder);
             if (httpResult.getCode() != HttpStatus.SUCCESS_CODE) {
                 log.info("承运订单-分包托运-手动完结订单异常,传递信息:{},返回信息:{}", JSONObject.toJSONString(tradeOrder), JSONObject.toJSONString(httpResult));
-                throw new BusinessException("单据完结出现错误!"+httpResult.getMsg());
+                throw new BusinessException("单据完结出现错误!" + httpResult.getMsg());
             }
         }
 
@@ -1687,7 +1687,12 @@ public class AcceptCarriageOrderService {
         orderDetailVO.setBillingMode(logisticsOrder.getBillingMode());
         orderDetailVO.setScheduleStartTime(logisticsOrder.getStartTime() == null ? null : logisticsOrder.getStartTime());
         orderDetailVO.setScheduleEndTime(logisticsOrder.getEndTime() == null ? null : logisticsOrder.getEndTime());
-        orderDetailVO.setPerformanceAmount(logisticsOrder.getLoadAmount() == null ? null : logisticsOrder.getLoadAmount());
+        if (logisticsOrder.getBillingMode().equals(String.valueOf(NumberConstant.ONE))) {
+            orderDetailVO.setPerformanceAmount(logisticsOrder.getTotalLoadAmount() == null ? null : logisticsOrder.getTotalLoadAmount());
+        } else if (logisticsOrder.getBillingMode().equals(String.valueOf(NumberConstant.TWO))) {
+            orderDetailVO.setPerformanceAmount(logisticsOrder.getUnloadAmount() == null ? null : logisticsOrder.getUnloadAmount());
+        }
+//        orderDetailVO.setPerformanceAmount(logisticsOrder.getLoadAmount() == null ? null : logisticsOrder.getLoadAmount());
         if (logisticsOrder.getSettlementCycle() != null) {
             Map<String, SysDictResDto> dtoMap = remoteSystemService.queryDictMapByType(DictTypeEnum.SETTLEMENT_CYCLE.getType());
             orderDetailVO.setSettlementCycleLabel(dtoMap.isEmpty() ? null :

+ 37 - 1
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/ConsignOrderService.java

@@ -786,6 +786,7 @@ public class ConsignOrderService {
         logisticsOrder.setUpdateBy(LoginUserHolder.getUserId());
         logisticsOrder.setIgnoreAmount(ignoreAmount);
         kwtLogisticsOrderMapper.updateById(logisticsOrder);
+        updateLogisticOrderTrack(logisticsOrder.getId(),LogisticsOrderEnum.HAVE_FINISHED,orderFinishDTO.getRemark());
         //获取物流订单下的子单
         /**完结订单-对应物流订单下子订单都要进行完结*/
         List<KwtLogisticsOrder> kwtLogisticsOrders = kwtLogisticsOrderMapper.selectList(new LambdaQueryWrapper<KwtLogisticsOrder>()
@@ -894,6 +895,41 @@ public class ConsignOrderService {
         }
     }
 
+
+
+    /**
+     * 修改物流表+新增物流状态记录
+     *
+     * @param lOrderId
+     * @param logisticsOrderEnum
+
+     */
+    private void updateLogisticOrderTrack(Long lOrderId,LogisticsOrderEnum logisticsOrderEnum,String remark) {
+        KwtLogisticsOrderTrack track = kwtLogisticsOrderTrackMapper.selectOne(new LambdaQueryWrapper<KwtLogisticsOrderTrack>()
+                .eq(KwtLogisticsOrderTrack::getLOrderId, lOrderId).eq(KwtLogisticsOrderTrack::getStatus, logisticsOrderEnum.getCode())
+        );
+        if (track != null) {
+            kwtLogisticsOrderTrackMapper.update(null, new LambdaUpdateWrapper<KwtLogisticsOrderTrack>()
+                    .set(KwtLogisticsOrderTrack::getUpdateBy, LoginUserHolder.getUserId())
+                    .set(KwtLogisticsOrderTrack::getUpdateTime, new Date())
+                    .set(KwtLogisticsOrderTrack::getRemark, remark)
+                    .eq(KwtLogisticsOrderTrack::getId, track.getId())
+            );
+        } else {
+            KwtLogisticsOrderTrack orderTrack = new KwtLogisticsOrderTrack();
+            orderTrack.setId(new IdWorker(NumberConstant.ONE).nextId());
+            orderTrack.setLOrderId(lOrderId);
+            orderTrack.setRemark(remark);
+            orderTrack.setStatus(logisticsOrderEnum.getCode());
+            orderTrack.setCreateBy(LoginUserHolder.getUserId());
+            orderTrack.setCreateTime(new Date());
+            orderTrack.setUpdateBy(LoginUserHolder.getUserId());
+            orderTrack.setUpdateTime(new Date());
+            orderTrack.setDelFlag(NumberConstant.ZERO);
+            kwtLogisticsOrderTrackMapper.insert(orderTrack);
+        }
+    }
+
     /**
      * 验证当前物流订单是否存在未完结的车辆运单
      *
@@ -909,7 +945,7 @@ public class ConsignOrderService {
         statusList.add(CarWaybillEnum.COMPLETION_LOADING.getCode());
         statusList.add(CarWaybillEnum.WAIT_UNLOADING.getCode());
         statusList.add(CarWaybillEnum.COMPLETION_UNLOADING.getCode());
-        statusList.add(CarWaybillEnum.APPROVAL_PASS.getCode());
+//        statusList.add(CarWaybillEnum.APPROVAL_PASS.getCode());
         int count = kwtWaybillOrderMapper.selectDataByLorderId(id, statusList);
         if (count > NumberConstant.ZERO) {
             flag = true;

+ 56 - 3
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtWaybillOrderService.java

@@ -1,8 +1,11 @@
 package com.sckw.transport.service;
 
+import com.alibaba.fastjson2.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.github.pagehelper.PageHelper;
 import com.sckw.core.common.enums.NumberConstant;
+import com.sckw.core.common.enums.enums.DictEnum;
+import com.sckw.core.common.enums.enums.DictTypeEnum;
 import com.sckw.core.exception.BusinessException;
 import com.sckw.core.model.constant.Global;
 import com.sckw.core.model.enums.*;
@@ -21,9 +24,13 @@ import com.sckw.order.api.dubbo.TradeOrderInfoService;
 import com.sckw.order.api.model.CompleteLogisticsOrderParam;
 import com.sckw.redis.constant.RedisConstant;
 import com.sckw.redis.utils.RedissonUtils;
+import com.sckw.stream.enums.MessageEnum;
 import com.sckw.stream.model.SckwBusSum;
+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.EntCacheResDto;
+import com.sckw.system.api.model.dto.res.SysDictResDto;
 import com.sckw.system.api.model.dto.res.UserCacheResDto;
 import com.sckw.transport.dao.*;
 import com.sckw.transport.model.*;
@@ -34,6 +41,7 @@ import jakarta.annotation.Resource;
 import jakarta.validation.Valid;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboReference;
+import org.apache.ibatis.annotations.Param;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.cloud.stream.function.StreamBridge;
 import org.springframework.stereotype.Service;
@@ -122,25 +130,40 @@ public class KwtWaybillOrderService {
 
         /**数据查询**/
         List<WaybillOrderDriverVo> waybillOrders = new ArrayList();
-        if (busStatus == 1) {
+        if (busStatus == Global.NUMERICAL_ONE) {
             //查询司机任务列表-待接单
             waybillOrders = waybillOrderDao.findWaitWaybillOrderByDriver(params);
         } else {
             //查询司机任务列表-出车/执行/完结
             waybillOrders = waybillOrderDao.findOtherWaybillOrderByDriver(params);
+
+            //出车-出车时间
+            if (busStatus == Global.NUMERICAL_TWO) {
+                for (WaybillOrderDriverVo waybillOrder : waybillOrders) {
+                    KwtWaybillOrderTrack track = waybillOrderTrackDao.findWaybillOrderTrack (waybillOrder.getWOrderId(), waybillOrder.getStatus());
+                    waybillOrder.setOperateTime(track != null ? track.getOperateTime() : null);
+                }
+            }
         }
 
         /**数据组装**/
         List<Long> entIds = new ArrayList<>();
+        List<String> dictKey = new ArrayList<>();
         for (WaybillOrderDriverVo waybillOrder : waybillOrders) {
             entIds.add(waybillOrder.getCarrierEntId());
+            dictKey.add(DictTypeEnum.UNIT_TYPE.getType() + Global.POUND + waybillOrder.getUnit());
         }
+
         //企业数据集
         entIds = entIds.stream().distinct().collect(Collectors.toList());
+        dictKey = dictKey.stream().distinct().collect(Collectors.toList());
         Map<Long, EntCacheResDto> ents = remoteSystemService.queryEntCacheMapByIds(entIds);
+        Map<String, SysDictResDto> dicts = remoteSystemService.queryDictMapByTypeValues(String.join(Global.COMMA, dictKey));
         for (WaybillOrderDriverVo waybillOrder : waybillOrders) {
             EntCacheResDto ent = ents == null ? null : ents.get(waybillOrder.getCarrierEntId());
+            SysDictResDto unit = dicts == null ? null : dicts.get(DictTypeEnum.UNIT_TYPE.getType() + Global.POUND + waybillOrder.getUnit());
             waybillOrder.setCarrierFirmName(ent != null ? ent.getFirmName() : null);
+            waybillOrder.setUnit(unit != null ? unit.getLabel() : null);
         }
         return waybillOrders;
     }
@@ -688,6 +711,7 @@ public class KwtWaybillOrderService {
         waybillOrder.setDriverIdcard(circulate.getDriverIdcard());
         waybillOrder.setEntrustAmount(circulate.getEntrustAmount());
         waybillOrder.setStatus(CarWaybillEnum.PENDING_VEHICLE.getCode());
+        waybillOrder.setCreateBy(circulate.getCreateBy());
         return waybillOrder;
     }
 
@@ -1257,7 +1281,16 @@ public class KwtWaybillOrderService {
             editSckwLogisticsOrder(lOrder, 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.setMsgUrl(null);
+            msg.setUserInfos(users);
+            msg.setCreateBy(LoginUserHolder.getUserId());
+            streamBridge.send("sckw-message", JSON.toJSONString(msg));
         }
 
         /**循环派车**/
@@ -1285,8 +1318,18 @@ public class KwtWaybillOrderService {
             editSckwWaybillOrder(wOrder, waybillOrder, 2);
 
             /**4发送消息**/
+            KwtLogisticsOrder logisticsOrder = logisticsOrderDao.selectById(circulate.getLOrderId());
+            List<UserInfo> users = new ArrayList<>(){{add(new UserInfo(circulate.getCreateBy(), circulate.getEntId()));}};
+            Map<String, Object> msgParams = new HashMap<>(){{put("orderNo", logisticsOrder.getLOrderNo());put("driverName", waybillOrder.getDriverName());}};
+            SckwMessage msg = new SckwMessage();
+            msg.setRequestId(UUIDUtils.get32UUID());
+            msg.setMessageEnum(MessageEnum.WAYBILL_REFUSE_SENDCAR_CIRCULATE);
+            msg.setParams(msgParams);
+            msg.setMsgUrl(null);
+            msg.setUserInfos(users);
+            msg.setCreateBy(LoginUserHolder.getUserId());
+            streamBridge.send("sckw-message", JSON.toJSONString(msg));
         }
-
         return HttpResult.ok("拒绝接单成功!");
     }
 
@@ -1378,6 +1421,16 @@ public class KwtWaybillOrderService {
         editSckwLogisticsOrder(lOrder, logisticsOrder);
 
         /**7发送消息**/
+        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.setMsgUrl(null);
+        msg.setUserInfos(users);
+        msg.setCreateBy(LoginUserHolder.getUserId());
+        streamBridge.send("sckw-message", JSON.toJSONString(msg));
 
         return HttpResult.ok("拒绝出车成功!");
     }

+ 14 - 8
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/TransportCommonService.java

@@ -213,7 +213,12 @@ public class TransportCommonService {
         }
         orderDetailVO.setScheduleStartTime(logisticsOrder.getStartTime() == null ? null : logisticsOrder.getStartTime());
         orderDetailVO.setScheduleEndTime(logisticsOrder.getEndTime() == null ? null : logisticsOrder.getEndTime());
-        orderDetailVO.setPerformanceAmount(logisticsOrder.getLoadAmount() == null ? null : logisticsOrder.getLoadAmount());
+        if (logisticsOrder.getBillingMode().equals(String.valueOf(NumberConstant.ONE))) {
+            orderDetailVO.setPerformanceAmount(logisticsOrder.getTotalLoadAmount() == null ? null : logisticsOrder.getTotalLoadAmount());
+        } else if (logisticsOrder.getBillingMode().equals(String.valueOf(NumberConstant.TWO))) {
+            orderDetailVO.setPerformanceAmount(logisticsOrder.getUnloadAmount() == null ? null : logisticsOrder.getUnloadAmount());
+        }
+//        orderDetailVO.setPerformanceAmount(logisticsOrder.getLoadAmount() == null ? null : logisticsOrder.getLoadAmount());
         orderDetailVO.setTotalLoadAmount(logisticsOrder.getTotalLoadAmount() == null ? new BigDecimal("0.00") : logisticsOrder.getTotalLoadAmount());
         orderDetailVO.setTotalUnloadAmount(logisticsOrder.getTotalUnloadAmount() == null ? new BigDecimal("0.00") : logisticsOrder.getTotalUnloadAmount());
         orderDetailVO.setCreateTime(logisticsOrder.getCreateTime());
@@ -480,7 +485,7 @@ public class TransportCommonService {
         Integer page = logisticsOrderParam.getPage();
         logisticsOrderParam.setPage((logisticsOrderParam.getPage() - 1) * logisticsOrderParam.getPageSize());
         List<LogisticsOrderVO> list = logisticsOrderMapper.selectLogisticOrderData(logisticsOrderParam, dictValue, LoginUserHolder.getEntId());
-        Long count = logisticsOrderMapper.selectLogisticOrderCount(logisticsOrderParam, dictValue);
+        Long count = logisticsOrderMapper.selectLogisticOrderCount(logisticsOrderParam, dictValue, LoginUserHolder.getEntId());
         /**计量单位*/
         Map<String, String> unitTypeDictData = getDictData(DictTypeEnum.UNIT_TYPE.getType());
         /**运价方式*/
@@ -531,7 +536,7 @@ public class TransportCommonService {
                 logisticsOrderDTO.setContractName(contract.getContractName());
                 logisticsOrderDTO.setContractNo(contract.getContractNo());
                 logisticsOrderDTO.setGoodsPriceLabel(priceDictData.get(logisticsOrderDTO.getPriceType()));
-                logisticsOrderDTO.setCreateByName(remoteSystemService.queryUserCacheById(logisticsOrderDTO.getCreateBy())==null?null:remoteSystemService.queryUserCacheById(logisticsOrderDTO.getCreateBy()).getName());
+                logisticsOrderDTO.setCreateByName(remoteSystemService.queryUserCacheById(logisticsOrderDTO.getCreateBy()) == null ? null : remoteSystemService.queryUserCacheById(logisticsOrderDTO.getCreateBy()).getName());
                 logisticsOrderDTO.setLoadAddress(loadOrderAddress.getDetailAddress());
                 logisticsOrderDTO.setLoadName(loadOrderAddress.getName());
                 logisticsOrderDTO.setLoadContacts(loadOrderAddress.getContacts());
@@ -590,10 +595,10 @@ public class TransportCommonService {
         Map<Long, EntCacheResDto> entMap = remoteSystemService.queryEntTreeByIds(Collections.singletonList(LoginUserHolder.getEntId()));
         List<SckwLogisticsOrderVO> list = logisticsOrderMapper.selectOrderListByContractId(contractParam.getContractType(), entMap.get(LoginUserHolder.getEntId()).getId(), contractIds);
         List<SckwLogisticsOrderVO> returnList = new ArrayList<>();
-        /**支付方式*/
-//        Map<String, String> dictResDtoMap = getDictData(DictTypeEnum.UNIT_TYPE.getType());
         /**计量单位*/
-        Map<String, String> unitTypeDictData = getDictData(DictTypeEnum.TRADE_TYPE.getType());
+        Map<String, String> dictResDtoMap = getDictData(DictTypeEnum.UNIT_TYPE.getType());
+        /**支付方式*/
+        Map<String, String> tradeTypeDictData = getDictData(DictTypeEnum.TRADE_TYPE.getType());
         /**运价方式*/
 //        Map<String, String> priceDictData = getDictData(DictTypeEnum.PRICE_TYPE.getType());
         /**计费方式*/
@@ -606,10 +611,11 @@ public class TransportCommonService {
         Map<String, String> taxRateTypeDictData = getDictData(DictTypeEnum.TAX_RATE_TYPE.getType());
         if (CollectionUtils.isNotEmpty(list)) {
             for (SckwLogisticsOrderVO vo : list) {
+                vo.setPaymentLabel(vo.getPayment() == null ? null : tradeTypeDictData.get(vo.getPayment().toString()));
                 vo.setStatusLabel(LogisticsOrderEnum.getDestination(vo.getStatus()));
                 vo.setLossUnitLabel(vo.getLossUnit() == null ? null : taxRateTypeDictData.get(vo.getLossUnit()));
-                vo.setUnitLabel(vo.getUnit() == null ? null : unitTypeDictData.get(vo.getUnit()));
-                vo.setGoodsPriceUnitLabel(vo.getGoodsPriceUnit() == null ? null : unitTypeDictData.get(vo.getGoodsPriceUnit()));
+                vo.setUnitLabel(vo.getUnit() == null ? null : dictResDtoMap.get(vo.getUnit()));
+                vo.setGoodsPriceUnitLabel(vo.getGoodsPriceUnit() == null ? null : dictResDtoMap.get(vo.getGoodsPriceUnit()));
                 vo.setSettlementCycleLabel(vo.getSettlementCycle() == null ? null : settlementDictData.get(vo.getSettlementCycle().toString()));
                 UserCacheResDto userCacheResDto = remoteSystemService.queryUserCacheById(vo.getCreateBy());
                 vo.setCreateByName(userCacheResDto == null ? null : userCacheResDto.getName());

+ 4 - 2
sckw-modules/sckw-transport/src/main/resources/mapper/KwtLogisticsOrderMapper.xml

@@ -139,7 +139,9 @@
         a.remark AS remark,
         a.create_by AS createBy,
         a.create_time AS createTime,
-        f.contract_id AS contractId
+        f.contract_id AS contractId,
+        a.amount AS amount,
+        c.detail_address as unloadDetailAddress
         FROM
         kwt_logistics_order a
         LEFT JOIN kwt_logistics_order_address b ON a.id = b.l_order_id
@@ -259,7 +261,7 @@
         LEFT JOIN kwt_logistics_order_unit d ON a.id = d.l_order_id
         LEFT JOIN kwt_logistics_order_contract c ON a.id=c.l_order_id
         <where>
-            a.del_flag = 0 and d.unit_type = 1
+            a.del_flag = 0 and d.unit_type = 1 and a.bind_status='0'
             <if test="dictValue != null and dictValue != ''">
                 AND a.payment = #{dictValue}
             </if>

+ 15 - 12
sckw-modules/sckw-transport/src/main/resources/mapper/KwtWaybillOrderMapper.xml

@@ -302,6 +302,8 @@
                      wo.l_order_id       lOrderId,
                      lo.l_order_no       lOrderNo,
                      wo.type,
+                     lo.amount - lo.entrust_amount - lo.subcontract_amount residueAmount,
+                     lo.unit,
                      wo.ent_id           carrierEntId,
                      'xxxxx'             carrierFirmName,
                      log.goods_name      goodsName,
@@ -325,8 +327,8 @@
                      wo.create_time      createTime
               FROM kwt_waybill_order wo
                        LEFT JOIN kwt_logistics_order lo on lo.id = wo.l_order_id
-                       LEFT JOIN kwt_waybill_order_address woa1 on woa1.w_order_id = wo.id and woa1.type = 1
-                       LEFT JOIN kwt_waybill_order_address woa2 on woa2.w_order_id = wo.id and woa2.type = 2
+                       LEFT JOIN kwt_waybill_order_address woa1 on woa1.w_order_id = wo.id and woa1.address_type = 1
+                       LEFT JOIN kwt_waybill_order_address woa2 on woa2.w_order_id = wo.id and woa2.address_type = 2
                        LEFT JOIN kwt_logistics_order_goods log on log.l_order_id = wo.l_order_id
               where wo.del_flag = 0
                 and lo.del_flag = 0
@@ -338,6 +340,8 @@
                      loc.l_order_id      lOrderId,
                      lo.l_order_no       lOrderNo,
                      loc.type,
+                     lo.amount - lo.entrust_amount - lo.subcontract_amount residueAmount,
+                     lo.unit,
                      loc.ent_id          carrierEntId,
                      'xxxxx'             carrierFirmName,
                      log.goods_name      goodsName,
@@ -361,8 +365,8 @@
                      loc.update_time     createTime
               FROM kwt_logistics_order_circulate loc
                        LEFT JOIN kwt_logistics_order lo on lo.id = loc.l_order_id
-                       LEFT JOIN kwt_waybill_order_address woa1 on woa1.w_order_id = lo.id and woa1.type = 1
-                       LEFT JOIN kwt_waybill_order_address woa2 on woa2.w_order_id = lo.id and woa2.type = 2
+                       LEFT JOIN kwt_waybill_order_address woa1 on woa1.w_order_id = lo.id and woa1.address_type = 1
+                       LEFT JOIN kwt_waybill_order_address woa2 on woa2.w_order_id = lo.id and woa2.address_type = 2
                        LEFT JOIN kwt_logistics_order_goods log on log.l_order_id = loc.l_order_id
               where loc.del_flag = 0
                 and lo.del_flag = 0
@@ -375,19 +379,18 @@
     <select id="findOtherWaybillOrderByDriver" resultType="com.sckw.transport.model.vo.WaybillOrderDriverVo"
             parameterType="java.util.Map">
         SELECT
-        wo.id wOrderId, wo.w_order_no wOrderNo, wo.l_order_id lOrderId, lo.l_order_no lOrderNo, wo.type,
+        wo.id wOrderId, wo.w_order_no wOrderNo, wo.l_order_id lOrderId, lo.l_order_no lOrderNo,
+        lo.unit, wo.type,
         wo.ent_id carrierEntId, 'xxxxx' carrierFirmName, log.goods_name goodsName, wo.start_time startTime,
         wo.end_time endTime, wo.entrust_amount entrustAmount, woa1.name loadName, woa1.city_code loadCityCode,
         woa1.city_name loadCityName, woa1.detail_address loadDetailAddress, woa2.name unloadName, woa2.city_code
-        unloadCityCode,
-        woa2.city_name unloadCityName, woa2.detail_address unloadDetailAddress, wo.load_amount loadAmount,
-        wo.unload_amount unloadAmount,
-        wo.deficit_amount deficitAmount, wo.deficit_price deficitPrice, wo.truck_no truckNo, wo.status, wo.create_time
-        createTime
+        unloadCityCode, woa2.city_name unloadCityName, woa2.detail_address unloadDetailAddress, wo.load_amount loadAmount,
+        wo.unload_amount unloadAmount, wo.deficit_amount deficitAmount, wo.deficit_price deficitPrice, wo.truck_no truckNo,
+        wo.status, wo.create_time createTime
         FROM kwt_waybill_order wo
         LEFT JOIN kwt_logistics_order lo on lo.id = wo.l_order_id
-        LEFT JOIN kwt_waybill_order_address woa1 on woa1.w_order_id = wo.id and woa1.type = 1
-        LEFT JOIN kwt_waybill_order_address woa2 on woa2.w_order_id = wo.id and woa2.type = 2
+        LEFT JOIN kwt_waybill_order_address woa1 on woa1.w_order_id = wo.id and woa1.address_type = 1
+        LEFT JOIN kwt_waybill_order_address woa2 on woa2.w_order_id = wo.id and woa2.address_type = 2
         LEFT JOIN kwt_logistics_order_goods log on log.l_order_id = wo.l_order_id
         where wo.del_flag = 0 and lo.del_flag = 0
         <if test="driverId != null and driverId != ''">

+ 15 - 0
sckw-modules/sckw-transport/src/main/resources/mapper/KwtWaybillOrderTrackMapper.xml

@@ -16,4 +16,19 @@
         id, w_order_id, remark, `status`, create_by, create_time, update_by, update_time,
     del_flag
     </sql>
+
+    <select id="findWaybillOrderTrack" resultType="com.sckw.transport.model.KwtWaybillOrderTrack" >
+        select
+        id, w_order_id wOrderId, remark, `status`, operate_time operateTime, create_by createBy, create_time createTime, update_by updateBy,
+        update_time updateTime
+        from kwt_waybill_order_track
+        where del_flag = 0
+        <if test="wOrderId != null and wOrderId != ''">
+            and w_order_id = #{wOrderId, jdbcType=BIGINT}
+        </if>
+        <if test="status != null and status != ''">
+            and status = #{status, jdbcType=INTEGER}
+        </if>
+        order by create_time desc limit 1
+    </select>
 </mapper>