订单轨迹回放
This commit is contained in:
@ -52,11 +52,11 @@ public class ZcCar extends BaseEntity
|
|||||||
/** 最高时速(km/h) */
|
/** 最高时速(km/h) */
|
||||||
private String maxSpeed;
|
private String maxSpeed;
|
||||||
|
|
||||||
/** LOT识别号 */
|
/** IoT识别号 */
|
||||||
@Excel(name = "LOT识别号")
|
@Excel(name = "IoT识别号")
|
||||||
private String lotNumber;
|
private String lotNumber;
|
||||||
|
|
||||||
@Excel(name = "LOT品牌", dictType = "key_car_lot_brand")
|
@Excel(name = "IoT识别号", dictType = "key_car_lot_brand")
|
||||||
private String lotBrand;
|
private String lotBrand;
|
||||||
|
|
||||||
/** 采购日期 */
|
/** 采购日期 */
|
||||||
@ -81,7 +81,6 @@ public class ZcCar extends BaseEntity
|
|||||||
/** IoT设备状态 */
|
/** IoT设备状态 */
|
||||||
private String iotStatus;
|
private String iotStatus;
|
||||||
|
|
||||||
/** IoT识别码 */
|
|
||||||
private String iotCode;
|
private String iotCode;
|
||||||
|
|
||||||
/** 所属运营商ID */
|
/** 所属运营商ID */
|
||||||
|
|||||||
@ -7,6 +7,7 @@ import java.util.List;
|
|||||||
import com.ruoyi.api.DataPushApi;
|
import com.ruoyi.api.DataPushApi;
|
||||||
import com.ruoyi.common.constant.UserConstants;
|
import com.ruoyi.common.constant.UserConstants;
|
||||||
import com.ruoyi.common.utils.DateUtils;
|
import com.ruoyi.common.utils.DateUtils;
|
||||||
|
import com.ruoyi.common.utils.StringUtils;
|
||||||
import com.ruoyi.operation.domain.Company;
|
import com.ruoyi.operation.domain.Company;
|
||||||
import com.ruoyi.operation.service.ICompanyService;
|
import com.ruoyi.operation.service.ICompanyService;
|
||||||
import com.ruoyi.orders.domain.ZcOrderCarChange;
|
import com.ruoyi.orders.domain.ZcOrderCarChange;
|
||||||
@ -176,43 +177,18 @@ public class ZcOrderMainController extends BaseController
|
|||||||
* 租车订单轨迹
|
* 租车订单轨迹
|
||||||
*/
|
*/
|
||||||
@GetMapping("/orderTrajectory/{id}")
|
@GetMapping("/orderTrajectory/{id}")
|
||||||
public String orderTrajectory(@PathVariable("id") Long id, ModelMap mmap)
|
public String orderTrajectory(@PathVariable("id") Long id, ModelMap mmap){
|
||||||
{
|
|
||||||
// 调用
|
|
||||||
List<TrajectoryPoint> trajectoryPoints = dataPushApi.fetchOrderTrajectory("15135683068", "2025-10-15 08:08:00", "2025-10-17 16:00:00");
|
|
||||||
|
|
||||||
|
|
||||||
// List<TrajectoryPoint> trajectoryPoints = new ArrayList<>();
|
|
||||||
// double[][] testData = {
|
|
||||||
// {112.925285, 27.900163}, {112.925285, 27.900163}, {112.925285, 27.900163},
|
|
||||||
// {112.925285, 27.900163}, {112.925285, 27.900163}, {112.925285, 27.900163},
|
|
||||||
// {112.925285, 27.900163}, {112.925285, 27.900163}, {112.925285, 27.900163},
|
|
||||||
// {112.925285, 27.900163}, {112.925285, 27.900163}, {112.925285, 27.900163},
|
|
||||||
// {112.925285, 27.900163}, {112.925285, 27.900163}, {112.925285, 27.900163},
|
|
||||||
// {112.925285, 27.900163}, {112.925285, 27.900163}, {112.925855, 27.898977},
|
|
||||||
// {112.925745, 27.898878}, {112.9261, 27.898802}, {112.926718, 27.898633},
|
|
||||||
// {112.927295, 27.898673}, {112.92779, 27.898652}, {112.928342, 27.898685},
|
|
||||||
// {112.928483, 27.89868}, {112.929135, 27.898667}, {112.9299, 27.898445},
|
|
||||||
// {112.930225, 27.898263}, {112.93024, 27.898233}, {112.930213, 27.898052},
|
|
||||||
// {112.929905, 27.897193}, {112.929437, 27.895972}, {112.929417, 27.895775},
|
|
||||||
// {112.929483, 27.895702}, {112.929832, 27.895443}, {112.929875, 27.89528},
|
|
||||||
// {112.930153, 27.894773}, {112.930123, 27.894712}, {112.929758, 27.894537},
|
|
||||||
// {112.929558, 27.894395}, {112.929668, 27.894208}, {112.929712, 27.89416},
|
|
||||||
// {112.930053, 27.893827}, {112.930018, 27.89383}, {112.930027, 27.893798},
|
|
||||||
// {112.930027, 27.893798}, {112.930027, 27.893798}, {112.93002, 27.893797},
|
|
||||||
// {112.93002, 27.893797}, {112.93002, 27.893797}, {112.929775, 27.89305},
|
|
||||||
// {112.929775, 27.89305}, {112.92978, 27.893495}, {112.92978, 27.893495}
|
|
||||||
// };
|
|
||||||
// // 创建轨迹点列表
|
|
||||||
// for (int i = 0; i < testData.length; i++) {
|
|
||||||
// TrajectoryPoint point = new TrajectoryPoint();
|
|
||||||
// point.setLng(testData[i][0]); // 经度
|
|
||||||
// point.setLat(testData[i][1]); // 纬度
|
|
||||||
// // 时间戳可以按需添加
|
|
||||||
// // point.setTs("2025-10-17 14:" + String.format("%02d", (39 + i)) + ":36.0");
|
|
||||||
// trajectoryPoints.add(point);
|
|
||||||
// }
|
|
||||||
|
|
||||||
|
ZcOrderMain orderMain = zcOrderMainService.selectZcOrderMainByOrderId(id);
|
||||||
|
if(orderMain == null){
|
||||||
|
return prefix + "/orderTrajectory";
|
||||||
|
}
|
||||||
|
String startTm = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS,orderMain.getStartRentTime());
|
||||||
|
String endTm = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS,new Date());
|
||||||
|
if(orderMain.getActEndRentTime() != null) {
|
||||||
|
endTm = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, orderMain.getActEndRentTime());
|
||||||
|
}
|
||||||
|
List<TrajectoryPoint> trajectoryPoints = dataPushApi.fetchOrderTrajectory(orderMain.getLotNumber(), startTm, endTm);
|
||||||
// 设置中心点和轨迹点列表
|
// 设置中心点和轨迹点列表
|
||||||
if (!trajectoryPoints.isEmpty()) {
|
if (!trajectoryPoints.isEmpty()) {
|
||||||
mmap.put("centerPoint", trajectoryPoints.get(0));
|
mmap.put("centerPoint", trajectoryPoints.get(0));
|
||||||
|
|||||||
@ -176,6 +176,11 @@ public class ZcOrderMain extends BaseEntity
|
|||||||
/** 订单租车车辆图片信息信息 */
|
/** 订单租车车辆图片信息信息 */
|
||||||
private List<ZcOrderCarImg> zcOrderCarImgList;
|
private List<ZcOrderCarImg> zcOrderCarImgList;
|
||||||
|
|
||||||
|
@Transient
|
||||||
|
private String lotNumber;
|
||||||
|
@Transient
|
||||||
|
private String lotBrand;
|
||||||
|
|
||||||
public void setOrderId(Long orderId)
|
public void setOrderId(Long orderId)
|
||||||
{
|
{
|
||||||
this.orderId = orderId;
|
this.orderId = orderId;
|
||||||
@ -548,6 +553,22 @@ public class ZcOrderMain extends BaseEntity
|
|||||||
this.distribed = distribed;
|
this.distribed = distribed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getLotBrand() {
|
||||||
|
return lotBrand;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setLotBrand(String lotBrand) {
|
||||||
|
this.lotBrand = lotBrand;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getLotNumber() {
|
||||||
|
return lotNumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setLotNumber(String lotNumber) {
|
||||||
|
this.lotNumber = lotNumber;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return new ToStringBuilder(this)
|
return new ToStringBuilder(this)
|
||||||
|
|||||||
@ -47,6 +47,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<result property="operatorName" column="operator_name" />
|
<result property="operatorName" column="operator_name" />
|
||||||
<result property="storeName" column="store_name" />
|
<result property="storeName" column="store_name" />
|
||||||
<result property="licensePlate" column="license_plate" />
|
<result property="licensePlate" column="license_plate" />
|
||||||
|
<result property="lotNumber" column="lot_number" />
|
||||||
|
<result property="lotBrand" column="lot_brand" />
|
||||||
<result property="distribed" column="distribed" />
|
<result property="distribed" column="distribed" />
|
||||||
</resultMap>
|
</resultMap>
|
||||||
|
|
||||||
@ -137,7 +139,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<select id="selectZcOrderMainByOrderId" parameterType="Long" resultMap="ZcOrderMainZcOrderSubResult">
|
<select id="selectZcOrderMainByOrderId" parameterType="Long" resultMap="ZcOrderMainZcOrderSubResult">
|
||||||
select a.order_id, a.order_no, a.order_status, a.operator_id, a.store_id, a.vehicle_id, a.car_model_id, a.customer_id, a.customer_name, a.customer_phone, a.battery_type, a.rental_type, a.rental_days, a.rental_price, a.deposit_price, a.overdue_fee, a.overdue_type, a.is_deposit_free, a.is_auto_deduct, a.first_order_time, a.pick_car_time, a.start_rent_time, a.end_rent_time, a.req_end_rent_time, a.act_end_rent_time, a.rental_duration, a.overdue_days, a.renewal_times, a.charge_times, a.rent_car_rule_id, a.rent_battey_rule_id, a.damage_amount,a.damage_desc,a.order_amount, a.overdue_amount, a.end_order_time, a.distribed, a.del_flag, a.create_time, a.update_time,
|
select a.order_id, a.order_no, a.order_status, a.operator_id, a.store_id, a.vehicle_id, a.car_model_id, a.customer_id, a.customer_name, a.customer_phone, a.battery_type, a.rental_type, a.rental_days, a.rental_price, a.deposit_price, a.overdue_fee, a.overdue_type, a.is_deposit_free, a.is_auto_deduct, a.first_order_time, a.pick_car_time, a.start_rent_time, a.end_rent_time, a.req_end_rent_time, a.act_end_rent_time, a.rental_duration, a.overdue_days, a.renewal_times, a.charge_times, a.rent_car_rule_id, a.rent_battey_rule_id, a.damage_amount,a.damage_desc,a.order_amount, a.overdue_amount, a.end_order_time, a.distribed, a.del_flag, a.create_time, a.update_time,
|
||||||
b.suborder_id as sub_suborder_id, b.order_id as sub_order_id, b.suborder_no as sub_suborder_no, b.suborder_type as sub_suborder_type, b.amount as sub_amount, b.payment_method as sub_payment_method, b.vin_battery_no as sub_vin_battery_no, b.created_at as sub_created_at, b.payment_id as sub_payment_id, b.paid_at as sub_paid_at, b.pay_status as sub_pay_status,b.transaction_id as sub_transaction_id, b.remark as sub_remark, b.del_flag as sub_del_flag, b.create_time as sub_create_time, b.update_time as sub_update_time,
|
b.suborder_id as sub_suborder_id, b.order_id as sub_order_id, b.suborder_no as sub_suborder_no, b.suborder_type as sub_suborder_type, b.amount as sub_amount, b.payment_method as sub_payment_method, b.vin_battery_no as sub_vin_battery_no, b.created_at as sub_created_at, b.payment_id as sub_payment_id, b.paid_at as sub_paid_at, b.pay_status as sub_pay_status,b.transaction_id as sub_transaction_id, b.remark as sub_remark, b.del_flag as sub_del_flag, b.create_time as sub_create_time, b.update_time as sub_update_time,
|
||||||
c.company_name as operator_name,s.name as store_name,zc.license_plate as license_plate,
|
c.company_name as operator_name,s.name as store_name,zc.license_plate as license_plate, zc.lot_number as lot_number,zc.lot_brand as lot_brand,
|
||||||
i.id as sub_id, i.order_id as sub_order_id, i.order_no as sub_order_no, i.img_type as sub_img_type, i.img_url as sub_img_url, i.create_time as sub_create_time, i.update_time as sub_update_time
|
i.id as sub_id, i.order_id as sub_order_id, i.order_no as sub_order_no, i.img_type as sub_img_type, i.img_url as sub_img_url, i.create_time as sub_create_time, i.update_time as sub_update_time
|
||||||
from zc_order_main a
|
from zc_order_main a
|
||||||
left join zc_company c on c.id = a.operator_id
|
left join zc_company c on c.id = a.operator_id
|
||||||
|
|||||||
@ -39,13 +39,13 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-sm-3 control-label">LOT识别号:</label>
|
<label class="col-sm-3 control-label">IoT识别号:</label>
|
||||||
<div class="col-sm-8">
|
<div class="col-sm-8">
|
||||||
<input name="lotNumber" id="lotNumber" class="form-control" type="text">
|
<input name="lotNumber" id="lotNumber" class="form-control" type="text">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-sm-3 control-label">LOT品牌:</label>
|
<label class="col-sm-3 control-label">IoT品牌:</label>
|
||||||
<div class="col-sm-8">
|
<div class="col-sm-8">
|
||||||
<select id="lotBrand" name="lotBrand" class="form-control m-b" th:with="type=${@dict.getType('key_car_lot_brand')}">
|
<select id="lotBrand" name="lotBrand" class="form-control m-b" th:with="type=${@dict.getType('key_car_lot_brand')}">
|
||||||
<option value="">请选择品牌</option>
|
<option value="">请选择品牌</option>
|
||||||
@ -239,7 +239,7 @@
|
|||||||
if(lotNumber != '') {
|
if(lotNumber != '') {
|
||||||
var lotBrand = $("#lotBrand").val();
|
var lotBrand = $("#lotBrand").val();
|
||||||
if (lotBrand == '') {
|
if (lotBrand == '') {
|
||||||
$.modal.alert("请选择LOT品牌");
|
$.modal.alert("请选择IoT品牌");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -52,7 +52,7 @@
|
|||||||
</select>
|
</select>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<label>LOT品牌:</label>
|
<label>IoT品牌:</label>
|
||||||
<select name="lotBrand" th:with="type=${@dict.getType('key_car_lot_brand')}">
|
<select name="lotBrand" th:with="type=${@dict.getType('key_car_lot_brand')}">
|
||||||
<option value="">所有</option>
|
<option value="">所有</option>
|
||||||
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
|
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
|
||||||
@ -137,11 +137,11 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
field: 'lotNumber',
|
field: 'lotNumber',
|
||||||
title: 'LOT识别号'
|
title: 'IoT识别号'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
field: 'lotBrand',
|
field: 'lotBrand',
|
||||||
title: 'LOT品牌',
|
title: 'IoT品牌',
|
||||||
formatter: function(value, row, index) {
|
formatter: function(value, row, index) {
|
||||||
return $.table.selectDictLabel(lotBrandDatas, value);
|
return $.table.selectDictLabel(lotBrandDatas, value);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -41,13 +41,13 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-sm-3 control-label">LOT识别号:</label>
|
<label class="col-sm-3 control-label">IoT识别号:</label>
|
||||||
<div class="col-sm-8">
|
<div class="col-sm-8">
|
||||||
<input id="lotNumber" name="lotNumber" th:field="*{lotNumber}" class="form-control" type="text">
|
<input id="lotNumber" name="lotNumber" th:field="*{lotNumber}" class="form-control" type="text">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-sm-3 control-label">LOT品牌:</label>
|
<label class="col-sm-3 control-label">IoT品牌:</label>
|
||||||
<div class="col-sm-8">
|
<div class="col-sm-8">
|
||||||
<select id="lotBrand" name="lotBrand" class="form-control m-b" th:with="type=${@dict.getType('key_car_lot_brand')}">
|
<select id="lotBrand" name="lotBrand" class="form-control m-b" th:with="type=${@dict.getType('key_car_lot_brand')}">
|
||||||
<option value="">请选择品牌</option>
|
<option value="">请选择品牌</option>
|
||||||
@ -299,7 +299,7 @@
|
|||||||
if(lotNumber != '') {
|
if(lotNumber != '') {
|
||||||
var lotBrand = $("#lotBrand").val();
|
var lotBrand = $("#lotBrand").val();
|
||||||
if (lotBrand == '') {
|
if (lotBrand == '') {
|
||||||
$.modal.alert("请选择LOT品牌");
|
$.modal.alert("请选择IoT品牌");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user