新增订单详情接口

处理订单金额  <0 默认为0
This commit is contained in:
andy 2025-07-24 14:49:34 +08:00
parent 089ead49be
commit d08bb52783
6 changed files with 201 additions and 17 deletions

View File

@ -0,0 +1,99 @@
package com.evotech.hd.common.core.Dto.order;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
*
*
* @ClassName:OrderDetailVo
* @date: 2025年07月23日 15:12
* @author: andy.shi
* @contact: 17330188597
* @remark: 开发人员联系方式 1042025947@qq.com/微信同步
*/
@Data
public class OrderDetailVo {
@Schema(description = "订单编号")
private String orderNo;
@Schema(name = "订单类型", description = "1=换电;2=充电")
private Integer orderType;
@Schema(name = "车牌号")
private String plateNum;
@Schema(name = "订单状态", description = "订单状态1-已创建2-换电中3-换电完成4-充电中5-充电完成6-待结算7-已完成9-已取消, -1-退款")
private Integer status;
@Schema(name = "订单时间")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
private Date orderTime;
@Schema(name = "换电站")
private String stationName;
@Schema(name = "预约人")
private String perName;
@Schema(name = "交易编码", description = "第三方收款返回的唯一标识")
private String notifyOrderNo;
@Schema(name = "订单总金额")
private Integer amount;
@Schema(name = "计费类型", description="1-ODO, 2-SOC, 3-电量")
private Integer feeType;
@Schema(name = "订单金额")
private Integer orderFee;
@Schema(name = "服务金额")
private Integer serviceFee;
@Schema(name = "服务开始时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date serviceTimeBegin;
@Schema(name = "服务结束时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date serviceTimeEnd;
@Schema(name = "订单开始时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date orderTimeBegin;
@Schema(name = "订单结束时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date orderTimeEnd;
@Schema(name = "耗电量", description = "耗电量; 如果是soc结算 则是soc的差值, ODO则是里程")
private Double electricityQuantity;
@Schema(name = "开始充电的电量", description = "feeType=3时, 不为空")
private Double electStart;
@Schema(name = "结束充电的电量", description = "feeType=3时, 不为空")
private Double electEnd;
@Schema(name = "租借电池包SOC", description = "feeType=2时, 不为空")
private Double rentBatSoc;
@Schema(name = "归还电池包SOC", description = "feeType=2时, 不为空")
private Double returnBatSoc;
@Schema(name = "换电模式", description="1-全自动; 2-半自动; 3-人工干预")
private Integer changeMode;
@Schema(name = "换电车道", description="1-换电车道A; 2-换电车道B")
private Integer changeLane;
}

View File

@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.evotech.hd.cloud.entity.vo.NativePayVO;
import com.evotech.hd.cloud.service.OrderService;
import com.evotech.hd.common.core.Dto.Result;
import com.evotech.hd.common.core.Dto.order.OrderDetailVo;
import com.evotech.hd.common.core.Dto.order.OrderListVo;
import com.evotech.hd.common.core.entity.cloud.OrderSwapBatteryStep;
import com.evotech.hd.common.core.entity.cloud.request.BatterySwapResponse;
@ -38,6 +39,14 @@ public class OrderSwapBatteryController {
return orderService.pageList(plsor);
}
@Operation(summary = "查询订单详情")
@GetMapping("/{orderNo}")
@ApiOperationSupport(order = 6)
public Result<OrderDetailVo> getOne(@PathVariable(value = "orderNo") String orderNo) {
return orderService.getOneByOrderNo(orderNo);
}
@Operation(summary = "查询换电步骤")
@GetMapping("/step/list")
@ApiOperationSupport(order = 9)
@ -45,12 +54,7 @@ public class OrderSwapBatteryController {
return orderService.listStep(orderNo);
}
@Operation(summary = "个人账户余额支付")
@PostMapping({"/one"})
@ApiOperationSupport(order = 11)
public Result<Order> one(@RequestParam String orderNo) {
return orderService.one(orderNo);
}
@Operation(summary = "个人账户余额支付")
@PostMapping({"/wallet/pay"})
@ -59,10 +63,6 @@ public class OrderSwapBatteryController {
return orderService.walletPay(orderNo, wuid, uname);
}
@Operation(summary = "查询公司订单")
@GetMapping("/listcompanyorder")
@ApiOperationSupport(order = 8)
@ -133,4 +133,12 @@ public class OrderSwapBatteryController {
return orderService.checkList(plsor);
}
@Operation(summary = "个人账户余额支付")
@PostMapping({"/one"})
@ApiOperationSupport(order = 11)
public Result<Order> one(@RequestParam String orderNo) {
return orderService.one(orderNo);
}
}

View File

@ -16,12 +16,16 @@ import com.evotech.hd.cloud.mqtt.message.processor.strategy.impl.state.MqttState
import com.evotech.hd.cloud.service.TradeService;
import com.evotech.hd.cloud.utils.components.SwapOrderBasicFeeComponent;
import com.evotech.hd.common.core.Dto.Result;
import com.evotech.hd.common.core.dao.cloud.OrderDao;
import com.evotech.hd.common.core.dao.cloud.OrderDetailDao;
import com.evotech.hd.common.core.utils.Collections;
import jakarta.annotation.Resource;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.web.bind.annotation.*;
import java.math.BigDecimal;
import java.util.Date;
import java.util.Map;
@ -53,6 +57,13 @@ public class TestController {
// @Resource
// MongoDBService mongoDBService;
// @Resource
// private OrderSwapBatteryDao orderSwapBatteryDao;
@Autowired
private OrderDao orderDao;
@Autowired
private OrderDetailDao orderDetailDao;
@PostMapping("/mongodb/save")
public Result mongodbSave() {
mqttStateChargingDataRequestExchangeProcessor.exchange(null,null,JSONUtil.parseObj("{batCode:123,orderNo:123321}"));
@ -173,4 +184,58 @@ public class TestController {
return new Result().success(DHRequestUtil.storeList(page, pageSize));
}
@GetMapping("/copy/order")
public Result copyOrder(@RequestParam String stationCode) {
// for (OrderSwapBattery orderSwapBattery : orderSwapBatteryDao.selectList(new LambdaQueryWrapper<OrderSwapBattery>().eq(OrderSwapBattery::getStationCode, stationCode))){
// Order order = new Order();
// order.setStationCode(orderSwapBattery.getStationCode());
// order.setStationName(orderSwapBattery.getStationName());
// order.setOrderNo(orderSwapBattery.getOrderNo());
// order.setOrderPreId(orderSwapBattery.getOrderPreId());
// order.setPreWechatId(orderSwapBattery.getOrderPreUid());
// order.setOrderPreUname(orderSwapBattery.getOrderPreUname());
// order.setPlateNum(orderSwapBattery.getPlateNum());
// order.setOrderTime(orderSwapBattery.getOrderTime());
// order.setOrderType(orderSwapBattery.getOrderType());
// order.setStatus(orderSwapBattery.getStatus());
// order.setDelFlag(orderSwapBattery.getDelFlag());
// order.setOrderAmount(orderSwapBattery.getAmount());
// orderDao.insert(order);
//
// OrderDetail detail = new OrderDetail();
// detail.setOrderId(order.getPkId());
// detail.setFeeType(orderSwapBattery.getFeeType());
// detail.setOrderFee(findDefaultValue(orderSwapBattery.getBasicFee(), DEFAULT_VALUE).intValue());
// detail.setServiceFee(findDefaultValue(orderSwapBattery.getServiceFee(), DEFAULT_VALUE).intValue());
// detail.setServiceTimeBegin(orderSwapBattery.getServiceTimeBegin());
// detail.setServiceTimeEnd(orderSwapBattery.getServiceTimeEnd());
// detail.setOrderTimeBegin(orderSwapBattery.getServiceTimeBegin());
// detail.setOrderTimeEnd(orderSwapBattery.getServiceTimeEnd());
// detail.setFeeStandard(orderSwapBattery.getFeeStandardJson());
// detail.setElectricityQuantity(findDefaultValue(orderSwapBattery.getElectAmount(), DEFAULT_VALUE).doubleValue());
// detail.setRentBatNo(String.valueOf(orderSwapBattery.getRentBatNo()));
// detail.setRentBatNo(String.valueOf(orderSwapBattery.getRentBatNo()));
// detail.setRentBatCode(String.valueOf(orderSwapBattery.getRentBatCode()));
// detail.setRentBatSoc(Double.valueOf(findDefaultValue(orderSwapBattery.getRentBatSoc(),0)));
//
// detail.setReturnBatNo(String.valueOf(orderSwapBattery.getReturnBatNo()));
// detail.setReturnBatCode(String.valueOf(orderSwapBattery.getReturnBatCode()));
// detail.setReturnBatSoc(Double.valueOf(findDefaultValue(orderSwapBattery.getReturnBatSoc(),0)));
// detail.setChangeMode(orderSwapBattery.getChangeMode());
// detail.setChangeLane(orderSwapBattery.getChangeLane());
// orderDetailDao.insert(detail);
// }
return new Result().success("成功");
}
public static final BigDecimal DEFAULT_VALUE = new BigDecimal(0);
public static <T> T findDefaultValue(T v, T dv){
if(ObjectUtils.isNotEmpty(v)){
return v;
}
return dv;
}
}

View File

@ -2,14 +2,15 @@ package com.evotech.hd.cloud.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.evotech.hd.common.core.entity.order.Order;
import com.evotech.hd.cloud.entity.vo.NativePayVO;
import com.evotech.hd.common.core.Dto.Result;
import com.evotech.hd.common.core.Dto.order.OrderDetailVo;
import com.evotech.hd.common.core.Dto.order.OrderListVo;
import com.evotech.hd.common.core.entity.cloud.OrderSwapBatteryPre;
import com.evotech.hd.common.core.entity.cloud.OrderSwapBatteryStep;
import com.evotech.hd.common.core.entity.cloud.request.BatterySwapResponse;
import com.evotech.hd.common.core.entity.cloud.request.PageListSwapOrderRequest;
import com.evotech.hd.common.core.entity.order.Order;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
@ -73,4 +74,6 @@ public interface OrderService extends IService<Order> {
Result<BatterySwapResponse> getStartSwap(String wuid, String orderId);
Result<Order> one(String orderNo);
Result<OrderDetailVo> getOneByOrderNo(String orderNo);
}

View File

@ -31,6 +31,7 @@ import com.evotech.hd.cloud.utils.CommonUtil;
import com.evotech.hd.cloud.utils.ParamServiceUtils;
import com.evotech.hd.cloud.utils.components.SwapOrderBasicFeeComponent;
import com.evotech.hd.common.core.Dto.Result;
import com.evotech.hd.common.core.Dto.order.OrderDetailVo;
import com.evotech.hd.common.core.Dto.order.OrderListVo;
import com.evotech.hd.common.core.constant.HDConstant;
import com.evotech.hd.common.core.dao.cloud.OrderDao;
@ -149,6 +150,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderDao, Order> implements Or
}
// 3. 选择费用计算方式 计算费用, 这里计算出来直接就是分
BigDecimal orderFee = new BigDecimal(orderDetail.getUnitPrice()).multiply(new BigDecimal(orderDetail.getElectricityQuantity())).setScale(0, RoundingMode.HALF_UP);
if(orderFee.compareTo(new BigDecimal(0)) < 0){
orderFee = new BigDecimal(0);
}
//订单价格
orderDetail.setOrderFee(orderFee.intValue());
// 4. 跟新订单
@ -498,6 +502,17 @@ public class OrderServiceImpl extends ServiceImpl<OrderDao, Order> implements Or
public Result<Order> one(String orderNo) {
return new Result<Order>().success(getOne(new LambdaQueryWrapper<Order>().eq(Order::getOrderNo, orderNo)));
}
@Override
public Result<OrderDetailVo> getOneByOrderNo(String orderNo) {
OrderDetailVo orderDetailVo = new OrderDetailVo();
Order order = getOne(new LambdaQueryWrapper<Order>().eq(Order::getOrderNo, orderNo));
BeanUtils.copyProperties(order, orderDetailVo);
orderDetailVo.setAmount(order.getOrderAmount());
OrderDetail orderDetail = orderDetailDao.selectOne(new LambdaQueryWrapper<OrderDetail>().eq(OrderDetail::getOrderId, order.getPkId()));
BeanUtils.copyProperties(orderDetail, orderDetailVo);
return new Result<OrderDetailVo>().success(orderDetailVo);
}
}

View File

@ -68,12 +68,6 @@ public class SwapOrderController {
}
// @Operation(summary = "个人账户余额支付")
// @PostMapping({"/wallet/pay"})
// @ApiOperationSupport(order = 6)
// public Result<String> walletPay(@RequestParam String orderNo, String wuid, String uname) {
// return orderService.walletPay(orderNo, wuid, uname);
// }
@Operation(summary = "开始换电")
@PostMapping("/startSwap")