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

订单发送相关消息逻辑调整

yzc 2 лет назад
Родитель
Сommit
568dceb6b7

+ 4 - 5
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/dto/OrderCheckDTO.java

@@ -7,7 +7,6 @@ import lombok.ToString;
 import lombok.experimental.Accessors;
 
 import java.math.BigDecimal;
-import java.util.List;
 
 /**
  * @desc: 订单校验参数dto
@@ -61,9 +60,9 @@ public class OrderCheckDTO {
     private String procureFireName;
 
     /**
-     * 采购企业联系人集合
+     * 采购企业联系人
      */
-    private List<UserInfo> procureUsers;
+    private UserInfo procureUser;
 
     /**
      * 供应一级企业id
@@ -80,9 +79,9 @@ public class OrderCheckDTO {
     private String supplyFireName;
 
     /**
-     * 供应企业联系人集合
+     * 供应企业联系人
      */
-    private List<UserInfo> supplyUsers;
+    private UserInfo supplyUser;
 
     /**
      * 订单来源 1采购下单2代客下单

+ 60 - 77
sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTradeOrderService.java

@@ -293,64 +293,63 @@ public class KwoTradeOrderService {
     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());
+        UserInfo procureUser = orderCheck.getProcureUser();
+        String procureFireName = orderCheck.getProcureFireName();
+        UserInfo supplyUser = orderCheck.getSupplyUser();
+        String supplyFireName = orderCheck.getSupplyFireName();
         //采购下单
         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", supplyFireName);
+            if (!Objects.equals(procureUser.getUserId(), LoginUserHolder.getUserId())) {
+                userInfos.add(procureUser);
+            }
+            sendMsg(MessageEnum.ORDER_INITIATE_PURCHASE, map, purchaseOrderListUrl, userInfos);
             //给供应企业联系人发消息
-            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));
+            map.put("firmName", procureFireName);
+            sendMsg(MessageEnum.ORDER_NEW_PENDING, map, valetOrderListUrl, List.of(supplyUser));
         } 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", procureFireName);
+            if (!Objects.equals(supplyUser.getUserId(), LoginUserHolder.getUserId())) {
+                userInfos.add(supplyUser);
+            }
+            sendMsg(MessageEnum.ORDER_INITIATE_SALE, map, valetOrderListUrl, userInfos);
             //给采购企业联系人发消息
-            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));
+            map.put("firmName", supplyFireName);
+            sendMsg(MessageEnum.ORDER_NEW_VALET_MSG, map, purchaseOrderListUrl, List.of(procureUser));
         }
     }
 
+    /**
+     * @desc: 发送消息
+     * @author: yzc
+     * @date: 2023-09-06 15:57
+     * @Param msgEnum: 消息枚举
+     * @Param params: 消息变量
+     * @Param url: 消息调转url
+     * @Param userInfos:  发送消息用户集合
+     * @return: void
+     */
+    private void sendMsg(MessageEnum msgEnum, Map<String, Object> params, String url, List<UserInfo> userInfos) {
+        SckwMessage msg = new SckwMessage();
+        msg.setRequestId(UUIDUtils.get32UUID())
+                .setMessageEnum(msgEnum)
+                .setParams(params)
+                .setMsgUrl(url)
+                .setUserInfos(userInfos)
+                .setCreateBy(LoginUserHolder.getUserId());
+        log.info("有新的提醒消息:{}", JSON.toJSONString(msg));
+        streamBridge.send("sckw-message", JSON.toJSONString(msg));
+    }
+
     /**
      * @desc: 获取采购销售顶级企业id
      * @author: yzc
@@ -362,8 +361,6 @@ public class KwoTradeOrderService {
     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);
@@ -377,17 +374,16 @@ public class KwoTradeOrderService {
                 orderCheck.setProcureEntId(entId);
                 orderCheck.setProcureFireName(e.getFirmName());
                 procureUser.setUserId(e.getContactsId()).setEntId(ent.getId());
-                procureUsers.add(procureUser);
+                orderCheck.setProcureUser(procureUser);
             } else {
                 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.setSupplyUser(supplyUser);
             }
         });
-        orderCheck.setProcureUsers(procureUsers).setSupplyUsers(supplyUsers);
     }
 
     /**
@@ -952,42 +948,29 @@ public class KwoTradeOrderService {
      * @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();
+        Map<String, KwoTradeOrderUnit> unitMap = units.stream().collect
+                (Collectors.toMap(KwoTradeOrderUnit::getUnitType, Function.identity()));
         KwoTradeOrderUnit purchase = unitMap.get(DictEnum.TORDER_UNIT_TYPE_1.getValue());
-        purchaseUser.setUserId(purchase.getContactsId()).setEntId(purchase.getTopEntId());
-        purchaseUsers.add(purchaseUser);
-        SckwMessage contactsMsg = new SckwMessage();
+        KwoTradeOrderUnit supply = unitMap.get(DictEnum.TORDER_UNIT_TYPE_2.getValue());
+        //给供应企业联系人发消息
         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));
-        //给订单创建人发消息
+        UserInfo supplyUser = new UserInfo();
+        supplyUser.setUserId(supply.getContactsId()).setEntId(supply.getTopEntId());
+        sendMsg(MessageEnum.ORDER_REJECT_VALET, map, valetOrderListUrl, List.of(supplyUser));
+        //给订单创建人及采购企业联系人发消息
+        map.put("firmName", supply.getFirmName());
         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));
+        if (!Objects.equals(createUser.getUserId(), purchase.getContactsId())) {
+            UserInfo purchaseUser = new UserInfo();
+            purchaseUser.setUserId(purchase.getContactsId()).setEntId(purchase.getTopEntId());
+            userInfos.add(purchaseUser);
+        }
+        sendMsg(MessageEnum.ORDER_REJECT_PURCHASE, map, purchaseOrderListUrl, userInfos);
     }
 
     /**