|
|
@@ -15,6 +15,8 @@ import com.ruoyi.common.core.domain.AjaxResult;
|
|
|
import com.ruoyi.common.exception.ServiceException;
|
|
|
import com.ruoyi.common.utils.MessageUtils;
|
|
|
import com.ruoyi.common.utils.StringUtils;
|
|
|
+import com.ruoyi.common.utils.DictUtils;
|
|
|
+import com.ruoyi.common.core.domain.entity.SysDictData;
|
|
|
import com.ruoyi.framework.manager.AsyncManager;
|
|
|
import com.ruoyi.system.domain.InfoUser;
|
|
|
import com.ruoyi.system.domain.PosOrder;
|
|
|
@@ -282,6 +284,20 @@ public class PosOrderQsOprateController extends BaseController {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * newTask 距离上限(公里),从字典 sys_qs_newtask_distance 取;未配置/非法返回 null(不过滤)。
|
|
|
+ */
|
|
|
+ private Integer getNewTaskDistanceLimit() {
|
|
|
+ try {
|
|
|
+ List<SysDictData> list = DictUtils.getDictCache("sys_qs_newtask_distance");
|
|
|
+ if (list != null && !list.isEmpty()) {
|
|
|
+ return Integer.parseInt(list.get(0).getDictValue());
|
|
|
+ }
|
|
|
+ } catch (Exception ignored) {
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 骑手端订单列表(Tab分页)
|
|
|
*/
|
|
|
@@ -299,6 +315,13 @@ public class PosOrderQsOprateController extends BaseController {
|
|
|
case "newTask":
|
|
|
wrapper.eq(PosOrder::getType, 0L).eq(PosOrder::getDeliveryStatus, 0L).eq(PosOrder::getState, 2L).eq(PosOrder::getAfterSaleStatus, 0L);
|
|
|
if (longitude != null && latitude != null) {
|
|
|
+ // 距离上限(公里)从字典取,未配置则不过滤
|
|
|
+ Integer limitKm = getNewTaskDistanceLimit();
|
|
|
+ if (limitKm != null) {
|
|
|
+ long limitMeters = limitKm.longValue() * 1000L;
|
|
|
+ wrapper.apply("ST_Distance_Sphere(point(longitude, latitude), point({0}, {1})) <= {2}",
|
|
|
+ longitude, latitude, limitMeters);
|
|
|
+ }
|
|
|
wrapper.last("ORDER BY ST_Distance_Sphere(point(longitude, latitude), point(" + longitude + ", " + latitude + ")) ASC");
|
|
|
} else {
|
|
|
wrapper.orderByDesc(PosOrder::getCretim);
|