Browse Source

陆运修改

Signed-off-by: sunhz <mpcoo@foxmail.com>
sunhz 3 years ago
parent
commit
1aa1ab91f1

+ 10 - 0
blade-service-api/blade-land-api/src/main/java/org/springblade/land/entity/OrderTrack.java

@@ -55,6 +55,16 @@ public class OrderTrack implements Serializable {
 	@ApiModelProperty(value = "车牌号")
 	private String plateNo;
 	/**
+	 * 经度处理
+	 */
+	@ApiModelProperty(value = "经度处理")
+	private Double longitude;
+	/**
+	 * 纬度处理
+	 */
+	@ApiModelProperty(value = "纬度处理")
+	private Double latitude;
+	/**
 	 * 经度
 	 */
 	@ApiModelProperty(value = "经度")

+ 23 - 0
blade-service/blade-land/src/main/java/org/springblade/land/controller/OrderTrackController.java

@@ -33,6 +33,9 @@ import org.springblade.land.vo.OrderTrackVO;
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * 陆运订单轨迹表 控制器
@@ -71,6 +74,26 @@ public class OrderTrackController extends BladeController {
 	}
 
 	/**
+	 * 陆运定位点列表
+	 */
+	@GetMapping("/location-list")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "分页", notes = "传入orderTrack")
+	public R<List<List<Double>>> locationList(OrderTrack orderTrack) {
+		List<List<Double>> data = new ArrayList<>();
+
+		List<OrderTrack> trackList = orderTrackService.list(Condition.getQueryWrapper(orderTrack));
+		trackList.forEach(track -> {
+			List<Double> temp = new ArrayList<>();
+			temp.add(track.getLongitude());
+			temp.add(track.getLatitude());
+			data.add(temp);
+		});
+
+		return R.data(data);
+	}
+
+	/**
 	 * 自定义分页 陆运订单轨迹表
 	 */
 	@GetMapping("/page")

+ 29 - 8
blade-service/blade-land/src/main/java/org/springblade/land/handler/JobHandler.java

@@ -16,6 +16,9 @@ import org.springblade.land.service.IOrderItemService;
 import org.springblade.land.service.IOrderTrackService;
 import org.springframework.stereotype.Component;
 
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -41,43 +44,61 @@ public class JobHandler {
 
 	@XxlJob("locateJobHandler")
 	public ReturnT<String> locateJobHandler(String param) throws Exception {
+		// 创建线程池
+		ExecutorService pool = new ThreadPoolExecutor(5, 200, 0L,
+			TimeUnit.MILLISECONDS, new LinkedBlockingQueue<>(1024),
+			Executors.defaultThreadFactory(),
+			new ThreadPoolExecutor.AbortPolicy());
+
 		try {
 			JSONObject json = JSON.parseObject(param);
 			String tenantId = json.getString("tenantId");
 			String token = getToken(json);
 
 			List<OrderItem> itemList = orderItemService.list(new LambdaQueryWrapper<OrderItem>()
+				.select(OrderItem::getId, OrderItem::getPlateNo)
 				.in(OrderItem::getStatus, 2, 3, 5, 6)
 				.eq(OrderItem::getKind, 2)
 				.eq(OrderItem::getIsDeleted, 0)
 				.eq(OrderItem::getTenantId, tenantId)
 			);
 
-			// 创建线程池
-			ExecutorService newFixedThreadPool = new ThreadPoolExecutor(5, 200, 0L,
-				TimeUnit.MILLISECONDS, new LinkedBlockingQueue<>(1024),
-				Executors.defaultThreadFactory(),
-				new ThreadPoolExecutor.AbortPolicy());
 			for (OrderItem item : itemList) {
-				newFixedThreadPool.execute(() -> {
+				Future<String> result = pool.submit(() -> {
 					// 业务处理
 					try {
 						String data = getData(json, token, item.getPlateNo());
 						OrderTrack track = JSON.parseObject(data, OrderTrack.class);
 						if (!ObjectUtil.isEmpty(track)) {
+							// 计算并组装经纬度
+							BigDecimal divisor = new BigDecimal("600000");
+							BigDecimal longitude = new BigDecimal(track.getLon()).divide(divisor, 6, RoundingMode.HALF_UP);
+							BigDecimal latitude = new BigDecimal(track.getLat()).divide(divisor, 6, RoundingMode.HALF_UP);
+
 							track.setItemId(item.getId());
 							track.setPlateNo(item.getPlateNo());
+							track.setLongitude(longitude.doubleValue());
+							track.setLatitude(latitude.doubleValue());
+							track.setCreateTime(new Date());
 							orderTrackService.save(track);
 						}
+						return null;
 					} catch (Exception e) {
 						XxlJobLogger.log(e);
+						return e.getMessage();
 					}
 				});
+
+				if (!StringUtil.isEmpty(result.get())) {
+					return new ReturnT<>(ReturnT.FAIL_CODE, result.get());
+				}
 			}
-			return ReturnT.SUCCESS;
+			return new ReturnT<>("获取数据成功");
 		} catch (Exception e) {
 			XxlJobLogger.log(e);
-			return ReturnT.FAIL;
+			return new ReturnT<>(ReturnT.FAIL_CODE, e.getMessage());
+		} finally {
+			pool.shutdown();
 		}
 	}