Feature使用过程中遇到的一个坑

直接上代码

复制代码
 1      List<String> res = pageList;
 2 
 3         // 从callExtensionParamMap中解析出
 4         Long bosId = Objects.isNull(callExtensionParamMap.get(BOS_ID_KEY)) ? null: (Long) callExtensionParamMap.get(BOS_ID_KEY);
 5         Long productInstanceId = Objects.isNull(callExtensionParamMap.get(PRODUCT_INSTANCE_ID_KEY)) ? null: (Long) callExtensionParamMap.get(PRODUCT_INSTANCE_ID_KEY);
 6         Long productId = Objects.isNull(callExtensionParamMap.get(PRODUCT_ID_KEY)) ? null: (Long) callExtensionParamMap.get(PRODUCT_ID_KEY);
 7         String tCode = Objects.isNull(callExtensionParamMap.get(T_CODE_KEY)) ? null: (String) callExtensionParamMap.get(T_CODE_KEY);
 8         Long vid = Objects.isNull(callExtensionParamMap.get(VID_KEY)) ? null: (Long) callExtensionParamMap.get(VID_KEY);
 9         Integer vidType = Objects.isNull(callExtensionParamMap.get(VID_TYPE_KEY)) ? null: (Integer) callExtensionParamMap.get(VID_TYPE_KEY);
10 
11         UnfoldBaseRequest request = new UnfoldBaseRequest();
12         request.setBosId(bosId);
13         request.setProductInstanceId(productInstanceId);
14         request.setProductId(productId);
15         request.setTCode(tCode);
16         request.setVid(vid);
17         request.setVidType(vidType);
18         request.setWidList(widList);
19         
20         List<Future<Map<Long, UnfoldBaseResponse>>> futures = new ArrayList<>(domains.size());
21 
22         for (String domain : domains) {
23 
24             
25             request.setDomain(domain);
26 
27             Future<Map<Long, UnfoldBaseResponse>> future = commonExecutor.submit(new Callable<Map<Long, UnfoldBaseResponse>>() {
28                 @Override
29                 public Map<Long, UnfoldBaseResponse> call() throws Exception {
30                     return userIntegration.getUserSearchInfo(request);
31                 }
32             });
33 
34             futures.add(future);
35 
36         }
37 
38         for (Future<Map<Long, UnfoldBaseResponse>> future: futures) {
39             try {
40                 Map<Long, UnfoldBaseResponse> unfoldBaseResponseMap = future.get();
41 
42                 res = populateProperty(res, unfoldBaseResponseMap);
43             } catch (Exception e) {
44                 log.warn("crm组装信息异常", e);
45             }
46         }
复制代码

结果发现第30行里所有的请求domain都是一致的,我相信有经验的已经看出了端倪。

没错,因为submit方法里传入的是同一个request对象,那么就会以最后一个设置的domain作为最终请求的值去发起请求

修改方式:将Request创建放在for循环里面即可

复制代码
 1      // 从callExtensionParamMap中解析出
 2         Long bosId = Objects.isNull(callExtensionParamMap.get(BOS_ID_KEY)) ? null: (Long) callExtensionParamMap.get(BOS_ID_KEY);
 3         Long productInstanceId = Objects.isNull(callExtensionParamMap.get(PRODUCT_INSTANCE_ID_KEY)) ? null: (Long) callExtensionParamMap.get(PRODUCT_INSTANCE_ID_KEY);
 4         Long productId = Objects.isNull(callExtensionParamMap.get(PRODUCT_ID_KEY)) ? null: (Long) callExtensionParamMap.get(PRODUCT_ID_KEY);
 5         String tCode = Objects.isNull(callExtensionParamMap.get(T_CODE_KEY)) ? null: (String) callExtensionParamMap.get(T_CODE_KEY);
 6         Long vid = Objects.isNull(callExtensionParamMap.get(VID_KEY)) ? null: (Long) callExtensionParamMap.get(VID_KEY);
 7         Integer vidType = Objects.isNull(callExtensionParamMap.get(VID_TYPE_KEY)) ? null: (Integer) callExtensionParamMap.get(VID_TYPE_KEY);
 8 
 9         List<Future<Map<Long, UnfoldBaseResponse>>> futures = new ArrayList<>(domains.size());
10 
11         for (String domain : domains) {
12 
13             UnfoldBaseRequest request = new UnfoldBaseRequest();
14             request.setBosId(bosId);
15             request.setProductInstanceId(productInstanceId);
16             request.setProductId(productId);
17             request.setTCode(tCode);
18             request.setVid(vid);
19             request.setVidType(vidType);
20             request.setWidList(widList);
21             request.setDomain(domain);
22 
23             Future<Map<Long, UnfoldBaseResponse>> future = commonExecutor.submit(new Callable<Map<Long, UnfoldBaseResponse>>() {
24                 @Override
25                 public Map<Long, UnfoldBaseResponse> call() throws Exception {
26                     return userIntegration.getUserSearchInfo(request);
27                 }
28             });
29 
30             futures.add(future);
31 
32         }
33 
34         for (Future<Map<Long, UnfoldBaseResponse>> future: futures) {
35             try {
36                 Map<Long, UnfoldBaseResponse> unfoldBaseResponseMap = future.get();
37 
38                 res = populateProperty(res, unfoldBaseResponseMap);
39             } catch (Exception e) {
40                 log.warn("crm组装信息异常", e);
41             }
42         }
复制代码

 

posted on   Iversonstear  阅读(44)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示