|
@@ -4,9 +4,13 @@ import com.baomidou.mybatisplus.mapper.EntityWrapper;
|
|
import com.baomidou.mybatisplus.plugins.Page;
|
|
import com.baomidou.mybatisplus.plugins.Page;
|
|
import com.google.common.collect.Lists;
|
|
import com.google.common.collect.Lists;
|
|
import com.yh.saas.common.support.util.IdGenerator;
|
|
import com.yh.saas.common.support.util.IdGenerator;
|
|
|
|
+import com.yh.saas.common.support.util.StringUtils;
|
|
|
|
+import com.yh.saas.plugin.yiliangyiyun.constant.NumberConstant;
|
|
import com.yh.saas.plugin.yiliangyiyun.constant.StatusEnum;
|
|
import com.yh.saas.plugin.yiliangyiyun.constant.StatusEnum;
|
|
import com.yh.saas.plugin.yiliangyiyun.entity.*;
|
|
import com.yh.saas.plugin.yiliangyiyun.entity.*;
|
|
import com.yh.saas.plugin.yiliangyiyun.entity.view.GoodsSourceView;
|
|
import com.yh.saas.plugin.yiliangyiyun.entity.view.GoodsSourceView;
|
|
|
|
+import com.yh.saas.plugin.yiliangyiyun.exception.YException;
|
|
|
|
+import com.yh.saas.plugin.yiliangyiyun.exception.YExceptionEnum;
|
|
import com.yh.saas.plugin.yiliangyiyun.mapper.PublishTaskInfoMapper;
|
|
import com.yh.saas.plugin.yiliangyiyun.mapper.PublishTaskInfoMapper;
|
|
import com.yh.saas.plugin.yiliangyiyun.service.*;
|
|
import com.yh.saas.plugin.yiliangyiyun.service.*;
|
|
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
|
|
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
|
|
@@ -149,38 +153,41 @@ public class PublishTaskInfoServiceImpl extends ServiceImpl<PublishTaskInfoMappe
|
|
//所有货源列表
|
|
//所有货源列表
|
|
List<PublishTaskInfo> dataList1 = baseMapper.getAllListsByCondition(pageView);
|
|
List<PublishTaskInfo> dataList1 = baseMapper.getAllListsByCondition(pageView);
|
|
if (!CollectionUtils.isEmpty(dataList1)){
|
|
if (!CollectionUtils.isEmpty(dataList1)){
|
|
- //查询发货地经纬度
|
|
|
|
- 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()));
|
|
|
|
- //根据装货城市获取经纬度
|
|
|
|
- String str = EntCoordUtil.getCoordinate(publishTaskInfo.getLoadingPlaceCity());
|
|
|
|
- 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);
|
|
|
|
|
|
+ if(!StringUtils.isEmpty(publishTaskInfo.getLoadingPlaceCity())){
|
|
|
|
+ //查询发货地经纬度
|
|
|
|
+ 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()));
|
|
|
|
+ //根据装货城市获取经纬度
|
|
|
|
+ String str = EntCoordUtil.getCoordinate(publishTaskInfo.getLoadingPlaceCity());
|
|
|
|
+ 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);
|
|
|
|
|
|
+ //按货距排序,倒序
|
|
|
|
+ publishTaskInfoList.sort(Comparator.comparing(PublishTaskInfo::getCargoDistance));
|
|
|
|
+ //新增周边信息列表
|
|
|
|
+ goodsSourceView.setPublishTaskInfoLists(publishTaskInfoList);
|
|
|
|
+ }
|
|
|
|
+
|
|
}
|
|
}
|
|
//将货源对象放入货源列表
|
|
//将货源对象放入货源列表
|
|
goodsSourceViews.add(goodsSourceView);
|
|
goodsSourceViews.add(goodsSourceView);
|
|
@@ -324,6 +331,35 @@ public class PublishTaskInfoServiceImpl extends ServiceImpl<PublishTaskInfoMappe
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 刷新
|
|
|
|
+ * @param publishTaskInfo
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ @Override
|
|
|
|
+ public String refresh(PublishTaskInfo publishTaskInfo){
|
|
|
|
+ //查询发布任务
|
|
|
|
+ PublishTaskInfo publishTaskInfo1 = this.seeTask(publishTaskInfo.getId());
|
|
|
|
+ if(publishTaskInfo1!= null){
|
|
|
|
+ //将此发布任务刷新次数变为1
|
|
|
|
+ publishTaskInfo1.setRefreshTimes("1");
|
|
|
|
+ this.updateById(publishTaskInfo1);
|
|
|
|
+ }
|
|
|
|
+ //查询货主
|
|
|
|
+ CargoOwnerInfo cargoOwnerInfo = cargoOwnerInfoService.selectOne(new EntityWrapper<CargoOwnerInfo>()
|
|
|
|
+ .eq(CargoOwnerInfo.QueryFiles.COMMON_ID, publishTaskInfo.getCommonId())
|
|
|
|
+ .eq(CargoOwnerInfo.QueryFiles.DELETE_FLAG, NumberConstant.CONSTANT0));
|
|
|
|
+ if(cargoOwnerInfo.getRefreshTimes() < 3){
|
|
|
|
+ //如果货主今日刷新次数小于3次,次数+1
|
|
|
|
+ Long number = cargoOwnerInfo.getRefreshTimes() + 1;
|
|
|
|
+ cargoOwnerInfo.setRefreshTimes(number);
|
|
|
|
+ cargoOwnerInfoService.updateById(cargoOwnerInfo);
|
|
|
|
+ }else {
|
|
|
|
+ throw new YException(YExceptionEnum.REFRESH_TIMES_UPPER_LIMIT);
|
|
|
|
+ }
|
|
|
|
+ return "ok";
|
|
|
|
+ }
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 抢单
|
|
* 抢单
|
|
* @param publishTaskInfo
|
|
* @param publishTaskInfo
|