diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/Dto/order/OrderDetailVo.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/Dto/order/OrderDetailVo.java new file mode 100644 index 0000000..2d4c864 --- /dev/null +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/Dto/order/OrderDetailVo.java @@ -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; + + + +} diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/controller/order/OrderSwapBatteryController.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/controller/order/OrderSwapBatteryController.java index 78d9b72..0c8ce5a 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/controller/order/OrderSwapBatteryController.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/controller/order/OrderSwapBatteryController.java @@ -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 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 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 one(@RequestParam String orderNo) { + return orderService.one(orderNo); + } + } diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/controller/test/TestController.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/controller/test/TestController.java index 17980fe..fbf0c57 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/controller/test/TestController.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/controller/test/TestController.java @@ -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().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 findDefaultValue(T v, T dv){ + if(ObjectUtils.isNotEmpty(v)){ + return v; + } + return dv; + } + } diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/OrderService.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/OrderService.java index edb8ee9..d465ee5 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/OrderService.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/OrderService.java @@ -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 { Result getStartSwap(String wuid, String orderId); Result one(String orderNo); + + Result getOneByOrderNo(String orderNo); } diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/OrderServiceImpl.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/OrderServiceImpl.java index 781ac5e..d34278e 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/OrderServiceImpl.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/OrderServiceImpl.java @@ -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 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 implements Or public Result one(String orderNo) { return new Result().success(getOne(new LambdaQueryWrapper().eq(Order::getOrderNo, orderNo))); } + + @Override + public Result getOneByOrderNo(String orderNo) { + OrderDetailVo orderDetailVo = new OrderDetailVo(); + Order order = getOne(new LambdaQueryWrapper().eq(Order::getOrderNo, orderNo)); + BeanUtils.copyProperties(order, orderDetailVo); + orderDetailVo.setAmount(order.getOrderAmount()); + OrderDetail orderDetail = orderDetailDao.selectOne(new LambdaQueryWrapper().eq(OrderDetail::getOrderId, order.getPkId())); + BeanUtils.copyProperties(orderDetail, orderDetailVo); + return new Result().success(orderDetailVo); + } } diff --git a/wechat-server/src/main/java/com/evotech/hd/wechat/controller/SwapOrderController.java b/wechat-server/src/main/java/com/evotech/hd/wechat/controller/SwapOrderController.java index b24b56e..5ebb7a8 100644 --- a/wechat-server/src/main/java/com/evotech/hd/wechat/controller/SwapOrderController.java +++ b/wechat-server/src/main/java/com/evotech/hd/wechat/controller/SwapOrderController.java @@ -68,12 +68,6 @@ public class SwapOrderController { } -// @Operation(summary = "个人账户余额支付") -// @PostMapping({"/wallet/pay"}) -// @ApiOperationSupport(order = 6) -// public Result walletPay(@RequestParam String orderNo, String wuid, String uname) { -// return orderService.walletPay(orderNo, wuid, uname); -// } @Operation(summary = "开始换电") @PostMapping("/startSwap")