Explorar el Código

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

xucaiqin hace 2 años
padre
commit
dc23d00009
Se han modificado 35 ficheros con 610 adiciones y 353 borrados
  1. 5 1
      sckw-auth/src/main/java/com/sckw/auth/service/impl/AuthServiceImpl.java
  2. 2 0
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/common/enums/enums/DictEnum.java
  3. 1 0
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/common/enums/enums/DictTypeEnum.java
  4. 1 1
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/web/constant/HttpStatus.java
  5. 34 79
      sckw-common/sckw-common-stream/src/main/java/com/sckw/stream/enums/MessageEnum.java
  6. 6 2
      sckw-common/sckw-common-stream/src/main/java/com/sckw/stream/model/SckwMessage.java
  7. 22 0
      sckw-common/sckw-common-stream/src/main/java/com/sckw/stream/model/UserInfo.java
  8. 3 29
      sckw-modules/sckw-message/src/main/java/com/sckw/message/controller/MessageController.java
  9. 4 3
      sckw-modules/sckw-message/src/main/java/com/sckw/message/dao/KwmMessageMapper.java
  10. 5 0
      sckw-modules/sckw-message/src/main/java/com/sckw/message/model/KwmMessageUser.java
  11. 91 0
      sckw-modules/sckw-message/src/main/java/com/sckw/message/model/dto/MessageListDTO.java
  12. 7 2
      sckw-modules/sckw-message/src/main/java/com/sckw/message/model/dto/SelectMessagesDTO.java
  13. 4 13
      sckw-modules/sckw-message/src/main/java/com/sckw/message/model/vo/req/ReadMessagesReqVO.java
  14. 6 3
      sckw-modules/sckw-message/src/main/java/com/sckw/message/model/vo/req/SelectMessagesReqVO.java
  15. 0 5
      sckw-modules/sckw-message/src/main/java/com/sckw/message/model/vo/req/StatisticsMessagesReqVO.java
  16. 10 14
      sckw-modules/sckw-message/src/main/java/com/sckw/message/model/vo/res/KwmMessageListResVO.java
  17. 4 3
      sckw-modules/sckw-message/src/main/java/com/sckw/message/service/KwmMessageService.java
  18. 44 0
      sckw-modules/sckw-message/src/main/java/com/sckw/message/service/KwmMessageUserService.java
  19. 44 51
      sckw-modules/sckw-message/src/main/java/com/sckw/message/service/MessageService.java
  20. 13 11
      sckw-modules/sckw-message/src/main/java/com/sckw/message/service/SckwMessageHandlerService.java
  21. 18 11
      sckw-modules/sckw-message/src/main/resources/mapper/KwmMessageMapper.xml
  22. 2 0
      sckw-modules/sckw-message/src/main/resources/mapper/KwmMessageUserMapper.xml
  23. 1 1
      sckw-modules/sckw-operation/src/main/java/com/sckw/operation/controller/KwoBannerController.java
  24. 1 25
      sckw-modules/sckw-operation/src/main/java/com/sckw/operation/model/vo/req/BannerAddReqVo.java
  25. 0 9
      sckw-modules/sckw-operation/src/main/java/com/sckw/operation/model/vo/req/BannerQueryReqVo.java
  26. 10 7
      sckw-modules/sckw-operation/src/main/java/com/sckw/operation/service/BannerService.java
  27. 0 49
      sckw-modules/sckw-operation/src/main/java/com/sckw/operation/service/CommonBusinessService.java
  28. 22 0
      sckw-modules/sckw-order/src/main/java/com/sckw/order/model/dto/OrderCheckDTO.java
  29. 160 16
      sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTradeOrderService.java
  30. 1 2
      sckw-modules/sckw-system/src/main/java/com/sckw/system/model/vo/req/ForgetPasswordReqVo.java
  31. 10 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/dao/KwtWaybillOrderTrackMapper.java
  32. 30 3
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/WaybillOrderDriverVo.java
  33. 19 1
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtWaybillOrderService.java
  34. 15 12
      sckw-modules/sckw-transport/src/main/resources/mapper/KwtWaybillOrderMapper.xml
  35. 15 0
      sckw-modules/sckw-transport/src/main/resources/mapper/KwtWaybillOrderTrackMapper.xml

