Explorar o código

feat:mongo聚合查询测试

wangweiyu %!s(int64=4) %!d(string=hai) anos
pai
achega
0e355a0fdd

+ 3 - 2
src/main/java/com/aoyang/tms/controller/TestController.java

@@ -192,14 +192,15 @@ public class TestController {
         Result<Boolean> send = messageFeign.send(smsSend, null, null, null);
         return send;
     }
-    @ApiOperation(value = "测试运单短信模板", notes = "根据经纬度查询位置")
+
+    @ApiOperation(value = "mongo聚合查询测试", notes = "根据经纬度查询位置")
     @PostMapping("/test_mongo_group")
     public Result testGroup(@RequestParam String truckIds) {
         String[] split = truckIds.split(",");
         List<String> list = Arrays.asList(split);
         List<Long> ids = list.stream().
                 map(s->Long.parseLong(s)).collect(Collectors.toList());
-        return new Result(commonService.getLocation(ids));
+        return new Result(commonService.getLocations(list));
     }
 
 }

+ 2 - 3
src/main/java/com/aoyang/tms/service/CommonService.java

@@ -11,7 +11,6 @@ import com.aoyang.tms.feign.result.Org;
 import java.time.LocalDateTime;
 import java.util.List;
 import java.util.Map;
-import java.util.Set;
 
 /**
  * @Description: 常用工具类,如获取组织信息、用户信息、卡车信息、验证Result、验证通联返回值
@@ -130,9 +129,9 @@ public interface CommonService {
 
 
     /**
-     * 根据truckId获取车辆信息
+     * 根据truckId list获取车辆位置map
      */
