Sfoglia il codice sorgente

提交630贸易订app输入代理的问题过滤相关逻辑

chenxiaofei 2 settimane fa
parent
commit
0b0a9d304f

+ 17 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTradeOrderService.java

@@ -1864,6 +1864,8 @@ public class KwoTradeOrderService {
             }
         }
         String keywords = params.getKeywords();
+        applyAgentKeywordCondition(dto);
+        keywords = dto.getKeywords();
         if (StringUtils.isNotBlank(keywords)) {
             List<SysDictResDto> sysDictResDtos = remoteSystemService.queryGoodsDict(keywords);
             List<String> collect = new ArrayList<>();
@@ -1875,6 +1877,21 @@ public class KwoTradeOrderService {
         return dto;
     }
 
+    /**
+     * 处理贸易订单列表代理关键词。
+     * keywords包含“代理”时,转换为代理属性过滤;订单表关键词字段不会存储该语义,
+     * 继续参与订单号、单位名称、商品名称模糊匹配会导致代理订单被错误过滤。
+     *
+     * @param dto 贸易订单列表查询DTO
+     */
+    static void applyAgentKeywordCondition(TradeOrderListSelectDTO dto) {
+        if (Objects.isNull(dto) || StringUtils.isBlank(dto.getKeywords()) || !dto.getKeywords().contains("代理")) {
+            return;
+        }
+        dto.setAgentFlag(Global.YES);
+        dto.setKeywords(null);
+    }
+
     /**
      * @desc: 设置两位小数
      * @author: yzc

+ 29 - 0
sckw-modules/sckw-order/src/test/java/com/sckw/order/serivce/KwoTradeOrderServiceTest.java

@@ -1,5 +1,6 @@
 package com.sckw.order.serivce;
 
+import com.sckw.order.model.dto.TradeOrderListSelectDTO;
 import com.sckw.system.api.model.dto.res.EntTypeResDto;
 import org.junit.Assert;
 import org.junit.Test;
@@ -93,4 +94,32 @@ public class KwoTradeOrderServiceTest {
 
         Assert.assertTrue(result.isEmpty());
     }
+
+    /**
+     * keywords包含“代理”时,应转换为代理属性过滤,并清空原关键词。
+     */
+    @Test
+    public void applyAgentKeywordConditionWhenKeywordsContainsAgent() {
+        TradeOrderListSelectDTO dto = new TradeOrderListSelectDTO();
+        dto.setKeywords("代理");
+
+        KwoTradeOrderService.applyAgentKeywordCondition(dto);
+
+        Assert.assertEquals(Integer.valueOf(1), dto.getAgentFlag());
+        Assert.assertNull(dto.getKeywords());
+    }
+
+    /**
+     * keywords不包含“代理”时,不应影响原关键词查询逻辑。
+     */
+    @Test
+    public void applyAgentKeywordConditionWhenKeywordsNotContainsAgent() {
+        TradeOrderListSelectDTO dto = new TradeOrderListSelectDTO();
+        dto.setKeywords("钢材");
+
+        KwoTradeOrderService.applyAgentKeywordCondition(dto);
+
+        Assert.assertNull(dto.getAgentFlag());
+        Assert.assertEquals("钢材", dto.getKeywords());
+    }
 }