+ 5 - 1
sckw-auth/src/main/java/com/sckw/auth/service/impl/AuthServiceImpl.java

@@ -446,7 +446,11 @@ public class AuthServiceImpl implements IAuthService {
         loginRes.setToken(token);
         loginRes.setDeptId(user.getDeptId());
         loginRes.setRoleId(user.getRoleId());
-        loginRes.setValid(enterprise.getValid());
+        if (user.getSystemType().equals(SystemTypeEnum.MANAGE.getCode())) {
+            loginRes.setValid(true);
+        }
+
+        loginRes.setValid(Objects.isNull(enterprise) ? false : enterprise.getValid());
         return HttpResult.ok(loginRes);
     }
 

+ 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", "商品单位类型"),

+ 1 - 1
sckw-common/sckw-common-core/src/main/java/com/sckw/core/web/constant/HttpStatus.java

@@ -146,7 +146,7 @@ public class HttpStatus {
     public static final String COOPERATE_CANCEL_EXISTS = "未查询到可撤销的记录";
     public static final String ADDRESS_NOT_EXISTS = "未查询到地址记录或已失效";
     public static final String CONTRACT_NOT_EXISTS = "未查询到合同或已失效";
-    public static final String Data_NOT_EXISTS = "未查询到相关数据";
+    public static final String BANNER_NOT_EXISTS = "未查询到banner数据或已失效";
 
     /**自定义提示消息*/
     public static final String PASSWD_ERROR = "密码不正确";

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

@@ -1,78 +1,73 @@
 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_TORDER_NEW_PENDING", "有新的待受理订单",
+                                   "【${firmName}】发起采购申请,请及时进行受理;订单号:${orderNo}","terminal,ios,android"),
+    /**
+     * 发起代客下单
+     */
+    ORDER_INITIATE_SALE("BUSINESS", "BUSINESS_TORDER_INITIATE_SALE", "发起代客下单",
+                           "贵司已代【${firmName}】发起了商品采购,请及时联系往来单位;订单号:${orderNo}","terminal,ios,android"),
     /**
-     * 新采购订单(有新的代客下单信息)
+     * 有新的代客下单信息
      */