-    Map<Long, LocationVO> getLocation(List<Long> truckId);
+    Map<String, LocationVO> getLocations(List<String> truckId);
 
 
     /**

+ 4 - 17
src/main/java/com/aoyang/tms/service/impl/CommonServiceImpl.java

@@ -357,9 +357,9 @@ public class CommonServiceImpl implements CommonService {
     }
 
     @Override
-    public Map<Long, LocationVO> getLocation(List<Long> truckIds) {
+    public Map<String, LocationVO> getLocations(List<String> truckIds) {
         List<String> clientIds = new ArrayList();
-        for (Long truckId : truckIds) {
+        for (String truckId : truckIds) {
             QueryWrapper<TruckSimCard> queryWrapper = new QueryWrapper<>();
             queryWrapper.eq("truck_id", truckId);
             TruckSimCard truckSimCard = truckSimCardService.getOne(queryWrapper);
@@ -368,7 +368,7 @@ public class CommonServiceImpl implements CommonService {
                 clientIds.add(null);
                 continue;
             }
-            clientIds.add(truckSimCard.getClientId());
+            clientIds.add(truckSimCard.getSimCard());
         }
         log.info("getLocation clientIds:{}", JSON.toJSONString(clientIds));
         Query query = new Query(Criteria.where("clientId").in(clientIds).and("messageId").is(512));
@@ -379,7 +379,6 @@ public class CommonServiceImpl implements CommonService {
 //        // 筛选条件
 //        operations.add(Aggregation.match(Criteria.where("clientId").in(clientIds).and("messageId").is(512)));
 //        operations.sort(new Sort(Sort.Direction.DESC, "dateTime"));
-//
 //        // 分组字段
 //        GroupOperation groupOperation = Aggregation.group("clientId").first();
 //        SortOperation sortOperation = Aggregation.sort(Sort.by(Sort.Direction.DESC, "dateTime"));
@@ -390,10 +389,8 @@ public class CommonServiceImpl implements CommonService {
 //        // 添加选项  (聚合查询字段和添加筛选是有区别的注意)
 //        operations.add(groupOperation);
 //        operations.add(sortOperation);
-//
 //        // 最终聚合查询所有信息
 //        Aggregation aggregation = Aggregation.newAggregation(operations);
-//
 //        // 查询结果
 //        AggregationResults<HashMap> results = mongoTemplate.aggregate(aggregation, "tms_dev", HashMap.class);
 //        //获取结果
@@ -414,17 +411,7 @@ public class CommonServiceImpl implements CommonService {
 
         List<TmsMongoDoc> tmsMongoDocs =
                 mongoTemplate.aggregate(typedAggregation, TmsMongoDoc.class).getMappedResults();
-//        if (tmsMongoDoc != null) {
-//            location = new LocationVO();
-//            location.setLatitude(tmsMongoDoc.getLatitude() + "");
-//            location.setLongitude(tmsMongoDoc.getLongitude() + "");
-//            location.setCarNumber(truckSimCard.getCarNumber());
-//            location.setTruckId(truckSimCard.getTruckId());
-//            location.setDate(tmsMongoDoc.getCreateTime());
-//        }
-//        return location;
-        log.info("getLocation results:{}", JSON.toJSONString(tmsMongoDocs));
-        Map<Long, LocationVO> result = new HashMap();
+        Map<String, LocationVO> result = new HashMap();
         for (TmsMongoDoc doc : tmsMongoDocs) {
             for (int i=0;i<clientIds.size();i++) {
                 if (clientIds.get(i).equals(doc.getClientId())) {

+ 26 - 8
src/main/java/com/aoyang/tms/service/impl/WorkOrderServiceImpl.java

@@ -28,6 +28,7 @@ import java.time.Duration;
 import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -180,17 +181,19 @@ public class WorkOrderServiceImpl extends ServiceImpl<WorkOrderMapper, WorkOrder
         Long mongoCost = 0L;
         Long adressCost = 0L;
         Long driverReadInfoCost = 0L;
+        List<String> truckIds = new ArrayList<>();
         for (TruckOrderManageVO vo : truckOrderList) {
             Long t3 = System.currentTimeMillis();
-            LocationVO location = commonService.getLocation(Long.valueOf(vo.getTruckId()));
+            truckIds.add(vo.getTruckId());
+//            LocationVO location = commonService.getLocation(Long.valueOf(vo.getTruckId()));
             Long t4 = System.currentTimeMillis();
             log.info("getLocation 耗时:{}", t4-t3);
-            if (location != null) {
-                vo.setLatitude(location.getLatitude());
-                vo.setLongitude(location.getLongitude());
-                vo.setLocation(commonService.longitudeToAddress(location.getLongitude(), location.getLatitude()));
-                log.info("longitudeToAddress 耗时:{}", System.currentTimeMillis()-t4);
-            }
+//            if (location != null) {
+//                vo.setLatitude(location.getLatitude());
+//                vo.setLongitude(location.getLongitude());
+//                vo.setLocation(commonService.longitudeToAddress(location.getLongitude(), location.getLatitude()));
+//                log.info("longitudeToAddress 耗时:{}", System.currentTimeMillis()-t4);
+//            }
             Long t5 = System.currentTimeMillis();
             if (vo.getOrderId() != null) {
                 // 设置已读未读信息
@@ -249,8 +252,23 @@ public class WorkOrderServiceImpl extends ServiceImpl<WorkOrderMapper, WorkOrder
 
         }
 
+        Long t10 = System.currentTimeMillis();
+        Map<String, LocationVO> locations = commonService.getLocations(truckIds);
+        Long t11 = System.currentTimeMillis();
+        for (TruckOrderManageVO vo : truckOrderList) {
+            LocationVO location = locations.get(vo.getTruckId());
+            if (location != null) {
+                vo.setLatitude(location.getLatitude());
+                vo.setLongitude(location.getLongitude());
+                vo.setLocation(commonService.longitudeToAddress(location.getLongitude(), location.getLatitude()));
+            }
+        }
+        Long t12 = System.currentTimeMillis();
+
+        log.info("longitudeToAddress 耗时:{}", System.currentTimeMillis()-t11);
+
         log.info("getTruckOrderManageList 查询实时调度列表耗时:{}", t2-t1);
-        log.info("getTruckOrderManageList 查询mongo耗时:{}", mongoCost);
+        log.info("getTruckOrderManageList 查询mongo耗时:{}", t11 - t10);
         log.info("getTruckOrderManageList 查询adress耗时:{}", adressCost);
         log.info("getTruckOrderManageList 查询readInfos耗时:{}", driverReadInfoCost);