haungfuli 3 years ago
parent
commit
8ce541acb0

+ 40 - 5
winsea-haixin-plugin-wangluohuoyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/service/impl/PublishTaskInfoServiceImpl.java

@@ -48,6 +48,8 @@ public class PublishTaskInfoServiceImpl extends ServiceImpl<PublishTaskInfoMappe
     private INewsInfoService newsInfoService;
     private INewsInfoService newsInfoService;
     @Autowired
     @Autowired
     private IRepaymentInfoService repaymentInfoService;
     private IRepaymentInfoService repaymentInfoService;
+    @Autowired
+    private IProvinceCityInfoService provinceCityInfoService;
 
 
     /**
     /**
      * 地球半径,单位 km
      * 地球半径,单位 km
@@ -164,6 +166,7 @@ public class PublishTaskInfoServiceImpl extends ServiceImpl<PublishTaskInfoMappe
                         String str =  EntCoordUtil.getCoordinate(publishTaskInfo.getLoadingPlaceCity());
                         String str =  EntCoordUtil.getCoordinate(publishTaskInfo.getLoadingPlaceCity());
                         String str1 = str.substring(0, str.indexOf(","));//经度
                         String str1 = str.substring(0, str.indexOf(","));//经度
                         String str2 = str.substring(str1.length()+1, str.length());//纬度
                         String str2 = str.substring(str1.length()+1, str.length());//纬度
+
                         //装货地经纬度
                         //装货地经纬度
                         double lng1 = Math.toRadians(Double.valueOf(str1));
                         double lng1 = Math.toRadians(Double.valueOf(str1));
                         double lat1 = Math.toRadians(Double.valueOf(str2));
                         double lat1 = Math.toRadians(Double.valueOf(str2));
@@ -182,12 +185,44 @@ public class PublishTaskInfoServiceImpl extends ServiceImpl<PublishTaskInfoMappe
                             publishTaskInfoList.add(publishTaskInfo1);
                             publishTaskInfoList.add(publishTaskInfo1);
                         }
                         }
                     }
                     }
-                    //按货距排序,倒序
-                    publishTaskInfoList.sort(Comparator.comparing(PublishTaskInfo::getCargoDistance));
-                    //新增周边信息列表
-                    goodsSourceView.setPublishTaskInfoLists(publishTaskInfoList);
-                    }
+                }else {
+                    //查询发货地经纬度
+                    for(int i = 0; i < dataList1.size(); i++){
+                        PublishTaskInfo publishTaskInfo1 = dataList1.get(i);
+                        //发货地经纬度
+                        double lng2 = Math.toRadians(Double.valueOf(publishTaskInfo1.getSendLongitude()));
+                        double lat2 = Math.toRadians(Double.valueOf(publishTaskInfo1.getSendLatitude()));
+                        //根据省名查询省会城市
+                        ProvinceCityInfo provinceCityInfo = provinceCityInfoService.selectOne(new EntityWrapper<ProvinceCityInfo>()
+                            .like("province",publishTaskInfo.getLoadingPlace()));
+                        //根据省会城市获取经纬度
+                        String str =  EntCoordUtil.getCoordinate(provinceCityInfo.getCity());
+                        String str1 = str.substring(0, str.indexOf(","));//经度
+                        String str2 = str.substring(str1.length()+1, str.length());//纬度
 
 
+                        //装货地经纬度
+                        double lng1 = Math.toRadians(Double.valueOf(str1));
+                        double lat1 = Math.toRadians(Double.valueOf(str2));
+                        // 纬度之差
+                        double a = lat1 - lat2;
+                        // 经度之差
+                        double b = lng1 - lng2;
+                        // 计算两点距离的公式
+                        double s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) +
+                                Math.cos(lat1) * Math.cos(lat2) * Math.pow(Math.sin(b / 2), 2)));
+                        // 弧长乘地球半径, 返回单位: 千米
+                        s =  s * EARTH_RADIUS;
+                        if (s <= 300){
+                            //货距小于300公里,放入周边信息列表
+                            publishTaskInfo1.setCargoDistance(Math.floor(s));
+                            publishTaskInfoList.add(publishTaskInfo1);
+                        }
+                    }
+                }
+                //按货距排序,倒序
+                publishTaskInfoList.sort(Comparator.comparing(PublishTaskInfo::getCargoDistance));
+                //新增周边信息列表
+                goodsSourceView.setPublishTaskInfoLists(publishTaskInfoList);
             }
             }
         //将货源对象放入货源列表
         //将货源对象放入货源列表
         goodsSourceViews.add(goodsSourceView);
         goodsSourceViews.add(goodsSourceView);