-    NEW_PURCHASE_ORDER("BUSINESS", "BUSINESS_TORDER_NEW_PURCHASE", "有新的代客下单信息",
-                           "${firmName}代您发起了商品采购,请确认;订单号:${orderNo}","terminal,ios,android"),
+    ORDER_NEW_VALET_MSG("BUSINESS", "BUSINESS_TORDER_NEW_VALET_MSG", "有新的代客下单信息",
+            "【${firmName}】代您发起了商品采购,请确认;订单号:${orderNo}","terminal,ios,android"),
+    /**
+     * 驳回采购订单
+     */
+    ORDER_REJECT_VALET("BUSINESS", "BUSINESS_TORDER_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_TORDER_REJECT_PURCHASE", "采购订单被驳回",
+            "您的采购申请被${firmName}驳回,请及时查看;订单号:${orderNo}","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 +95,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},

+ 1 - 1
sckw-modules/sckw-operation/src/main/java/com/sckw/operation/controller/KwoBannerController.java

@@ -18,7 +18,7 @@ import org.springframework.web.bind.annotation.RestController;
  * @date 2023/8/28
  */
 @RestController
-@RequestMapping("/bannerOperation")
+@RequestMapping("/kwoBanner")
 public class KwoBannerController {
 
     @Autowired

+ 1 - 25
sckw-modules/sckw-operation/src/main/java/com/sckw/operation/model/vo/req/BannerAddReqVo.java

@@ -62,15 +62,9 @@ public class BannerAddReqVo extends PageRequest implements Serializable {
     /**
      * 排序
      */
-    @NotNull(message = "排序不能为空")
+
     private Integer sort;
 
-    /**
-     * 显示终端:苹果设备 ios、安卓设备 android、物流管家 pc、官网 pc-portal、管理系统 pc-background、移动端网页 mobile、全部终端 terminal
-     */
-    @NotBlank(message = "显示终端不能为空")
-    @Size(max = 40, message = "显示终端超长")
-    private String clientType;
 
     /**
      * 备注
@@ -84,23 +78,5 @@ public class BannerAddReqVo extends PageRequest implements Serializable {
     @NotNull(message = "状态不能为空")
     private Integer status;
 
-    /**
-     * 创建人
-     */
-    private String createBy;
-
-    /**
-     * 创建时间
-     */
-    private String createTime;
-
-    /**
-     * 更新时间
-     */
-    private String updateBy;
-    /**
-     * 更新时间
-     */
-    private String updateTime;
 
 }

+ 0 - 9
sckw-modules/sckw-operation/src/main/java/com/sckw/operation/model/vo/req/BannerQueryReqVo.java

@@ -27,11 +27,6 @@ public class BannerQueryReqVo extends PageRequest implements Serializable {
      */
     private Integer status;
 
-    /**
-     * 显示终端:苹果设备 ios、安卓设备 android、物流管家 pc、官网 pc-portal、管理系统 pc-background、移动端网页 mobile、全部终端 terminal
-     */
-    private String clientType;
-
     /**
      * 创建开始时间(时间戳)
      */
@@ -46,10 +41,6 @@ public class BannerQueryReqVo extends PageRequest implements Serializable {
     @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date endTime;
 
-    /**
-     * 显示区域(0首页,1建材市场,2求购大厅,3运需广场,4运力大厅,5金融服务,6车后服务,7绿智新能)
-     */
-    private Long district;
 
     /**
      * 主键

+ 10 - 7
sckw-modules/sckw-operation/src/main/java/com/sckw/operation/service/BannerService.java

@@ -61,7 +61,7 @@ public class BannerService {
         if (CollectionUtils.isEmpty(kwoBannerList)) {
             return PageHelperUtil.getPageResult(new PageInfo<>());
         }
-        List<BannerQueryResVo> list = getAddressQueryResVo(kwoBannerList);
+        List<BannerQueryResVo> list = getBannerQueryResVo(kwoBannerList);
         return PageHelperUtil.getPageResult(new PageInfo<>(list), kwoBannerList, reqVo.getPageSize());
     }
 
@@ -82,11 +82,11 @@ public class BannerService {
                 orderByDesc(KwoBanner::getUpdateTime);
 
         if (Objects.nonNull(reqVo.getStartTime())) {
-            wrapper.ge(KwoBanner::getCreateTime, reqVo.getStartTime());
+            wrapper.ge(KwoBanner::getStartTime, reqVo.getStartTime());
         }
 
         if (Objects.nonNull(reqVo.getEndTime())) {
-            wrapper.lt(KwoBanner::getCreateTime, DateUtil.offsetDay(reqVo.getEndTime(), 1));
+            wrapper.lt(KwoBanner::getEntTime, DateUtil.offsetDay(reqVo.getEndTime(), 1));
         }
 
         if (StringUtils.isNotBlank(reqVo.getIds())) {
@@ -103,10 +103,10 @@ public class BannerService {
      * @author: sky
      * @date 2023/7/18
      */
-    private List<BannerQueryResVo> getAddressQueryResVo(List<KwoBanner> kwoBanner) {
+    private List<BannerQueryResVo> getBannerQueryResVo(List<KwoBanner> kwoBanner) {
         List<BannerQueryResVo> list = new ArrayList<>();
         List<Long> userIds = kwoBanner.stream().map(KwoBanner::getCreateBy).distinct().toList();
-        List<Integer> types = kwoBanner.stream().map(KwoBanner::getDistrict).distinct().toList();
+
         Map<Long, UserCacheResDto> userCacheResDtoMap = commonBusinessService.queryUserCacheMapByIds(userIds);
 
         kwoBanner.forEach(item -> {
@@ -122,7 +122,6 @@ public class BannerService {
                 bannerQueryResVo.setDistrictName(bannerDistrictEnum.getName(item.getDistrict()).getName());
             }
 
-            //bannerQueryResVo.statusText(StringUtils.isNotBlank(item.getStatus()) ? "已设置" : "未设置");
             list.add(bannerQueryResVo);
         });
         return list;
@@ -162,9 +161,13 @@ public class BannerService {
     public void udpateService(BannerAddReqVo reqVo) {
         KwoBanner kwobanner = kwoBannerMapper.selectById(reqVo.getId());
         if (Objects.isNull(kwobanner)) {
-            throw new SystemException(HttpStatus.QUERY_FAIL_CODE, HttpStatus.Data_NOT_EXISTS);
+            throw new SystemException(HttpStatus.QUERY_FAIL_CODE, HttpStatus.BANNER_NOT_EXISTS);
         }
         BeanUtils.copyProperties(reqVo, kwobanner);
+        Date date = new Date();
+        Long userId = LoginUserHolder.getUserId();
+        kwobanner.setUpdateTime(date);
+        kwobanner.setUpdateBy(userId);
         if (kwoBannerMapper.updateById(kwobanner) <= 0) {
             throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.UPDATE_FAIL);
         }

+ 0 - 49
sckw-modules/sckw-operation/src/main/java/com/sckw/operation/service/CommonBusinessService.java

@@ -39,53 +39,4 @@ public class CommonBusinessService {
         return remoteSystemService.queryUserCacheMapByIds(userIds);
     }
 
-
-    /**
-     * @param entIds 企业id
-     * @return EntCacheResDto
-     * @desc: 查企业信息
-     * @author: czh
-     * @date: 2023/7/12
-     */
-    public Map<Long, EntCacheResDto> queryEntCacheMapByIds(List<Long> entIds) {
-        return remoteSystemService.queryEntCacheMapByIds(entIds);
-    }
-
-    /**
-     * @param keys type#value,type#value
-     * @return Map
-     * @desc: 根据id查字典
-     * @author: czh
-     * @date: 2023/7/12
-     */
-    public Map<String, SysDictResDto> queryDictMapByTypeValues(String keys) {
-        return remoteSystemService.queryDictMapByTypeValues(keys);
-    }
-
-    /**
-     * @param type 当前企业的属性
-     * @return Integer
-     * @desc: 转换成相对的属性
-     * @author: czh
-     * @date: 2023/7/11
-     */
-    public Integer changeAttribute(Integer type) {
-        if (type == CooperateTypeEnum.SUPPLIER.getCode()) {
-            return CooperateTypeEnum.PURCHASER.getCode();
-        }
-
-        if (type == CooperateTypeEnum.PURCHASER.getCode()) {
-            return CooperateTypeEnum.SUPPLIER.getCode();
-        }
-
-        if (type == CooperateTypeEnum.CONSIGN.getCode()) {
-            return CooperateTypeEnum.CARRIAGE.getCode();
-        }
-
-        if (type == CooperateTypeEnum.CARRIAGE.getCode()) {
-            return CooperateTypeEnum.CONSIGN.getCode();
-        }
-
-        return Global.NO;
-    }
 }

+ 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));
     }
 
     /**

+ 1 - 2
sckw-modules/sckw-system/src/main/java/com/sckw/system/model/vo/req/ForgetPasswordReqVo.java

@@ -39,7 +39,6 @@ public class ForgetPasswordReqVo implements Serializable {
     /**
      * 系统类型(1运营端、2企业开户)
      */
-    @NotNull(message = "系统类型不能为空")
-    private int systemType;
+    private Integer systemType;
 
 }

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

+ 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 ? "趟次" : "循环";
     }

+ 19 - 1
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtWaybillOrderService.java

@@ -3,6 +3,7 @@ package com.sckw.transport.service;
 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.DictTypeEnum;
 import com.sckw.core.exception.BusinessException;
 import com.sckw.core.model.constant.Global;
 import com.sckw.core.model.enums.*;
@@ -24,6 +25,7 @@ import com.sckw.redis.utils.RedissonUtils;
 import com.sckw.stream.model.SckwBusSum;
 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 +36,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 +125,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;
     }

+ 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`, 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>