From da5cf3d82ea1044c338513147b0078be031465a0 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期三, 20 五月 2026 14:54:10 +0800
Subject: [PATCH] Merge branch '1.1' of http://120.76.84.145:10101/gitblit/r/java/Robotaxi into 1.0
---
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/controller/XpOrderController.java | 7 -
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/XpOperationsUserController.java | 22 ++++
xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/account/XpOperationUserClientFallbackFactory.java | 6 +
xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/account/XpOperationUserClient.java | 10 ++
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/vo/XpCruiseCheckInRuleInfoVo.java | 2
xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/order/XpInvoiceVo.java | 24 +++-
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/IXpCruiseCheckInRuleService.java | 5 +
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/dto/XpCruiseCheckInRuleDto.java | 2
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java | 92 ++++++++++++++---
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpCruiseCheckInRuleServiceImpl.java | 65 ++++++++++++-
xp-robotaxi-api/src/main/java/com/xiaopeng/api/model/maintenance/XpCruiseCheckInRule.java | 2
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpCruiseCheckInRuleController.java | 15 +++
12 files changed, 211 insertions(+), 41 deletions(-)
diff --git a/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/XpOperationsUserController.java b/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/XpOperationsUserController.java
index 8913b7f..1d409f9 100644
--- a/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/XpOperationsUserController.java
+++ b/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/XpOperationsUserController.java
@@ -47,7 +47,9 @@
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.List;
+import java.util.stream.Collectors;
import com.xiaopeng.common.log.annotation.AdminOperationLog;
import com.xiaopeng.common.log.enums.AdminBusinessType;
import com.xiaopeng.common.log.enums.AdminOperationType;
@@ -132,6 +134,26 @@
}
/**
+ * 根据ID查询运维用户信息
+ * @return 用户列表
+ */
+ @GetMapping("/logan/inner/xpOperationsUser/queryByIds")
+ R<List<XpOperationsUser>> queryByIds(@RequestParam String operationsUserId) {
+ List<Long> ids = Arrays.stream(operationsUserId.split(","))
+ .map(Long::parseLong)
+ .collect(Collectors.toList());
+ List<XpOperationsUser> operationsUser = xpOperationsUserService.listByIds(ids);
+ for (XpOperationsUser xpOperationsUser : operationsUser) {
+ XpOperationsRole role = xpOperationsRoleMapper.selectOne(new QueryWrapper<XpOperationsRole>().eq("operations_user_id", xpOperationsUser.getId()));
+ SysRole sysRole = sysRoleService.getById(role.getRoleId());
+ xpOperationsUser.setRoleName(sysRole.getRoleName());
+ xpOperationsUser.setPhoneNumber(SensitiveDataCryptoUtil.decryptIfPossible(xpOperationsUser.getPhoneNumber()));
+ }
+
+ return R.ok(operationsUser);
+ }
+
+ /**
* 根据昵称查询运维用户信息
*
* @param nickName 昵称
diff --git a/xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/account/XpOperationUserClientFallbackFactory.java b/xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/account/XpOperationUserClientFallbackFactory.java
index c4c1408..f146969 100644
--- a/xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/account/XpOperationUserClientFallbackFactory.java
+++ b/xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/account/XpOperationUserClientFallbackFactory.java
@@ -98,6 +98,12 @@
log.error("根据id列表获取运维人员列表失败,原因:{}", cause.getMessage());
return R.fail("根据id列表获取运维人员列表失败)" + cause.getMessage());
}
+
+ @Override
+ public R<List<XpOperationsUser>> queryByIds(String operationsUserId) {
+ log.error("根据id查询运维人员用户信息失败,原因: {}", cause.getMessage());
+ return R.ok(null);
+ }
};
}
}
diff --git a/xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/account/XpOperationUserClient.java b/xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/account/XpOperationUserClient.java
index d4fddf9..6931dbe 100644
--- a/xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/account/XpOperationUserClient.java
+++ b/xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/account/XpOperationUserClient.java
@@ -114,4 +114,14 @@
@PostMapping("/logan/inner/xpOperationsUser/pageListByIds")
R<PageInfo<XpOperationsUserWithRoleVO>> listByQueryIds(@RequestBody OptionalUsersPageListQuery query);
+
+ /**
+ * 根据多个id查询运维用户信息
+ * @param operationsUserId
+ * @return
+ */
+ @GetMapping("/logan/inner/xpOperationsUser/queryByIds")
+ R<List<XpOperationsUser>> queryByIds(@RequestParam String operationsUserId);
+
+
}
diff --git a/xp-robotaxi-api/src/main/java/com/xiaopeng/api/model/maintenance/XpCruiseCheckInRule.java b/xp-robotaxi-api/src/main/java/com/xiaopeng/api/model/maintenance/XpCruiseCheckInRule.java
index 6970f46..8334a60 100644
--- a/xp-robotaxi-api/src/main/java/com/xiaopeng/api/model/maintenance/XpCruiseCheckInRule.java
+++ b/xp-robotaxi-api/src/main/java/com/xiaopeng/api/model/maintenance/XpCruiseCheckInRule.java
@@ -35,7 +35,7 @@
*/
@TableField("operations_user_id")
@ApiModelProperty(value = "运维人id")
- private Long operationsUserId;
+ private String operationsUserId;
/**
* 任务开始时间
*/
diff --git a/xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/order/XpInvoiceVo.java b/xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/order/XpInvoiceVo.java
index 9ca1fb9..575d2fc 100644
--- a/xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/order/XpInvoiceVo.java
+++ b/xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/order/XpInvoiceVo.java
@@ -127,17 +127,22 @@
@ApiModelProperty(value = "行程结束日期,格式:yyyy-MM-dd")
private String tripEndDate;
+
+ @ApiModelProperty(value = "用户名")
+ private String userName;
+
+ @ApiModelProperty(value = "用户账号")
+ private String userAccount;
+
@ApiModelProperty(value = "行程人手机号")
private String phone;
-
- @ApiModelProperty(value = "车型")
- private String carType;
@ApiModelProperty(value = "上车时间")
private String pickupTime;
- @ApiModelProperty(value = "城市")
- private String city;
+ @ApiModelProperty(value = "下车时间")
+ private String dropOffTime;
+
@ApiModelProperty(value = "起点")
private String startPoint;
@@ -148,10 +153,13 @@
@ApiModelProperty(value = "里程(公里)")
private String mileage;
- @ApiModelProperty(value = "金额(元)")
- private BigDecimal amount;
-
@ApiModelProperty(value = "备注")
private String remark;
+
+ @ApiModelProperty(value = "原价金额")
+ private String oldPrice;
+
+ @ApiModelProperty(value = "币种")
+ private String currency;
}
}
diff --git a/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpCruiseCheckInRuleController.java b/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpCruiseCheckInRuleController.java
index b84a2e8..0b2444c 100644
--- a/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpCruiseCheckInRuleController.java
+++ b/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpCruiseCheckInRuleController.java
@@ -133,6 +133,21 @@
return R.ok();
}
+
+
+ @ApiOperation(value = "编辑巡游打卡规则", tags = {"管理后台-巡游打卡规则管理"})
+ @PostMapping("/maintenance-admin/api/v1/cruiseCheckInRecord/updateXpCruiseCheckInRule")
+ @AdminOperationLog(
+ businessType = AdminBusinessType.CRUISE_CHECK_IN_RULE_MANAGEMENT,
+ operationType = AdminOperationType.EDIT,
+ content = "编辑巡游打卡规则",
+ appendRequestData = true
+ )
+ public R<?> updateXpCruiseCheckInRule(@RequestBody XpCruiseCheckInRuleDto dto){
+ xpCruiseCheckInRuleService.updateXpCruiseCheckInRule(dto);
+ return R.ok();
+ }
+
@ApiOperation(value = "删除巡游打卡规则", tags = {"管理后台-巡游打卡规则管理"})
@PostMapping("/maintenance-admin/api/v1/cruiseCheckInRecord/delXpCruiseCheckInRule/{id}")
@AdminOperationLog(
diff --git a/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/dto/XpCruiseCheckInRuleDto.java b/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/dto/XpCruiseCheckInRuleDto.java
index e0e2c64..bbde801 100644
--- a/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/dto/XpCruiseCheckInRuleDto.java
+++ b/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/dto/XpCruiseCheckInRuleDto.java
@@ -12,7 +12,7 @@
@ApiModel
public class XpCruiseCheckInRuleDto extends XpCruiseCheckInRule {
@ApiModelProperty("关联人id")
- private Long relationId;
+ private String relationId;
@ApiModelProperty("打卡点位id")
private List<XpCruiseCheckInRuleLocation> points;
}
diff --git a/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/IXpCruiseCheckInRuleService.java b/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/IXpCruiseCheckInRuleService.java
index 37f5aa2..15a1543 100644
--- a/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/IXpCruiseCheckInRuleService.java
+++ b/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/IXpCruiseCheckInRuleService.java
@@ -76,6 +76,11 @@
* @param dto
*/
void addXpCruiseCheckInRule(XpCruiseCheckInRuleDto dto);
+ /**
+ * 编辑巡游打卡规则
+ * @param dto
+ */
+ void updateXpCruiseCheckInRule(XpCruiseCheckInRuleDto dto);
/**
diff --git a/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpCruiseCheckInRuleServiceImpl.java b/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpCruiseCheckInRuleServiceImpl.java
index 2a54996..6f18e7d 100644
--- a/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpCruiseCheckInRuleServiceImpl.java
+++ b/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpCruiseCheckInRuleServiceImpl.java
@@ -40,6 +40,7 @@
import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Map;
@@ -313,9 +314,7 @@
throw new ServiceException("巡游打卡规则名称已存在");
}
// 校验同一运维人员是否已存在有效规则(未删除且非循环模式或时间在有效期内)
- long count = this.count(new LambdaQueryWrapper<XpCruiseCheckInRule>()
- .eq(XpCruiseCheckInRule::getOperationsUserId, dto.getRelationId())
- .eq(XpCruiseCheckInRule::getDeleted, false));
+ long count = countByAnyOperationsUserId(dto.getRelationId(), null);
if (count > 0) {
throw new ServiceException("该运维人员已存在有效的巡游打卡规则");
}
@@ -325,6 +324,36 @@
xpCruiseCheckInRule.setDeleted(false);
xpCruiseCheckInRule.setOperationsUserId(dto.getRelationId());
this.save(xpCruiseCheckInRule);
+ dto.getPoints().forEach(s->{
+ s.setCruiseCheckInRuleId(xpCruiseCheckInRule.getId());
+ });
+ xpCruiseCheckInRuleLocationService.saveBatch(dto.getPoints());
+ }
+
+
+ /**
+ * 编辑巡游打卡规则
+ * @param dto
+ */
+ @Override
+ public void updateXpCruiseCheckInRule(XpCruiseCheckInRuleDto dto) {
+ XpCruiseCheckInRule one = this.getOne(new QueryWrapper<XpCruiseCheckInRule>().like("name", dto.getName()).ne("id", dto.getId()).eq("is_deleted", 0));
+ if(null != one){
+ throw new ServiceException("巡游打卡规则名称已存在");
+ }
+ // 校验同一运维人员是否已存在有效规则(未删除且非循环模式或时间在有效期内)
+ long count = countByAnyOperationsUserId(dto.getRelationId(), dto.getId());
+ if (count > 0) {
+ throw new ServiceException("该运维人员已存在有效的巡游打卡规则");
+ }
+
+ XpCruiseCheckInRule xpCruiseCheckInRule = new XpCruiseCheckInRule();
+ BeanUtils.copyProperties(dto, xpCruiseCheckInRule);
+ xpCruiseCheckInRule.setDeleted(false);
+ xpCruiseCheckInRule.setOperationsUserId(dto.getRelationId());
+ this.updateById(xpCruiseCheckInRule);
+ // 移除原来的id
+ xpCruiseCheckInRuleLocationService.remove(new LambdaQueryWrapper<XpCruiseCheckInRuleLocation>().eq(XpCruiseCheckInRuleLocation::getCruiseCheckInRuleId, xpCruiseCheckInRule.getId()));
dto.getPoints().forEach(s->{
s.setCruiseCheckInRuleId(xpCruiseCheckInRule.getId());
});
@@ -353,10 +382,36 @@
}).collect(Collectors.toList());
info.setLocationList(collect);
- XpOperationsUser xpOperationsUser = xpOperationsUserClient.queryById(byId.getOperationsUserId()).getData();
+ List<XpOperationsUser> xpOperationsUser = xpOperationsUserClient.queryByIds(byId.getOperationsUserId()).getData();
if(null != xpOperationsUser){
- info.setOperationsUser(xpOperationsUser.getNickName());
+ info.setOperationsUser(xpOperationsUser.stream().map(XpOperationsUser::getNickName).collect(Collectors.toList()));
}
return info;
}
+
+ private long countByAnyOperationsUserId(String relationId, Integer excludeRuleId) {
+ if (StringUtils.isEmpty(relationId)) {
+ return 0;
+ }
+ List<String> relationIds = Arrays.stream(relationId.split(","))
+ .map(String::trim)
+ .filter(StringUtils::isNotEmpty)
+ .collect(Collectors.toList());
+ if (relationIds.isEmpty()) {
+ return 0;
+ }
+
+ LambdaQueryWrapper<XpCruiseCheckInRule> queryWrapper = new LambdaQueryWrapper<XpCruiseCheckInRule>()
+ .eq(XpCruiseCheckInRule::getDeleted, false)
+ .and(wrapper -> {
+ wrapper.apply("find_in_set({0}, operations_user_id)", relationIds.get(0));
+ for (int i = 1; i < relationIds.size(); i++) {
+ wrapper.or().apply("find_in_set({0}, operations_user_id)", relationIds.get(i));
+ }
+ });
+ if (excludeRuleId != null) {
+ queryWrapper.ne(XpCruiseCheckInRule::getId, excludeRuleId);
+ }
+ return this.count(queryWrapper);
+ }
}
diff --git a/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/vo/XpCruiseCheckInRuleInfoVo.java b/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/vo/XpCruiseCheckInRuleInfoVo.java
index adfdff5..06d163c 100644
--- a/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/vo/XpCruiseCheckInRuleInfoVo.java
+++ b/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/vo/XpCruiseCheckInRuleInfoVo.java
@@ -16,5 +16,5 @@
private List<CruiseCheckInLocationVo> locationList;
@ApiModelProperty("关联人名称")
- private String operationsUser;
+ private List<String> operationsUser;
}
diff --git a/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/controller/XpOrderController.java b/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/controller/XpOrderController.java
index 201b275..39375a7 100644
--- a/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/controller/XpOrderController.java
+++ b/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/controller/XpOrderController.java
@@ -1007,13 +1007,8 @@
@GetMapping("/api/v1/mini-program/order/queryOrderStatusFromOrderId")
@XpClientCheck(checkToken = false, checkOtpToken = true)
public R<OrderStatusFromOrderIdVo> queryOrderStatusFromOrderId(Long orderId) {
- XpOrder order = xpOrderService.getById(orderId);
- OrderStatusFromOrderIdVo orderStatusFromOrderIdVo = new OrderStatusFromOrderIdVo();
- orderStatusFromOrderIdVo.setOrderId(order.getId());
- orderStatusFromOrderIdVo.setStatus(order.getStatus());
- return R.ok(orderStatusFromOrderIdVo);
- }
+ return R.ok( xpOrderService.queryOrderStatusFromOrderId(orderId));
/**
diff --git a/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java b/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
index fc3b1a3..0072100 100644
--- a/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
+++ b/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
@@ -4883,7 +4883,7 @@
if(order.getPayType()==3){
// 免密查询 如果成功则调用结算
CreditOrderQueryDto dto = new CreditOrderQueryDto();
- dto.setBusinessOrderId(OrderCodeUtil.getOrderCode("MMZF"));
+ dto.setBusinessOrderId(order.getBusinessOrderId());
dto.setAuthOrderId(order.getAuthOrderId());
dto.setPayType("13");
R<CreditOrderQueryVo> creditOrderQueryVoR = xpPayFrontClient.queryCreditOrder(dto);
@@ -5093,17 +5093,46 @@
ArrayList<XpInvoiceVo> xpInvoiceVoList = new ArrayList<>(list.size());
- R<List<XpVehicle>> r = xpVehicleClient.listByIds(list.stream().map(XpOrder::getVehicleId).collect(Collectors.toList()));
- List<XpVehicle> vehicleList = r.getData();
-
// 数据组装
for (XpOrder xpOrder : list) {
XpInvoiceVo xpInvoiceVo = new XpInvoiceVo();
xpInvoiceVo.setUid(xpOrder.getAppUserId().toString());
xpInvoiceVo.setOrderNo(xpOrder.getOrderNumber());
- xpInvoiceVo.setOrderTotalAmount(xpOrder.getOrderMoney());
+
+ BigDecimal orderMoney = xpOrder.getOrderMoney() == null ? BigDecimal.ZERO : xpOrder.getOrderMoney();
+ XpInvoiceVo.GoodsDetail goodsDetail = new XpInvoiceVo.GoodsDetail();
+ goodsDetail.setProductName("Robotaxi出行服务");
+ goodsDetail.setProductCode(null);
+ goodsDetail.setProductSpecCode("XE2000398");
+ goodsDetail.setProductSpec(null);
+ goodsDetail.setProductUnit("次");
+ goodsDetail.setQuantity(1);
+ goodsDetail.setUnitPrice(orderMoney);
+ goodsDetail.setInTaxAmount(orderMoney);
+ goodsDetail.setTaxRate(null);
+ goodsDetail.setTaxAmount(null);
+ goodsDetail.setExTaxAmount(null);
+ goodsDetail.setItemId(xpOrder.getOrderNumber());
+ goodsDetail.setCouponAmount(xpOrder.getCouponMoney());
+ goodsDetail.setCompanyCode("8000");
+ xpInvoiceVo.setGoodsDetail(JSON.toJSONString(goodsDetail));
+
+ xpInvoiceVo.setOrderTotalAmount(xpOrder.getPayMoney());
+ xpInvoiceVo.setOrderBusAmount(xpOrder.getOrderMoney());
+
xpInvoiceVo.setOrderDiscountAmount(xpOrder.getCouponMoney());
xpInvoiceVo.setOrderFinishTime(xpOrder.getTripEnd()!=null?String.valueOf(xpOrder.getTripEnd()):"");
+
+
+ JSONObject extData = new JSONObject();
+ extData.put("companyCode", "8000");
+ extData.put("realCompanyCode", null);
+ extData.put("siteName",null);
+ extData.put("pile", null);
+ extData.put("payFag", null);
+ extData.put("supplierCode", null);
+ xpInvoiceVo.setExtData(JSON.toJSONString(extData));
+
xpInvoiceVo.setXpInvoiceFlag(true);
xpInvoiceVo.setInvoiceStatus(xpOrder.getInvoiceStatus());
XpInvoiceVo.Itinerary itinerary = new XpInvoiceVo.Itinerary();
@@ -5112,14 +5141,11 @@
itinerary.setTripEndDate(xpOrder.getTripEnd()!=null?xpOrder.getTripEnd().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")):"");
- XpVehicle xpVehicle = vehicleList.stream().filter(vehicle -> vehicle.getId().equals(xpOrder.getVehicleId())).findFirst().get();
- itinerary.setCarType(xpVehicle.getVehicleModel());
itinerary.setTripStartDate(xpOrder.getBoardingTime()!=null?xpOrder.getBoardingTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")):"");
- itinerary.setCity(xpOrder.getCityName());
itinerary.setStartPoint(xpOrder.getStartAddress());
itinerary.setEndPoint(xpOrder.getEndAddress());
- itinerary.setMileage(null == xpOrder.getMileageKilometers() ? "0" : xpOrder.getMileageKilometers().toString());
+ itinerary.setMileage(xpOrder.getMileageKilometers()!=null ? xpOrder.getMileageKilometers().toString() :"0");
itinerary.setAmount(xpOrder.getOrderMoney());
xpInvoiceVo.setItinerary(itinerary);
@@ -5155,26 +5181,54 @@
XpInvoiceVo xpInvoiceVo = new XpInvoiceVo();
xpInvoiceVo.setUid(xpOrder.getAppUserId().toString());
xpInvoiceVo.setOrderNo(xpOrder.getOrderNumber());
- xpInvoiceVo.setOrderTotalAmount(xpOrder.getOrderMoney());
+
+ BigDecimal orderMoney = xpOrder.getOrderMoney() == null ? BigDecimal.ZERO : xpOrder.getOrderMoney();
+ XpInvoiceVo.GoodsDetail goodsDetail = new XpInvoiceVo.GoodsDetail();
+ goodsDetail.setProductName("Robotaxi出行服务");
+ goodsDetail.setProductCode(null);
+ goodsDetail.setProductSpecCode("XE2000398");
+ goodsDetail.setProductSpec(null);
+ goodsDetail.setProductUnit("次");
+ goodsDetail.setQuantity(1);
+ goodsDetail.setUnitPrice(orderMoney);
+ goodsDetail.setInTaxAmount(orderMoney);
+ goodsDetail.setTaxRate(null);
+ goodsDetail.setTaxAmount(null);
+ goodsDetail.setExTaxAmount(null);
+ goodsDetail.setItemId(xpOrder.getOrderNumber());
+ goodsDetail.setCouponAmount(xpOrder.getCouponMoney());
+ goodsDetail.setCompanyCode("8000");
+ xpInvoiceVo.setGoodsDetail(JSON.toJSONString(goodsDetail));
+
+ xpInvoiceVo.setOrderTotalAmount(xpOrder.getPayMoney());
+ xpInvoiceVo.setOrderBusAmount(xpOrder.getOrderMoney());
+
xpInvoiceVo.setOrderDiscountAmount(xpOrder.getCouponMoney());
- xpInvoiceVo.setOrderFinishTime(String.valueOf(xpOrder.getTripEnd()));
+ xpInvoiceVo.setOrderFinishTime(xpOrder.getTripEnd()!=null?String.valueOf(xpOrder.getTripEnd()):"");
+
+
+ JSONObject extData = new JSONObject();
+ extData.put("companyCode", "8000");
+ extData.put("realCompanyCode", null);
+ extData.put("siteName",null);
+ extData.put("pile", null);
+ extData.put("payFag", null);
+ extData.put("supplierCode", null);
+ xpInvoiceVo.setExtData(JSON.toJSONString(extData));
+
xpInvoiceVo.setXpInvoiceFlag(true);
xpInvoiceVo.setInvoiceStatus(xpOrder.getInvoiceStatus());
XpInvoiceVo.Itinerary itinerary = new XpInvoiceVo.Itinerary();
// yyyy-MM-dd格式
- itinerary.setTripStartDate(xpOrder.getAcceptanceTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
- itinerary.setTripEndDate(xpOrder.getTripEnd().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+ itinerary.setTripStartDate(xpOrder.getAcceptanceTime()!=null?xpOrder.getAcceptanceTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")):"");
+ itinerary.setTripEndDate(xpOrder.getTripEnd()!=null?xpOrder.getTripEnd().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")):"");
- XpVehicle xpVehicle = vehicleList.stream().filter(vehicle -> vehicle.getId().equals(xpOrder.getVehicleId())).findFirst().get();
- itinerary.setCarType(xpVehicle.getVehicleModel());
- itinerary.setTripStartDate(xpOrder.getBoardingTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+ itinerary.setTripStartDate(xpOrder.getBoardingTime()!=null?xpOrder.getBoardingTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")):"");
- itinerary.setCity(xpOrder.getCityName());
itinerary.setStartPoint(xpOrder.getStartAddress());
itinerary.setEndPoint(xpOrder.getEndAddress());
- itinerary.setMileage(xpOrder.getMileageKilometers().toString());
- itinerary.setAmount(xpOrder.getOrderMoney());
+ itinerary.setMileage(xpOrder.getMileageKilometers()!=null ? xpOrder.getMileageKilometers().toString() :"0");
xpInvoiceVo.setItinerary(itinerary);
xpInvoiceVoList.add(xpInvoiceVo);
--
Gitblit v1.7.1