From 5f25c762e2853e87fc4b86b157ba87cf1322df2f Mon Sep 17 00:00:00 2001 From: zhibing.pu <393733352@qq.com> Date: 星期六, 31 八月 2024 14:53:13 +0800 Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/mx_charging_pile --- ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java | 187 ++++++++ ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderListVO.java | 71 +++ ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/InfoCouponDto.java | 2 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/query/ChargingOrderQuery.java | 2 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TOrderAppealVO.java | 23 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TShoppingOrderServiceImpl.java | 42 + ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUserVipDetail.java | 2 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderInfoVO.java | 35 + ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TInvoiceInformationController.java | 16 ruoyi-api/ruoyi-api-integration/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports | 3 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserVipDetailController.java | 10 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TExchangeOrderController.java | 17 ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingGunFallbackFactory.java | 6 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderTimeVO.java | 34 + ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TExchangeOrderService.java | 3 ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml | 207 ++++++-- ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TOrderEvaluateController.java | 2 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/PayOrderDto.java | 2 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TOrderAppealService.java | 2 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderAppealServiceImpl.java | 61 + ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java | 18 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderAccountingStrategyServiceImpl.java | 6 ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ChargingGunClient.java | 10 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderAccountingStrategyClient.java | 2 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TShoppingOrderController.java | 38 + ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderInvoiceServiceImpl.java | 2 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderVO.java | 3 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TVipOrderServiceImpl.java | 14 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TOrderAppealController.java | 44 + ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingOrderMapper.java | 10 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java | 24 + ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/filter/AuthFilter.java | 2 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TExchangeOrderServiceImpl.java | 62 ++ ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/SiteNameVO.java | 24 + ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TOrderAppeal.java | 2 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TAccountingStrategyDetailServiceImpl.java | 2 ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/SiteMapper.xml | 1 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TShoppingOrderService.java | 3 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java | 3 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/vo/InvoiceInformationVo.java | 62 ++ ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java | 10 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TExchangeOrder.java | 9 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java | 28 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TCharingOrderVO.java | 2 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TInvoiceInformation.java | 6 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TShoppingOrder.java | 10 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/ChargingListQuery.java | 38 + ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TVipOrder.java | 9 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingOrderAccountingStrategy.java | 20 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/FinancialSettlementController.java | 97 ++++ ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TVipOrderController.java | 2 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TEvaluationTagController.java | 5 52 files changed, 1,111 insertions(+), 184 deletions(-) diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/InfoCouponDto.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/InfoCouponDto.java index 60847fa..083e79f 100644 --- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/InfoCouponDto.java +++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/InfoCouponDto.java @@ -15,7 +15,7 @@ @ApiModelProperty(value = "主键") @TableId(value = "id", type = IdType.AUTO) - private Long id; + private String id; @ApiModelProperty(value = "优惠券名称") @TableField("name") private String name; diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUserVipDetail.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUserVipDetail.java index 0b12d91..ffc516b 100644 --- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUserVipDetail.java +++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUserVipDetail.java @@ -77,6 +77,8 @@ @ApiModelProperty(value = "要赠送的优惠卷") @TableField("coupon_ids") private String couponIds; + @TableField(exist = false) + private String vipName; } diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TInvoiceInformation.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TInvoiceInformation.java index 439ced7..103142b 100644 --- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TInvoiceInformation.java +++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TInvoiceInformation.java @@ -38,7 +38,11 @@ @ApiModelProperty(value = "发票类型(1=增值税普通发票,2=增值税专用发票)") @TableField("invoice_type") - private Integer invoiceType; + private String invoiceType; + + @ApiModelProperty(value = "发票类型(1=增值税普通发票,2=增值税专用发票)") + @TableField("invoice_type_id") + private Integer invoiceTypeId; @ApiModelProperty(value = "抬头类型(1=个人,2=企业)") @TableField("invoicing_object_type") diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/vo/InvoiceInformationVo.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/vo/InvoiceInformationVo.java new file mode 100644 index 0000000..6a6b7c6 --- /dev/null +++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/vo/InvoiceInformationVo.java @@ -0,0 +1,62 @@ +package com.ruoyi.account.api.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.ruoyi.common.core.web.domain.BasePojo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * <p> + * + * </p> + * + * @author luodangjia + * @since 2024-08-06 + */ +@Data +public class InvoiceInformationVo { + + + private String id; + + @ApiModelProperty(value = "用户id") + private Long appUserId; + + @ApiModelProperty(value = "发票类型(1=增值税普通发票,2=增值税专用发票)") + private String invoiceType; + + @ApiModelProperty(value = "发票类型id") + private Integer invoiceTypeId; + + @ApiModelProperty(value = "抬头类型(1=个人,2=企业)") + private Integer invoicingObjectType; + + @ApiModelProperty(value = "名称") + private String name; + + @ApiModelProperty(value = "纳税识别号") + private String taxIdentificationNumber; + + @ApiModelProperty(value = "公司地址") + private String companyAddress; + + @ApiModelProperty(value = "公司电话") + private String companyPhone; + + @ApiModelProperty(value = "开户银行") + private String depositBank; + + @ApiModelProperty(value = "银行账户") + private String bankAccount; + + @ApiModelProperty(value = "设置默认(0=否,1=是)") + private Integer isDefault; + + + + +} diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingGunFallbackFactory.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingGunFallbackFactory.java index ee67b6f..3c9c594 100644 --- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingGunFallbackFactory.java +++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingGunFallbackFactory.java @@ -4,6 +4,7 @@ import com.ruoyi.chargingPile.api.feignClient.ChargingPileClient; import com.ruoyi.chargingPile.api.model.TChargingGun; import com.ruoyi.chargingPile.api.model.TChargingPile; +import com.ruoyi.chargingPile.api.vo.SiteNameVO; import com.ruoyi.common.core.domain.R; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -36,6 +37,11 @@ public R<TChargingGun> getChargingGunById(Integer id) { return R.fail("根据id获取充电枪失败:" + throwable.getMessage()); } + + @Override + public R<SiteNameVO> getAllInfoById(Integer id) { + return R.fail("通过枪id获取站点、桩、枪的名称失败:" + throwable.getMessage()); + } }; } } diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ChargingGunClient.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ChargingGunClient.java index 149625a..1e9cf96 100644 --- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ChargingGunClient.java +++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ChargingGunClient.java @@ -2,6 +2,7 @@ import com.ruoyi.chargingPile.api.factory.ChargingGunFallbackFactory; import com.ruoyi.chargingPile.api.model.TChargingGun; +import com.ruoyi.chargingPile.api.vo.SiteNameVO; import com.ruoyi.common.core.constant.ServiceNameConstants; import com.ruoyi.common.core.domain.R; import org.springframework.cloud.openfeign.FeignClient; @@ -32,4 +33,13 @@ */ @PostMapping("/t-charging-gun/getChargingGunById/{id}") R<TChargingGun> getChargingGunById(@PathVariable("id") Integer id); + + /** + * 通过枪id获取站点、桩、枪的名称VO + * @param id + * @return + */ + @PostMapping("/t-charging-gun/getAllInfoById/{id}") + R<SiteNameVO> getAllInfoById(@PathVariable("id") Integer id); + } diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/SiteNameVO.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/SiteNameVO.java new file mode 100644 index 0000000..06049e4 --- /dev/null +++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/SiteNameVO.java @@ -0,0 +1,24 @@ +package com.ruoyi.chargingPile.api.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +@Data +@ApiModel(value = "获取站点、桩、枪的名称VO") +public class SiteNameVO implements Serializable { + + @ApiModelProperty(value = "站点名称") + private String siteName; + @ApiModelProperty(value = "桩名称") + private String pileName; + @ApiModelProperty(value = "桩号") + private Integer pileNumber; + @ApiModelProperty(value = "枪名称") + private String gunName; + @ApiModelProperty(value = "枪号") + private String gunNumber; + +} diff --git a/ruoyi-api/ruoyi-api-integration/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/ruoyi-api/ruoyi-api-integration/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index b5188a9..5d5cc8f 100644 --- a/ruoyi-api/ruoyi-api-integration/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/ruoyi-api/ruoyi-api-integration/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -1,3 +1,4 @@ com.ruoyi.integration.api.factory.IntegrationFallbackFactory com.ruoyi.integration.api.factory.UploadRealTimeMonitoringDataFallbackFactory -com.ruoyi.integration.api.factory.ChargingHandshakeFallbackFactory \ No newline at end of file +com.ruoyi.integration.api.factory.ChargingHandshakeFallbackFactory +com.ruoyi.integration.api.factory.SendMessageFallbackFactory \ No newline at end of file diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderAccountingStrategyClient.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderAccountingStrategyClient.java index 5d51fbc..2f98b2c 100644 --- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderAccountingStrategyClient.java +++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderAccountingStrategyClient.java @@ -36,6 +36,6 @@ * @param days * @return */ - @PostMapping("/t-charging-order-getDailyChargingDegree-strategy/getUtilizationTrend/{days}") + @PostMapping("/t-charging-order-accounting-strategy/getDailyChargingDegree/{days}") R<List<Double>> getDailyChargingDegree(@PathVariable("days") Integer days, @RequestParam("siteIds") Set<Integer> siteIds); } diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingOrderAccountingStrategy.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingOrderAccountingStrategy.java index aeb158e..68c2568 100644 --- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingOrderAccountingStrategy.java +++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingOrderAccountingStrategy.java @@ -64,5 +64,25 @@ @TableField("charging_capacity") private BigDecimal chargingCapacity; + @ApiModelProperty(value = "时段电费") + @TableField("period_electric_price") + private BigDecimal periodElectricPrice; + + @ApiModelProperty(value = "时段服务费") + @TableField("period_service_price") + private BigDecimal periodServicePrice; + + @ApiModelProperty(value = "会员抵扣") + @TableField(exist = false) + private BigDecimal vipDiscount; + + @ApiModelProperty(value = "优惠券抵扣") + @TableField(exist = false) + private BigDecimal couponDiscount; + + @ApiModelProperty(value = "最终服务费") + @TableField(exist = false) + private BigDecimal finalService; + } diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TExchangeOrder.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TExchangeOrder.java index 16d3a99..b40f900 100644 --- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TExchangeOrder.java +++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TExchangeOrder.java @@ -113,6 +113,15 @@ @ApiModelProperty(value = "取消人") @TableField(exist = false) private String cancellationName; + @ApiModelProperty(value = "商品名称") + @TableField(exist = false) + private String name; + @ApiModelProperty(value = "下单手机号") + @TableField(exist = false) + private String phone; + @ApiModelProperty(value = "订单id") + @TableField(exist = false) + private String uid; } diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TOrderAppeal.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TOrderAppeal.java index 29320fa..344daa0 100644 --- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TOrderAppeal.java +++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TOrderAppeal.java @@ -70,6 +70,8 @@ @ApiModelProperty(value = "申诉反馈") @TableField("feedback") private String feedback; + @TableField(exist = false) + private String uid; @ApiModelProperty(value = "反馈人id") @TableField("feedback_user_id") diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TShoppingOrder.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TShoppingOrder.java index 9679d6a..eb32601 100644 --- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TShoppingOrder.java +++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TShoppingOrder.java @@ -162,7 +162,12 @@ @TableField("pay_time") private LocalDateTime payTime; - + @ApiModelProperty(value = "下单手机号") + @TableField(exist = false) + private String phone; + @ApiModelProperty(value = "商品/优惠券名称") + @TableField(exist = false) + private String name; @ApiModelProperty(value = "收货人") @TableField(exist = false) private String receivingName; @@ -175,5 +180,8 @@ @ApiModelProperty(value = "取消人") @TableField(exist = false) private String cancellationName; + @ApiModelProperty(value = "订单id") + @TableField(exist = false) + private String uid; } diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TVipOrder.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TVipOrder.java index 9349993..ab4f606 100644 --- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TVipOrder.java +++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TVipOrder.java @@ -89,5 +89,14 @@ @ApiModelProperty(value = "退款金额") @TableField("refund_amount") private BigDecimal refundAmount; + @ApiModelProperty(value = "会员类型名称") + @TableField(exist = false) + private String name; + @ApiModelProperty(value = "uid") + @TableField(exist = false) + private String uid; + @ApiModelProperty(value = "userUid") + @TableField(exist = false) + private String userUid; } diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/query/ChargingOrderQuery.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/query/ChargingOrderQuery.java index 267f10a..a7ecf9f 100644 --- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/query/ChargingOrderQuery.java +++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/query/ChargingOrderQuery.java @@ -9,7 +9,7 @@ import java.util.List; @Data -@ApiModel(value = "ChargingOrderQuery对象",description = "管理后台充电订单查询对象") +@ApiModel(value = "ChargingOrderQuery充电桩订单查询对象",description = "管理后台充电桩订单查询对象") public class ChargingOrderQuery extends BasePage { @ApiModelProperty(value = "订单编号") private String code; diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderInfoVO.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderInfoVO.java new file mode 100644 index 0000000..a0ae96a --- /dev/null +++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderInfoVO.java @@ -0,0 +1,35 @@ +package com.ruoyi.order.api.vo; + +import com.ruoyi.order.api.model.TChargingOrder; +import com.ruoyi.order.api.model.TChargingOrderAccountingStrategy; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +@Data +@ApiModel(value = "充电桩订单列表查看详情",description = "充电桩订单列表查看详情") +public class ChargingOrderInfoVO { + @ApiModelProperty(value = "充电电流") + private String cdElectronic; + @ApiModelProperty(value = "充电电压") + private String cdVoltage; + @ApiModelProperty(value = "剩余电量") + private String surplus; + @ApiModelProperty(value = "实时总功率") + private String totalPower; + @ApiModelProperty(value = "车牌号") + private String licensePlate; + @ApiModelProperty(value = "车辆品牌") + private String vehicleBrand; + @ApiModelProperty(value = "车辆类型") + private String vehicleModel; + @ApiModelProperty(value = "用车类型") + private String vehicleUse; + + @ApiModelProperty(value = "充电明细列表") + private List<TChargingOrderAccountingStrategy> list; + +} diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderListVO.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderListVO.java new file mode 100644 index 0000000..286972a --- /dev/null +++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderListVO.java @@ -0,0 +1,71 @@ +package com.ruoyi.order.api.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.ruoyi.order.api.model.TChargingOrder; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Data +@ApiModel(value = "ChargingOrderListVO对象",description = "充电时段统计列表VO") +public class ChargingOrderListVO { + @ApiModelProperty(value = "电站名称") + private String siteName; + @ApiModelProperty(value = "电站id") + private Integer siteId; + @ApiModelProperty(value = "充电桩id") + private Integer chargingPileId; + @ApiModelProperty(value = "用户id") + private Long appUserId; + @ApiModelProperty(value = "用户车辆id") + private Long appUserCarId; + @ApiModelProperty(value = "充电枪id") + private Integer chargingGunId; + @ApiModelProperty(value = "订单编号") + private String code; + @ApiModelProperty(value = "订单类型(1=充电订单(小程序),2=充电订单(刷卡))") + private String orderType; + @ApiModelProperty(value = "充电终端名称 桩+枪") + private String terminalName; + @ApiModelProperty(value = "充电时间 秒") + private Long chargingSecond; + @ApiModelProperty(value = "充电电流 度") + private BigDecimal chargingCapacity; + @ApiModelProperty(value = "车牌号") + private String licensePlate; + @ApiModelProperty(value = "客户手机号") + private String phone; + @ApiModelProperty(value = "充电到账金额") + private BigDecimal paymentAmount; + @ApiModelProperty(value = "累计电费") + private BigDecimal electrovalence; + @ApiModelProperty(value = "累计服务费") + private BigDecimal serviceCharge; + @ApiModelProperty(value = "平台手续费") + private BigDecimal commissionAmount; + @ApiModelProperty(value = "引流平台") + private String sourceName; + @ApiModelProperty(value = "平台分佣") + private BigDecimal sharingAmount; + @ApiModelProperty(value = "开始时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime startTime; + @ApiModelProperty(value = "结束时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime endTime; + @ApiModelProperty(value = "开始soc") + private String startSoc; + @ApiModelProperty(value = "结束soc") + private String endSoc; + @ApiModelProperty(value = "结束原因 (0=异常终止,1=主动终止,2=满电终止,3=费用不足终止)") + private Integer endMode; + @ApiModelProperty(value = "电流占比") + private String electronicProportion; + @ApiModelProperty(value = "订单id") + private Long id; + @ApiModelProperty(value = "订单uid") + private String uid; +} diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderTimeVO.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderTimeVO.java new file mode 100644 index 0000000..eef3f64 --- /dev/null +++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderTimeVO.java @@ -0,0 +1,34 @@ +package com.ruoyi.order.api.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.ruoyi.common.core.web.page.PageInfo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.List; + +@Data +@ApiModel(value = "ChargingOrderTimeVO对象",description = "充电时段统计VO") +public class ChargingOrderTimeVO { + @ApiModelProperty(value = "订单数量") + private Integer orderCount; + @ApiModelProperty(value = "充电总度数") + private BigDecimal chargingCapacity; + @ApiModelProperty(value = "充电到账金额") + private BigDecimal paymentAmount; + @ApiModelProperty(value = "累计电费") + private BigDecimal electrovalence; + @ApiModelProperty(value = "累计服务费") + private BigDecimal serviceCharge; + @ApiModelProperty(value = "尖峰平谷充电量") + private String capacityProportion; + @ApiModelProperty(value = "尖峰平谷服务费") + private String serviceProportion; + @ApiModelProperty(value = "尖峰平谷充电到账") + private String electronicProportion; + @ApiModelProperty(value = "列表数据") + private PageInfo<ChargingOrderListVO> list; +} diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderVO.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderVO.java index df78e8e..1c5ba30 100644 --- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderVO.java +++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderVO.java @@ -13,7 +13,7 @@ import java.util.List; @Data -@ApiModel(value = "SiteDetailEvaluateVO对象",description = "站点详情订单评价") +@ApiModel(value = "ChargingOrderVO对象",description = "充电订单列表VO") public class ChargingOrderVO extends TChargingOrder { @ApiModelProperty(value = "站点名称") private String siteName; @@ -38,5 +38,4 @@ private Integer count; @ApiModelProperty(value = "1明星充电 2快电 3新电途") private Integer orderSource; - } diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TCharingOrderVO.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TCharingOrderVO.java index 8608405..5929188 100644 --- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TCharingOrderVO.java +++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TCharingOrderVO.java @@ -8,7 +8,7 @@ import java.math.BigDecimal; @Data -@ApiModel(value = "TOrderAppealVO对象", description = "充电桩订单VO") +@ApiModel(value = "充电桩订单列表对象", description = "充电桩订单VO") public class TCharingOrderVO { @ApiModelProperty(value = "分页列表") private PageInfo<ChargingOrderVO> list; diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TOrderAppealVO.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TOrderAppealVO.java index cafe08b..7bec166 100644 --- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TOrderAppealVO.java +++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TOrderAppealVO.java @@ -4,10 +4,15 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import lombok.Getter; +import lombok.Setter; @Data @ApiModel(value = "TOrderAppealVO对象", description = "订单申诉VO对象") public class TOrderAppealVO extends TOrderAppeal { + + @ApiModelProperty(value = "uid") + private String uid; @ApiModelProperty(value = "充电订单") private TChargingOrder chargingOrder; @@ -15,10 +20,20 @@ @ApiModelProperty(value = "购物订单") private TShoppingOrder shoppingOrder; - @ApiModelProperty(value = "兑换订单") - private TExchangeOrder exchangeOrder; + @ApiModelProperty(value = "商品名称") + private String goodsName; + @ApiModelProperty(value = "商品图片") + private String goodsPicture; - @ApiModelProperty(value = "会员订单") - private TVipOrder vipOrder; + @ApiModelProperty(value = "站点名称") + private String siteName; + @ApiModelProperty(value = "桩名称") + private String pileName; + @ApiModelProperty(value = "桩号") + private Integer pileNumber; + @ApiModelProperty(value = "枪名称") + private String gunName; + @ApiModelProperty(value = "枪号") + private String gunNumber; } diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java index a106416..93d83d5 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java @@ -544,7 +544,7 @@ TCoupon coupon = JSON.toJavaObject(JSON.parseObject(tAppCoupon.getCouponJson()), TCoupon.class); InfoCouponDto infoCouponDto = new InfoCouponDto(); BeanUtils.copyProperties(coupon, infoCouponDto); - infoCouponDto.setId(tAppCoupon.getId()); + infoCouponDto.setId(tAppCoupon.getId().toString()); infoCouponDto.setEndTime(tAppCoupon.getEndTime()); couponDtos1.add(infoCouponDto); @@ -558,7 +558,7 @@ TCoupon coupon = JSON.toJavaObject(JSON.parseObject(tAppCoupon.getCouponJson()), TCoupon.class); InfoCouponDto infoCouponDto = new InfoCouponDto(); BeanUtils.copyProperties(coupon, infoCouponDto); - infoCouponDto.setId(tAppCoupon.getId()); + infoCouponDto.setId(tAppCoupon.getId().toString()); infoCouponDto.setEndTime(tAppCoupon.getEndTime()); couponDtos2.add(infoCouponDto); } @@ -566,7 +566,7 @@ TCoupon coupon = JSON.toJavaObject(JSON.parseObject(tAppCoupon.getCouponJson()), TCoupon.class); InfoCouponDto infoCouponDto = new InfoCouponDto(); BeanUtils.copyProperties(coupon, infoCouponDto); - infoCouponDto.setId(tAppCoupon.getId()); + infoCouponDto.setId(tAppCoupon.getId().toString()); infoCouponDto.setEndTime(tAppCoupon.getEndTime()); couponDtos2.add(infoCouponDto); } @@ -586,7 +586,7 @@ @ApiOperation(value = "优惠卷详情(1可使用2不可用)", tags = {"小程序-个人中心"}) - @PostMapping(value = "/user/coupon/getById") + @GetMapping(value = "/user/coupon/getById") public R<TAppCoupon> couponGetById(@RequestParam("id")Long id) { TAppCoupon appCoupon = appCouponService.getById(id); return R.ok(appCoupon); @@ -628,7 +628,7 @@ } @ApiOperation(value = "已赠送列表", tags = {"小程序-个人中心-邀请好友"}) - @PostMapping(value = "/user/invite/info") + @GetMapping(value = "/user/invite/info") public R<InviteInfoDto> inviteInfo() { Long userId = tokenService.getLoginUserApplet().getUserId(); Integer point = 0; diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserVipDetailController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserVipDetailController.java index e1d3052..42de42e 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserVipDetailController.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserVipDetailController.java @@ -6,6 +6,8 @@ import com.ruoyi.account.service.TAppUserVipDetailService; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.security.service.TokenService; +import com.ruoyi.other.api.domain.TVip; +import com.ruoyi.other.api.feignClient.VipClient; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; @@ -39,11 +41,19 @@ return R.ok(one); } + @Resource + private VipClient vipClient; + @GetMapping("/getVipUseDetail") @ApiOperation(value = "生效会员列表", tags = {"小程序-个人中心"}) public R<List<TAppUserVipDetail>> getVipUseDetail(){ Long userId = tokenService.getLoginUserApplet().getUserId(); List<TAppUserVipDetail> list = appUserVipDetailService.lambdaQuery().eq(TAppUserVipDetail::getAppUserId, userId).last(" and now() between start_time and end_time order by start_time desc").list(); + + for (TAppUserVipDetail tAppUserVipDetail : list) { + TVip data = vipClient.getInfo1(tAppUserVipDetail.getVipId()).getData(); + tAppUserVipDetail.setVipName(data.getName()); + } return R.ok(list); } diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TInvoiceInformationController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TInvoiceInformationController.java index 29a90fb..5eb18cf 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TInvoiceInformationController.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TInvoiceInformationController.java @@ -3,13 +3,16 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.ruoyi.account.api.model.TInvoiceInformation; +import com.ruoyi.account.api.vo.InvoiceInformationVo; import com.ruoyi.account.service.TInvoiceInformationService; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.security.service.TokenService; import io.swagger.annotations.ApiOperation; +import org.springframework.beans.BeanUtils; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.List; /** @@ -34,10 +37,17 @@ @ResponseBody @GetMapping(value = "/getInvoiceInformationList") @ApiOperation(value = "获取开票抬头数据列表", tags = {"小程序-充电发票"}) - public AjaxResult<List<TInvoiceInformation>> getInvoiceInformationList(){ + public AjaxResult<List<InvoiceInformationVo>> getInvoiceInformationList(){ Long userId = tokenService.getLoginUserApplet().getUserId(); List<TInvoiceInformation> list = invoiceInformationService.list(new LambdaQueryWrapper<TInvoiceInformation>().eq(TInvoiceInformation::getAppUserId, userId).eq(TInvoiceInformation::getDelFlag, 0)); - return AjaxResult.success(list); + List<InvoiceInformationVo> lists = new ArrayList<>(); + for (TInvoiceInformation tInvoiceInformation : list) { + InvoiceInformationVo vo = new InvoiceInformationVo(); + BeanUtils.copyProperties(tInvoiceInformation, vo); + vo.setId(tInvoiceInformation.getId().toString()); + lists.add(vo); + } + return AjaxResult.success(lists); } @@ -48,7 +58,7 @@ public AjaxResult addInvoiceInformation(@RequestBody TInvoiceInformation invoiceInformation){ Long userId = tokenService.getLoginUserApplet().getUserId(); //如果当前是默认抬头,则需要去除其他的默认配置 - if(1 == invoiceInformation.getIsDefault()){ + if(null != invoiceInformation.getIsDefault() && 1 == invoiceInformation.getIsDefault()){ TInvoiceInformation one = invoiceInformationService.getOne(new LambdaQueryWrapper<TInvoiceInformation>().eq(TInvoiceInformation::getDelFlag, 0) .eq(TInvoiceInformation::getIsDefault, 1).eq(TInvoiceInformation::getAppUserId, userId)); if(null != one){ diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java index 4120f07..fe5e167 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java @@ -4,10 +4,13 @@ import cn.hutool.core.img.ImgUtil; import cn.hutool.core.io.FileUtil; import com.ruoyi.chargingPile.api.dto.TChargingGunDTO; +import com.ruoyi.chargingPile.api.model.Site; import com.ruoyi.chargingPile.api.model.TChargingGun; import com.ruoyi.chargingPile.api.model.TChargingPile; import com.ruoyi.chargingPile.api.query.TChargingGunQuery; +import com.ruoyi.chargingPile.api.vo.SiteNameVO; import com.ruoyi.chargingPile.api.vo.TChargingGunVO; +import com.ruoyi.chargingPile.service.ISiteService; import com.ruoyi.chargingPile.service.TChargingGunService; import com.ruoyi.chargingPile.service.TChargingPileService; import com.ruoyi.chargingPile.util.QRCodeUtils; @@ -52,6 +55,8 @@ @Resource private TChargingPileService chargingPileService; + @Resource + private ISiteService siteService; @Autowired public TChargingGunController(TChargingGunService chargingGunService) { @@ -184,5 +189,24 @@ TChargingGun chargingGun = chargingGunService.getById(id); return R.ok(chargingGun); } + /** + * 根据id获取充电枪详情 + * @param id + * @return + */ + @ResponseBody + @PostMapping(value = "/getAllInfoById/{id}") + public R<SiteNameVO> getAllInfoById(@PathVariable Integer id){ + SiteNameVO siteNameVO = new SiteNameVO(); + TChargingGun chargingGun = chargingGunService.getById(id); + siteNameVO.setGunName(chargingGun.getName()); + siteNameVO.setGunNumber(chargingGun.getCode()); + TChargingPile chargingPile = chargingPileService.getById(id); + siteNameVO.setPileName(chargingPile.getName()); + siteNameVO.setPileNumber(chargingPile.getNumber()); + Site site = siteService.getById(id); + siteNameVO.setSiteName(site.getName()); + return R.ok(siteNameVO); + } } diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TAccountingStrategyDetailServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TAccountingStrategyDetailServiceImpl.java index 785ad38..9b2aaab 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TAccountingStrategyDetailServiceImpl.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TAccountingStrategyDetailServiceImpl.java @@ -64,7 +64,7 @@ throw new ServiceException("未查询到计费策略"); } List<TAccountingStrategyDetailVO> list = this.queryAccountingStrategyDetailByStrategyId(accountingStrategy.getId()); - list.stream().filter(item -> "24:00".equals(item.getEndTime())).forEach(item -> item.setEndTime("23:59:59")); + list.stream().filter(item -> "00:00".equals(item.getEndTime())).forEach(item -> item.setEndTime("23:59:59")); // 获取当前登录用户id Long userId = tokenService.getLoginUserApplet().getUserId(); // 根据id查询用户信息 diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java index a567303..d497796 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java @@ -40,6 +40,7 @@ import javax.annotation.Resource; import java.math.BigDecimal; +import java.math.MathContext; import java.math.RoundingMode; import java.text.SimpleDateFormat; import java.util.*; @@ -304,8 +305,13 @@ chargeMonitoring.setNotCharged(total.size() - charging.size()); chargeMonitoring.setRatedPower(ratedPower.setScale(4, RoundingMode.HALF_EVEN)); chargeMonitoring.setRealTimePower(realTimePower.setScale(4, RoundingMode.HALF_EVEN)); - chargeMonitoring.setDemandPowerSatisfactionRate(realTimePower.divide(ratedPower).multiply(new BigDecimal(100)).setScale(2, RoundingMode.HALF_EVEN)); - + if(ratedPower.equals(BigDecimal.ZERO)){ + chargeMonitoring.setDemandPowerSatisfactionRate(BigDecimal.ZERO); + }else{ + chargeMonitoring.setDemandPowerSatisfactionRate(realTimePower.divide(ratedPower, new MathContext(2, RoundingMode.HALF_EVEN)) + .multiply(new BigDecimal(100)).setScale(2, RoundingMode.HALF_EVEN)); + } + List<String> dates = new ArrayList<>(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MMM-dd"); Calendar calendar = Calendar.getInstance(); @@ -325,8 +331,12 @@ List<Double> data = chargingOrderAccountingStrategyClient.getDailyChargingDegree(6, siteIds).getData(); List<Double> value2 = new ArrayList<>(); for (Double datum : data) { - Double datum1 = new BigDecimal(datum).divide(new BigDecimal(list.size()).multiply(v).multiply(new BigDecimal(24))).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue(); - value2.add(datum1); + if(list.size() == 0){ + value2.add(0D); + }else{ + Double datum1 = new BigDecimal(datum).divide(new BigDecimal(list.size()).multiply(v).multiply(new BigDecimal(24))).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue(); + value2.add(datum1); + } } Map<String, Object> utilizationTrend = new HashMap<>(); utilizationTrend.put("date", dates); diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/SiteMapper.xml b/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/SiteMapper.xml index d36aaf4..2acbc96 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/SiteMapper.xml +++ b/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/SiteMapper.xml @@ -163,6 +163,7 @@ </if> AND ts.del_flag = ${@com.ruoyi.common.core.enums.DelFlagEnum@NO.getCode()} AND ts.status = ${@com.ruoyi.common.core.enums.status.SiteStatusEnum@NORMAL_USE.getCode()} + AND ts.accounting_strategy_id IS NOT NULL </where> <if test="query.sortType != null"> <choose> diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/FinancialSettlementController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/FinancialSettlementController.java new file mode 100644 index 0000000..eba02aa --- /dev/null +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/FinancialSettlementController.java @@ -0,0 +1,97 @@ +package com.ruoyi.order.controller; + + +import com.ruoyi.account.api.feignClient.AppUserCarClient; +import com.ruoyi.account.api.feignClient.AppUserClient; +import com.ruoyi.chargingPile.api.feignClient.ChargingGunClient; +import com.ruoyi.chargingPile.api.feignClient.ChargingPileClient; +import com.ruoyi.chargingPile.api.feignClient.ParkingLotClient; +import com.ruoyi.chargingPile.api.feignClient.SiteClient; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.web.domain.AjaxResult; +import com.ruoyi.common.core.web.page.PageInfo; +import com.ruoyi.common.redis.service.RedisService; +import com.ruoyi.common.security.service.TokenService; +import com.ruoyi.order.api.model.TVipOrder; +import com.ruoyi.order.api.query.VipShoppingOrderQuery; +import com.ruoyi.order.api.vo.ChargingOrderTimeVO; +import com.ruoyi.order.dto.ChargingListQuery; +import com.ruoyi.order.dto.PayOrderDto; +import com.ruoyi.order.dto.PayOrderQueryDto; +import com.ruoyi.order.service.*; +import com.ruoyi.payment.api.feignClient.AliPaymentClient; +import com.ruoyi.payment.api.feignClient.WxPaymentClient; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.StringUtils; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.Arrays; +import java.util.List; + +/** + * <p> + * 前端控制器 + * </p> + * + * @author xiaochen + * @since 2024-08-07 + */ +@Api(tags = "财务结算") +@RestController +@RequestMapping("/financial/settlement") +public class FinancialSettlementController { + + @Resource + private TChargingOrderService chargingOrderService; + @Autowired + private TokenService tokenService; + @Autowired + private TOrderEvaluateService orderEvaluateService; + + @Resource + private WxPaymentClient wxPaymentClient; + + @Resource + private RedisService redisService; + + @Resource + private AliPaymentClient aliPaymentClient; + @Resource + private TShoppingOrderService shoppingOrderService; + + @Resource + private AppUserClient appUserClient; + + @Resource + private TVipOrderService vipOrderService; + @Resource + private ParkingLotClient parkingLotClient; + @Resource + private TChargingOrderRefundService chargingOrderRefundService; + + @Resource + private TShoppingOrderRefundService shoppingOrderRefundService; + @Resource + private TVipOrderRefundService vipOrderRefundService; + @Resource + private SiteClient siteClient; + @Resource + private ChargingPileClient chargingPileClient; + @Resource + private ChargingGunClient chargingGunClient; + @Resource + private AppUserCarClient appUserCarClient; + @Resource + private TChargingOrderAccountingStrategyService chargingOrderAccountingStrategyService; + @ResponseBody + @PostMapping(value = "/chargingList") + @ApiOperation(value = "充电时段统计列表", tags = {"管理后台-财务结算"}) + public AjaxResult<ChargingOrderTimeVO> chargingList(@RequestBody ChargingListQuery dto) { + ChargingOrderTimeVO res = chargingOrderService.chargingList(dto); + return AjaxResult.success(res); + } +} + diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java index ce20d5a..712b961 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java @@ -1,4 +1,5 @@ package com.ruoyi.order.controller; +import com.google.common.collect.Lists; import java.math.BigDecimal; import java.time.LocalDateTime; @@ -26,6 +27,7 @@ import com.ruoyi.order.api.model.*; import com.ruoyi.order.api.query.ChargingOrderQuery; import com.ruoyi.order.api.query.TChargingCountQuery; +import com.ruoyi.order.api.vo.ChargingOrderInfoVO; import com.ruoyi.order.api.vo.ChargingOrderVO; import com.ruoyi.order.api.vo.TCharingOrderVO; import com.ruoyi.order.dto.GetMyChargingOrderList; @@ -49,9 +51,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.PrintWriter; -import java.util.Collections; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.List; /** @@ -205,8 +205,10 @@ payOrderChargingInfo.setChargingName(data1.getName()); TChargingGun data2 = chargingGunClient.getChargingGunById(byId.getChargingGunId()).getData(); payOrderChargingInfo.setGunName(data2.getName()); - List<TAppUserCar> data3 = appUserCarClient.getCarByIds(Collections.singletonList(byId.getAppUserCarId())).getData(); - payOrderChargingInfo.setCarNum(data3.get(0).getLicensePlate()); + if (byId.getAppUserCarId()!=null) { + List<TAppUserCar> data3 = appUserCarClient.getCarByIds(Collections.singletonList(byId.getAppUserCarId())).getData(); + payOrderChargingInfo.setCarNum(data3.get(0).getLicensePlate()); + } return R.ok(); } @@ -241,9 +243,19 @@ @ResponseBody @PostMapping(value = "/chargingOrderInfo") @ApiOperation(value = "充电桩订单列表查看详情", tags = {"管理后台-订单管理"}) - public AjaxResult<TCharingOrderVO> chargingOrderInfo(String orderId) { - - return AjaxResult.success(); + public AjaxResult<ChargingOrderInfoVO> chargingOrderInfo(String orderId) { + ChargingOrderInfoVO chargingOrderInfoVO = new ChargingOrderInfoVO(); + chargingOrderInfoVO.setCdElectronic(""); + chargingOrderInfoVO.setCdVoltage(""); + chargingOrderInfoVO.setSurplus(""); + chargingOrderInfoVO.setTotalPower(""); + chargingOrderInfoVO.setLicensePlate(""); + chargingOrderInfoVO.setVehicleBrand(""); + chargingOrderInfoVO.setVehicleModel(""); + chargingOrderInfoVO.setVehicleUse(""); + List<TChargingOrderAccountingStrategy> tChargingOrderAccountingStrategies = new ArrayList<>(); + chargingOrderInfoVO.setList(tChargingOrderAccountingStrategies); + return AjaxResult.success(chargingOrderInfoVO); } @ResponseBody diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TExchangeOrderController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TExchangeOrderController.java index 2c79bee..ac3e50d 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TExchangeOrderController.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TExchangeOrderController.java @@ -38,10 +38,7 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Date; -import java.util.List; +import java.util.*; import java.util.stream.Collectors; /** @@ -96,7 +93,7 @@ } @Resource private SysUserClient sysUserClient; - @PostMapping("/getShoppingOrderInfoById") + @GetMapping("/getShoppingOrderInfoById") @ApiOperation(value = "根据订单id查看订单详情", tags = {"管理后台-兑换订单"}) public AjaxResult<TExchangeOrder> getShoppingOrderList(String id) { TExchangeOrder byId = exchangeOrderService.getById(id); @@ -145,8 +142,10 @@ } @GetMapping("/consignerShoppingOrder") @ApiOperation(value = "发货", tags = {"管理后台-兑换订单"}) - public AjaxResult consignerShoppingOrder(String id) { + public AjaxResult consignerShoppingOrder(String id,String companyName,String code) { TExchangeOrder byId = exchangeOrderService.getById(id); + byId.setExpressCompany(companyName); + byId.setExpressNumber(code); Long userid = tokenService.getLoginUser().getUserid(); byId.setConsignerId(userid); byId.setConsignerTime(LocalDateTime.now()); @@ -281,7 +280,7 @@ tExchangeOrder.setPoints(exchangeDto.getPoint()); tExchangeOrder.setRemark(""); if (exchangeDto.getGoodType()==1){ - tExchangeOrder.setStatus(0); + tExchangeOrder.setStatus(1); }else { tExchangeOrder.setStatus(3); } @@ -296,8 +295,8 @@ @GetMapping("/getMyExchangeOrder") @ApiOperation(value = "获取兑换记录列表", tags = {"小程序-兑换记录"}) - public AjaxResult<List<MyExchangeOrderList>> getMyExchangeOrder(GetMyExchangeOrder query){ - List<MyExchangeOrderList> list = exchangeOrderService.getMyExchangeOrder(query); + public AjaxResult<Map<String, Object>> getMyExchangeOrder(GetMyExchangeOrder query){ + Map<String, Object> list = exchangeOrderService.getMyExchangeOrder(query); return AjaxResult.success(list); } diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TOrderAppealController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TOrderAppealController.java index b2ddb1d..2a771c7 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TOrderAppealController.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TOrderAppealController.java @@ -9,18 +9,19 @@ import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.common.security.utils.SecurityUtils; -import com.ruoyi.order.api.model.TOrderAppeal; +import com.ruoyi.order.api.model.*; import com.ruoyi.order.api.query.TOrderAppealQuery; import com.ruoyi.order.api.vo.TOrderAppealVO; import com.ruoyi.order.dto.ManageFeedbackDto; import com.ruoyi.order.dto.ManageOrderAppealQuery; -import com.ruoyi.order.service.TOrderAppealService; +import com.ruoyi.order.service.*; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import java.util.Arrays; /** * <p> @@ -38,6 +39,16 @@ private final TokenService tokenService; @Resource private AppUserClient appUserClient; + @Resource + private TChargingOrderService chargingOrderService; + @Resource + private TShoppingOrderService shoppingOrderService; + @Resource + private TExchangeOrderService exchangeOrderService; + + @Resource + private TVipOrderService vipOrderService; + @Autowired public TOrderAppealController(TOrderAppealService orderAppealService, TokenService tokenService) { @@ -53,9 +64,19 @@ .like(manageOrderAppealQuery.getPhone() != null, TOrderAppeal::getPhone, manageOrderAppealQuery.getPhone()) .eq(manageOrderAppealQuery.getOrderType() != null, TOrderAppeal::getOrderType, manageOrderAppealQuery.getOrderType()) .in(TOrderAppeal::getOrderType, 1, 2).page(Page.of(manageOrderAppealQuery.getPageCurr(), manageOrderAppealQuery.getPageSize())); + + for (TOrderAppeal record : page.getRecords()) { + record.setUid(record.getId().toString()); + } return R.ok(page); + } + @ApiOperation(tags = {"后台-订单管理-订单申诉"},value = "删除") + @DeleteMapping (value = "/manage/delete") + public R<Page<TOrderAppeal>> delete(String ids) { + orderAppealService.removeBatchByIds(Arrays.asList(ids.split(","))); + return R.ok(); } @ApiOperation(tags = {"后台-订单管理-订单申诉"},value = "后台-订单管理-订单申诉") @@ -73,8 +94,7 @@ @ApiOperation(tags = {"小程序-订单申诉"},value = "查询订单申诉分页列表") @PostMapping(value = "/pageList") public AjaxResult<PageInfo<TOrderAppealVO>> pageList(@RequestBody TOrderAppealQuery query) { - // TODO 用户id 获取小程序当前登录用户id - Long userId = tokenService.getLoginUser().getUserid(); + Long userId = tokenService.getLoginUserApplet().getUserId(); query.setAppUserId(userId); return AjaxResult.ok(orderAppealService.pageList(query)); } @@ -84,7 +104,7 @@ */ @GetMapping(value = "/getDetailById") @ApiOperation(tags = {"小程序-订单申诉"},value = "查询订单申诉详情") - public AjaxResult<TOrderAppealVO> getDetailById(Integer id) { + public AjaxResult<TOrderAppealVO> getDetailById(String id) { return AjaxResult.ok(orderAppealService.getDetailById(id)); } @@ -99,6 +119,20 @@ orderAppeal.setAppUserId(appUserId); orderAppeal.setStatus(1); orderAppeal.setPhone(data.getPhone()); + + if (orderAppeal.getOrderType()==1){ + TChargingOrder byId = chargingOrderService.getById(orderAppeal.getOrderId()); + orderAppeal.setCode(byId.getCode()); + }else if(orderAppeal.getOrderType()==2){ + TShoppingOrder byId = shoppingOrderService.getById(orderAppeal.getOrderId()); + orderAppeal.setCode(byId.getCode()); + }else if(orderAppeal.getOrderType()==3){ + TExchangeOrder byId = exchangeOrderService.getById(orderAppeal.getOrderId()); + orderAppeal.setCode(byId.getCode()); + }else if(orderAppeal.getOrderType()==4){ + TVipOrder byId = vipOrderService.getById(orderAppeal.getOrderId()); + orderAppeal.setCode(byId.getCode()); + } orderAppealService.save(orderAppeal); return AjaxResult.success(); } diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TOrderEvaluateController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TOrderEvaluateController.java index 63c2a97..924cae7 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TOrderEvaluateController.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TOrderEvaluateController.java @@ -54,7 +54,7 @@ - @GetMapping(value = "/getPageList") + @PostMapping(value = "/getPageList") @ApiOperation(value = "获取充电评价列表", tags = {"管理后台-充电评价"}) public AjaxResult<PageInfo<GetOrderEvaluatePageListDTO>> getPageList(@RequestBody GetOrderEvaluatePageList pageList){ PageInfo<GetOrderEvaluatePageListDTO> list = orderEvaluateService.getPageList(pageList); diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TShoppingOrderController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TShoppingOrderController.java index 4962ff1..8418b50 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TShoppingOrderController.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TShoppingOrderController.java @@ -3,6 +3,8 @@ import java.time.LocalDateTime; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.ruoyi.account.api.feignClient.AppCouponClient; import com.ruoyi.account.api.feignClient.AppUserClient; import com.ruoyi.account.api.model.TAppUserAddress; @@ -35,9 +37,7 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; -import java.util.Arrays; -import java.util.Date; -import java.util.List; +import java.util.*; /** * <p> @@ -86,7 +86,7 @@ } @Resource private SysUserClient sysUserClient; - @PostMapping("/getShoppingOrderInfoById") + @GetMapping("/getShoppingOrderInfoById") @ApiOperation(value = "根据订单id查看订单详情", tags = {"管理后台-购物订单"}) public AjaxResult<TShoppingOrder> getShoppingOrderList(String id) { TShoppingOrder byId = shoppingOrderService.getById(id); @@ -144,6 +144,9 @@ // todo 部署到线上之后写回调地址 // wxPaymentRefundModel.setNotify_url(""); String string = byId.getPaymentAmount().multiply(new BigDecimal("100")).toString(); + if (string.contains(".")){ + string = string.substring(0,string.indexOf(".")); + } int i = Integer.parseInt(string); WxPaymentRefundModel.RefundAmount refundAmount = new WxPaymentRefundModel.RefundAmount(); refundAmount.setTotal(i); @@ -178,8 +181,10 @@ } @GetMapping("/consignerShoppingOrder") @ApiOperation(value = "发货", tags = {"管理后台-购物订单"}) - public AjaxResult consignerShoppingOrder(String id) { + public AjaxResult consignerShoppingOrder(String id,String companyName,String code) { TShoppingOrder byId = shoppingOrderService.getById(id); + byId.setExpressCompany(companyName); + byId.setExpressNumber(code); Long userid = tokenService.getLoginUser().getUserid(); byId.setConsignerId(userid); byId.setConsignerTime(LocalDateTime.now()); @@ -189,11 +194,28 @@ } @GetMapping("/getMyShoppingOrderList") @ApiOperation(value = "获取购买订单列表", tags = {"小程序-商城购买订单"}) - public AjaxResult<List<MyShoppingOrderList>> getMyShoppingOrderList(GetMyShoppingOrderList query){ - List<MyShoppingOrderList> list = shoppingOrderService.getMyShoppingOrderList(query); + public AjaxResult<Map<String, Object>> getMyShoppingOrderList(GetMyShoppingOrderList query){ + Map<String, Object> list = shoppingOrderService.getMyShoppingOrderList(query); return AjaxResult.success(list); } - + + @GetMapping("/getMyShoppingOrderListNum") + @ApiOperation(value = "获取购买订单列表数量", tags = {"小程序-商城购买订单"}) + public AjaxResult<Map<String, Object>> getMyShoppingOrderListNum(){ + Long userId = tokenService.getLoginUserApplet().getUserId(); + long dfh = shoppingOrderService.count(new LambdaQueryWrapper<TShoppingOrder>().eq(TShoppingOrder::getDelFlag, 0) + .eq(TShoppingOrder::getStatus, 1).eq(TShoppingOrder::getAppUserId, userId)); + long dsh = shoppingOrderService.count(new LambdaQueryWrapper<TShoppingOrder>().eq(TShoppingOrder::getDelFlag, 0) + .eq(TShoppingOrder::getStatus, 2).eq(TShoppingOrder::getAppUserId, userId)); + long ywc = shoppingOrderService.count(new LambdaQueryWrapper<TShoppingOrder>().eq(TShoppingOrder::getDelFlag, 0) + .eq(TShoppingOrder::getStatus, 3).eq(TShoppingOrder::getAppUserId, userId)); + Map<String, Object> map = new HashMap<>(); + map.put("dfh", dfh); + map.put("dsh", dsh); + map.put("ywc", ywc); + return AjaxResult.success(map); + } + @GetMapping("/getMyShoppingOrderInfo/{id}") diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TVipOrderController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TVipOrderController.java index 8165775..7beaf25 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TVipOrderController.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TVipOrderController.java @@ -52,7 +52,7 @@ @PostMapping("/addVipOrder") @ApiOperation(value = "添加会员订单", tags = {"管理后台-会员订单"}) public AjaxResult addVipOrder(@RequestBody TVipOrder dto) { - vipOrderService.save(dto); + vipOrderService.saveOrUpdate(dto); return AjaxResult.success(); } @GetMapping("/deleteVipOrder") diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/ChargingListQuery.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/ChargingListQuery.java new file mode 100644 index 0000000..e9187bb --- /dev/null +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/ChargingListQuery.java @@ -0,0 +1,38 @@ +package com.ruoyi.order.dto; + +import com.ruoyi.common.core.web.page.BasePage; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.time.LocalDateTime; +import java.util.List; + +@Data +public class ChargingListQuery extends BasePage { + @ApiModelProperty("订单编号") + private String code; + + @ApiModelProperty("电站id") + private Integer siteId; + @ApiModelProperty("状态(0=未知,1=等待中,2=启动中,3=充电中,4=停止中,5=已结束)") + private Integer status; + + @ApiModelProperty("手机号") + private String phone; + @ApiModelProperty("车牌号") + private String licensePlate; + + @ApiModelProperty("订单类型(1=充电订单(小程序),2=充电订单(刷卡))") + private Integer orderType; + + @ApiModelProperty("开始时间 2020-01-01 12:00:00 - 2020-01-01 23:00:00") + private String startTime; + + @ApiModelProperty("结束时间 2020-01-01 12:00:00 - 2020-01-01 23:00:00") + private String endTime; + @ApiModelProperty("用户ids 前端忽略") + private List<Long> userIds; + @ApiModelProperty("车辆ids 前端忽略") + private List<Long> carIds; + +} diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/PayOrderDto.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/PayOrderDto.java index db5a856..762d550 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/PayOrderDto.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/PayOrderDto.java @@ -31,5 +31,7 @@ private LocalDateTime endTime; @ApiModelProperty("支付时间") private LocalDateTime payTime; + private Integer refundStatus; + private Double finalAmount; } diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/filter/AuthFilter.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/filter/AuthFilter.java index 6d39f09..bebbace 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/filter/AuthFilter.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/filter/AuthFilter.java @@ -80,7 +80,7 @@ return; } } - filterChain.doFilter(request, response); + filterChain.doFilter(servletRequest, servletResponse); } diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingOrderMapper.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingOrderMapper.java index d001f09..13d6c92 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingOrderMapper.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingOrderMapper.java @@ -5,11 +5,9 @@ import com.ruoyi.order.api.model.TChargingOrder; import com.ruoyi.order.api.model.TChargingOrderRefund; import com.ruoyi.order.api.query.ChargingOrderQuery; +import com.ruoyi.order.api.vo.ChargingOrderListVO; import com.ruoyi.order.api.vo.ChargingOrderVO; -import com.ruoyi.order.dto.ChargingRefundDto; -import com.ruoyi.order.dto.GetNoInvoicedOrder; -import com.ruoyi.order.dto.PayOrderDto; -import com.ruoyi.order.dto.PayOrderQueryDto; +import com.ruoyi.order.dto.*; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -55,4 +53,8 @@ List<PayOrderDto> payOrderQuery(@Param("pageInfo")PageInfo<PayOrderDto> pageInfo,@Param("data") PayOrderQueryDto payOrderQueryDto); List<TChargingOrderRefund> getRefundList(@Param("pageInfo")PageInfo<TChargingOrderRefund> pageInfo,@Param("data") ChargingRefundDto chargingRefundDto); + + List<ChargingOrderListVO> chargingList(@Param("pageInfo")PageInfo<ChargingOrderListVO> pageInfo, @Param("req")ChargingListQuery dto, @Param("startTime1")String startTime1, @Param("startTime2")String startTime2, @Param("endTime1")String endTime1, @Param("endTime2")String endTime2); + List<ChargingOrderListVO> chargingList1( @Param("req")ChargingListQuery dto, @Param("startTime1")String startTime1, @Param("startTime2")String startTime2, @Param("endTime1")String endTime1, @Param("endTime2")String endTime2); + } diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java index abf4b75..8608071 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java @@ -8,6 +8,7 @@ import com.ruoyi.order.api.model.TChargingOrder; import com.ruoyi.order.api.model.TChargingOrderRefund; import com.ruoyi.order.api.query.ChargingOrderQuery; +import com.ruoyi.order.api.vo.ChargingOrderTimeVO; import com.ruoyi.order.api.vo.ChargingOrderVO; import com.ruoyi.order.api.vo.TCharingOrderVO; import com.ruoyi.order.dto.*; @@ -90,4 +91,6 @@ R<PageInfo<PayOrderDto>> payOrderQuery(PayOrderQueryDto payOrderQueryDto); R<PageInfo<TChargingOrderRefund>> getRefundList(ChargingRefundDto chargingRefundDto); + + ChargingOrderTimeVO chargingList(ChargingListQuery dto); } diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TExchangeOrderService.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TExchangeOrderService.java index 755fa3c..ce4ae13 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TExchangeOrderService.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TExchangeOrderService.java @@ -9,6 +9,7 @@ import com.ruoyi.order.dto.MyExchangeOrderList; import java.util.List; +import java.util.Map; /** * <p> @@ -26,7 +27,7 @@ * @param query * @return */ - List<MyExchangeOrderList> getMyExchangeOrder(GetMyExchangeOrder query); + Map<String, Object> getMyExchangeOrder(GetMyExchangeOrder query); /** diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TOrderAppealService.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TOrderAppealService.java index 1cad0a1..2ed3cae 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TOrderAppealService.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TOrderAppealService.java @@ -28,5 +28,5 @@ * @param id * @return */ - TOrderAppealVO getDetailById(Integer id); + TOrderAppealVO getDetailById(String id); } diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TShoppingOrderService.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TShoppingOrderService.java index ae5925d..4615b05 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TShoppingOrderService.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TShoppingOrderService.java @@ -16,6 +16,7 @@ import org.springframework.web.bind.annotation.RequestBody; import java.util.List; +import java.util.Map; /** * <p> @@ -35,7 +36,7 @@ * @param query * @return */ - List<MyShoppingOrderList> getMyShoppingOrderList(GetMyShoppingOrderList query); + Map<String, Object> getMyShoppingOrderList(GetMyShoppingOrderList query); /** diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderAccountingStrategyServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderAccountingStrategyServiceImpl.java index 413fa9b..f242070 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderAccountingStrategyServiceImpl.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderAccountingStrategyServiceImpl.java @@ -71,21 +71,21 @@ map2.put("name", "峰"); BigDecimal value2 = list1.stream().filter(s -> orderIds.contains(s.getChargingOrderId()) && s.getType() == 2) .map(TChargingOrderAccountingStrategy::getChargingCapacity).reduce(BigDecimal.ZERO, BigDecimal::add); - map1.put("value", value2.setScale(2, RoundingMode.HALF_EVEN)); + map2.put("value", value2.setScale(2, RoundingMode.HALF_EVEN)); datas.add(map2); Map<String, Object> map3 = new HashMap<>(); map3.put("name", "平"); BigDecimal value3 = list1.stream().filter(s -> orderIds.contains(s.getChargingOrderId()) && s.getType() == 3) .map(TChargingOrderAccountingStrategy::getChargingCapacity).reduce(BigDecimal.ZERO, BigDecimal::add); - map1.put("value", value3.setScale(2, RoundingMode.HALF_EVEN)); + map3.put("value", value3.setScale(2, RoundingMode.HALF_EVEN)); datas.add(map3); Map<String, Object> map4 = new HashMap<>(); map4.put("name", "谷"); BigDecimal value4 = list1.stream().filter(s -> orderIds.contains(s.getChargingOrderId()) && s.getType() == 4) .map(TChargingOrderAccountingStrategy::getChargingCapacity).reduce(BigDecimal.ZERO, BigDecimal::add); - map1.put("value", value4.setScale(2, RoundingMode.HALF_EVEN)); + map4.put("value", value4.setScale(2, RoundingMode.HALF_EVEN)); datas.add(map4); list2.add(datas); } diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java index ad94c84..2eed89a 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java @@ -35,6 +35,8 @@ import com.ruoyi.order.api.model.TChargingOrderRefund; import com.ruoyi.order.api.model.TOrderEvaluate; import com.ruoyi.order.api.query.ChargingOrderQuery; +import com.ruoyi.order.api.vo.ChargingOrderListVO; +import com.ruoyi.order.api.vo.ChargingOrderTimeVO; import com.ruoyi.order.api.vo.ChargingOrderVO; import com.ruoyi.order.api.vo.TCharingOrderVO; import com.ruoyi.order.dto.*; @@ -82,6 +84,10 @@ private AppUserCarClient appUserCarClient; @Resource private AppUserClient appUserClient; + + @Resource + private ChargingPileClient chargingPileClient; + @Resource private TChargingOrderAccountingStrategyService chargingOrderAccountingStrategyService; @@ -94,9 +100,6 @@ @Resource private AliPaymentClient aliPaymentClient; - - @Resource - private ChargingPileClient chargingPileClient; @Resource @@ -596,6 +599,12 @@ BigDecimal electronicMoney = new BigDecimal("0"); BigDecimal serviceMoney = new BigDecimal("0"); for (ChargingOrderVO chargingOrderVO : list) { + TChargingGun data3 = chargingGunClient.getChargingGunById(chargingOrderVO.getChargingGunId()).getData(); + TChargingPile data2 = chargingPileClient.getChargingPileById(chargingOrderVO.getChargingPileId()).getData(); + if (data2!=null && data3!=null){ + chargingOrderVO.setTerminalName(data2.getName()+"-"+data3.getName()); + + } if (chargingOrderVO.getChargingCapacity()!=null){ total = total.add(chargingOrderVO.getChargingCapacity()); } @@ -606,14 +615,8 @@ BigDecimal electronicMoney1 = new BigDecimal("0"); // 单个订单累计服务费 BigDecimal serviceMoney1 = new BigDecimal("0"); - LocalDateTime startTime = chargingOrderVO.getStartTime(); - LocalDateTime endTime = chargingOrderVO.getEndTime(); - // 计算时间差 秒 充电时长 - if (startTime!=null && endTime!=null){ - long between = ChronoUnit.SECONDS.between(startTime, endTime); - chargingOrderVO.setChargingSecond(between); - time += between; - } + // todo 调用第三方获取充电时长 秒 + // 总收入 if (chargingOrderVO.getRefundStatus() !=null && chargingOrderVO.getRefundStatus() == 2){ income = income.add(chargingOrderVO.getPaymentAmount().subtract(chargingOrderVO.getRefundAmount())); @@ -678,4 +681,166 @@ return R.ok(pageInfo); } + + @Override + public ChargingOrderTimeVO chargingList(ChargingListQuery dto) { + String startTime1 = null; + String startTime2 = null; + String endTime1 = null; + String endTime2 = null; + + if (StringUtils.hasLength(dto.getStartTime())){ + String[] split = dto.getStartTime().split(" - "); + startTime1 = split[0]; + startTime2 = split[1]; + } + if (StringUtils.hasLength(dto.getEndTime())){ + String[] split = dto.getEndTime().split(" - "); + endTime1 = split[0]; + endTime2 = split[1]; + } + ChargingOrderTimeVO chargingOrderTimeVO = new ChargingOrderTimeVO(); + + + PageInfo<ChargingOrderListVO> pageInfo = new PageInfo<>(dto.getPageCurr(),dto.getPageSize()); + List<ChargingOrderListVO> list = this.baseMapper.chargingList(pageInfo,dto,startTime1,startTime2,endTime1,endTime2); + for (ChargingOrderListVO chargingOrderListVO : list) { + List<Integer> integers = new ArrayList<>(); + integers.add(chargingOrderListVO.getSiteId()); + List<Site> data = siteClient.getSiteByIds(integers).getData(); + if (!data.isEmpty()) { + chargingOrderListVO.setSiteName(data.get(0).getName()); + } + TChargingGun data1 = chargingGunClient.getChargingGunById(chargingOrderListVO.getChargingGunId()).getData(); + TChargingPile data2 = chargingPileClient.getChargingPileById(chargingOrderListVO.getChargingPileId()).getData(); + if (data2 != null && data1 != null) { + chargingOrderListVO.setTerminalName(data2.getName() + "-" + data1.getName()); + } + // todo 充电时长 调用第三方获取 + TAppUser data3 = appUserClient.getUserById(chargingOrderListVO.getAppUserId()).getData(); + List<Long> carId = new ArrayList<>(); + if (chargingOrderListVO.getAppUserCarId() != null) { + carId.add(chargingOrderListVO.getAppUserCarId()); + List<TAppUserCar> data4 = appUserCarClient.getCarByIds(carId).getData(); + if (!data4.isEmpty()) chargingOrderListVO.setLicensePlate(data4.get(0).getLicensePlate()); + } + if (data3 != null) chargingOrderListVO.setPhone(data3.getPhone()); + List<TChargingOrderAccountingStrategy> list2 = chargingOrderAccountingStrategyService.lambdaQuery() + .eq(TChargingOrderAccountingStrategy::getChargingOrderId, chargingOrderListVO.getId()).list(); + // 尖峰平谷充电量 度数 + BigDecimal jian = new BigDecimal("0"); + BigDecimal feng = new BigDecimal("0"); + BigDecimal ping = new BigDecimal("0"); + BigDecimal gu = new BigDecimal("0"); + BigDecimal total = new BigDecimal("0"); + for (TChargingOrderAccountingStrategy temp : list2) { + switch (temp.getType()) { + case 1: + jian = jian.add(temp.getChargingCapacity()); + break; + case 2: + feng = feng.add(temp.getChargingCapacity()); + break; + case 3: + ping = ping.add(temp.getChargingCapacity()); + break; + case 4: + gu = gu.add(temp.getChargingCapacity()); + break; + } + } + total = total.add(jian).add(feng).add(ping).add(gu); + chargingOrderListVO.setElectronicProportion( + jian.divide(total,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%(尖)/" + +feng.divide(total,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%(峰)/" + +ping.divide(total,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%(平)/" + +gu.divide(total,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%(谷)"); + } + // 不分页 + List<ChargingOrderListVO> list1 = this.baseMapper.chargingList1(dto,startTime1,startTime2,endTime1,endTime2); + chargingOrderTimeVO.setOrderCount(list1.size()); + // 计算充电总度数 + BigDecimal electronic = new BigDecimal("0"); + // 支付金额 + BigDecimal paymentAmount = new BigDecimal("0"); + // 电费 + BigDecimal electrovalence = new BigDecimal("0"); + // 服务费 + BigDecimal serviceCharge = new BigDecimal("0"); + // 尖峰平谷充电到账 + BigDecimal jianElectronic = new BigDecimal("0"); + BigDecimal fengElectronic = new BigDecimal("0"); + BigDecimal pingElectronic = new BigDecimal("0"); + BigDecimal guElectronic = new BigDecimal("0"); + // 尖峰平谷服务费 + BigDecimal jianService = new BigDecimal("0"); + BigDecimal fengService = new BigDecimal("0"); + BigDecimal pingService = new BigDecimal("0"); + BigDecimal guService = new BigDecimal("0"); + // 尖峰平谷充电量 度数 + BigDecimal jian = new BigDecimal("0"); + BigDecimal feng = new BigDecimal("0"); + BigDecimal ping = new BigDecimal("0"); + BigDecimal gu = new BigDecimal("0"); + for (ChargingOrderListVO chargingOrderListVO : list1) { + electronic = electronic.add(chargingOrderListVO.getChargingCapacity()); + paymentAmount = paymentAmount.add(chargingOrderListVO.getPaymentAmount()); + electrovalence = electrovalence.add(chargingOrderListVO.getElectrovalence()); + serviceCharge = serviceCharge.add(chargingOrderListVO.getServiceCharge()); + List<TChargingOrderAccountingStrategy> list2 = chargingOrderAccountingStrategyService.lambdaQuery() + .eq(TChargingOrderAccountingStrategy::getChargingOrderId, chargingOrderListVO.getId()).list(); + for (TChargingOrderAccountingStrategy temp : list2) { + switch (temp.getType()){ + case 1: + jian = jian.add(temp.getChargingCapacity()); + jianElectronic = jianElectronic.add(temp.getChargingCapacity()); + jianService = jianService.add(temp.getChargingCapacity()); + break; + case 2: + feng = feng.add(temp.getChargingCapacity()); + fengElectronic = fengElectronic.add(temp.getChargingCapacity()); + fengService = fengService.add(temp.getChargingCapacity()); + break; + case 3: + ping = ping.add(temp.getChargingCapacity()); + pingElectronic = pingElectronic.add(temp.getChargingCapacity()); + pingService = pingService.add(temp.getChargingCapacity()); + break; + case 4: + gu = gu.add(temp.getChargingCapacity()); + guElectronic = guElectronic.add(temp.getChargingCapacity()); + guService = guService.add(temp.getChargingCapacity()); + break; + } + } + } + + chargingOrderTimeVO.setChargingCapacity(electronic); + chargingOrderTimeVO.setPaymentAmount(paymentAmount); + chargingOrderTimeVO.setElectrovalence(electrovalence); + chargingOrderTimeVO.setServiceCharge(serviceCharge); + // 计算尖峰平谷充电量占比 + BigDecimal add = jianElectronic.add(fengElectronic).add(pingElectronic).add(guElectronic); + // 计算尖峰平谷服务费占比 + BigDecimal add1 = jianService.add(fengService).add(pingService).add(guService); + // 计算尖峰平谷充电到账占比 + BigDecimal add2 = jian.add(feng).add(ping).add(gu); + chargingOrderTimeVO.setCapacityProportion(jianElectronic+"度/"+fengElectronic+"度/"+pingElectronic+"度/"+guElectronic+"度-" + +jianElectronic.divide(add,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/" + +fengElectronic.divide(add,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/" + +pingElectronic.divide(add,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/" + +guElectronic.divide(add,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%"); + chargingOrderTimeVO.setServiceProportion(jianService+"元/"+fengService+"元/"+pingService+"元/"+guService+"元-" + +jianService.divide(add1,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/" + +fengService.divide(add1,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/" + +pingService.divide(add1,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/" + +guService.divide(add1,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%"); + chargingOrderTimeVO.setElectronicProportion(jian+"元/"+feng+"元/"+ping+"元/"+gu+"元-" + +jian.divide(add2,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/" + +feng.divide(add2,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/" + +ping.divide(add2,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/" + +gu.divide(add2,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%"); + chargingOrderTimeVO.setList(pageInfo); + return chargingOrderTimeVO; + } } diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TExchangeOrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TExchangeOrderServiceImpl.java index d554e24..243c47e 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TExchangeOrderServiceImpl.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TExchangeOrderServiceImpl.java @@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.account.api.feignClient.AppUserAddressClient; +import com.ruoyi.account.api.feignClient.AppUserClient; +import com.ruoyi.account.api.model.TAppUser; import com.ruoyi.account.api.model.TAppUserAddress; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.common.security.service.TokenService; @@ -25,7 +27,9 @@ import javax.annotation.Resource; import java.time.format.DateTimeFormatter; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; /** * <p> @@ -49,8 +53,9 @@ @Resource private AppUserAddressClient appUserAddressClient; - - + + @Resource + private AppUserClient appUserClient; @@ -61,7 +66,7 @@ * @return */ @Override - public List<MyExchangeOrderList> getMyExchangeOrder(GetMyExchangeOrder query) { + public Map<String, Object> getMyExchangeOrder(GetMyExchangeOrder query) { Long userid = tokenService.getLoginUserApplet().getUserId(); LambdaQueryWrapper<TExchangeOrder> wrapper = new LambdaQueryWrapper<TExchangeOrder>().eq(TExchangeOrder::getDelFlag, 0).eq(TExchangeOrder::getAppUserId, userid); if(query.getStatus() == 0){ @@ -69,7 +74,9 @@ }else{ wrapper.eq(TExchangeOrder::getStatus, query.getStatus()); } - List<TExchangeOrder> list = this.list(wrapper.orderByDesc(TExchangeOrder::getCreateTime).last(" limit " + query.getPageCurr() + "," + query.getPageSize())); + long count = this.count(wrapper); + Integer pageCurr = (query.getPageCurr() - 1) * query.getPageSize(); + List<TExchangeOrder> list = this.list(wrapper.orderByDesc(TExchangeOrder::getCreateTime).last(" limit " + pageCurr + "," + query.getPageSize())); List<MyExchangeOrderList> pageList = new ArrayList<>(); for (TExchangeOrder tExchangeOrder : list) { MyExchangeOrderList exchangeOrderList = new MyExchangeOrderList(); @@ -94,7 +101,10 @@ exchangeOrderList.setImgUrl(imgUrl); pageList.add(exchangeOrderList); } - return pageList; + Map<String, Object> map = new HashMap<>(); + map.put("list", pageList); + map.put("total", count); + return map; } @@ -109,10 +119,12 @@ ExchangeOrderGoodsInfo info = new ExchangeOrderGoodsInfo(); info.setId(id); info.setStatus(exchangeOrder.getStatus()); - TAppUserAddress userAddress = appUserAddressClient.getAppUserAddressById(exchangeOrder.getAppUserAddressId()).getData(); - info.setConsignee(userAddress.getName()); - info.setPhone(userAddress.getPhone()); - info.setAddress(userAddress.getAddress()); + if(null != exchangeOrder.getAppUserAddressId()){ + TAppUserAddress userAddress = appUserAddressClient.getAppUserAddressById(exchangeOrder.getAppUserAddressId()).getData(); + info.setConsignee(userAddress.getName()); + info.setPhone(userAddress.getPhone()); + info.setAddress(userAddress.getAddress()); + } info.setExpressCompany(exchangeOrder.getExpressCompany()); info.setExpressNumber(exchangeOrder.getExpressNumber()); String name = ""; @@ -137,8 +149,12 @@ info.setCreateTime(exchangeOrder.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); info.setPoints(exchangeOrder.getPoints()); info.setRemark(exchangeOrder.getRemark()); - info.setDeliveryTime(exchangeOrder.getConsignerTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); - info.setFinishTime(exchangeOrder.getReceivingTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); + if(null != exchangeOrder.getConsignerTime()){ + info.setDeliveryTime(exchangeOrder.getConsignerTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); + } + if(null != exchangeOrder.getReceivingTime()){ + info.setFinishTime(exchangeOrder.getReceivingTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); + } return info; } @@ -155,7 +171,29 @@ } PageInfo<TExchangeOrder> pageInfo = new PageInfo<>(query.getPageCurr(),query.getPageSize()); List<TExchangeOrder> list = this.baseMapper.pageList(pageInfo,query,startTime1,startTime2); - + for (TExchangeOrder tShoppingOrder : list) { + tShoppingOrder.setUid(tShoppingOrder.getId().toString()); + switch (tShoppingOrder.getOrderType()){ + case 1: + TGoods data = goodsClient.getGoodsById(tShoppingOrder.getGoodsId()).getData(); + if (data!=null){ + tShoppingOrder.setName(data.getName()); + } + break; + case 2: + TCoupon data1 = couponClient.getCouponById1(tShoppingOrder.getCouponId()).getData(); + if (data1!=null){ + tShoppingOrder.setName(data1.getName()); + } + break; + } + if (tShoppingOrder.getAppUserId() != null){ + TAppUser data = appUserClient.getUserById(tShoppingOrder.getAppUserId()).getData(); + if (data!=null){ + tShoppingOrder.setPhone(data.getPhone()); + } + } + } pageInfo.setRecords(list); return pageInfo; } diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderAppealServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderAppealServiceImpl.java index 4bc05f6..6c8d89c 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderAppealServiceImpl.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderAppealServiceImpl.java @@ -2,6 +2,10 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.chargingPile.api.feignClient.ChargingGunClient; +import com.ruoyi.chargingPile.api.model.Site; +import com.ruoyi.chargingPile.api.model.TChargingPile; +import com.ruoyi.chargingPile.api.vo.SiteNameVO; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.order.api.model.*; import com.ruoyi.order.api.query.TOrderAppealQuery; @@ -9,11 +13,14 @@ import com.ruoyi.order.mapper.*; import com.ruoyi.order.service.TChargingOrderService; import com.ruoyi.order.service.TOrderAppealService; +import com.ruoyi.other.api.domain.TGoods; +import com.ruoyi.other.api.feignClient.GoodsClient; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; +import java.util.Objects; import java.util.stream.Collectors; /** @@ -30,11 +37,11 @@ @Autowired private TChargingOrderMapper chargingOrderMapper; @Autowired - private TExchangeOrderMapper exchangeOrderMapper; - @Autowired private TShoppingOrderMapper shoppingOrderMapper; @Autowired - private TVipOrderMapper vipOrderMapper; + private GoodsClient goodsClient; + @Autowired + private ChargingGunClient chargingGunClient; @Override public PageInfo<TOrderAppealVO> pageList(TOrderAppealQuery query) { @@ -44,42 +51,54 @@ // 查询当前页的订单 List<TChargingOrder> chargingOrders = chargingOrderMapper.selectList(Wrappers.lambdaQuery(TChargingOrder.class) .in(TChargingOrder::getId, orderIds)); - List<TExchangeOrder> exchangeOrders = exchangeOrderMapper.selectList(Wrappers.lambdaQuery(TExchangeOrder.class) - .in(TExchangeOrder::getId, orderIds)); List<TShoppingOrder> shoppingOrders = shoppingOrderMapper.selectList(Wrappers.lambdaQuery(TShoppingOrder.class) .in(TShoppingOrder::getId, orderIds)); - List<TVipOrder> vipOrders = vipOrderMapper.selectList(Wrappers.lambdaQuery(TVipOrder.class) - .in(TVipOrder::getId, orderIds)); list.forEach(item -> { if (item.getOrderType() == 1) { - item.setChargingOrder(chargingOrders.stream().filter(chargingOrder -> chargingOrder.getId().equals(item.getOrderId())).findFirst().orElse(null)); - } else if (item.getOrderType() == 2) { - item.setExchangeOrder(exchangeOrders.stream().filter(exchangeOrder -> exchangeOrder.getId().equals(item.getOrderId())).findFirst().orElse(null)); - }else if (item.getOrderType() == 3) { - item.setShoppingOrder(shoppingOrders.stream().filter(shoppingOrder -> shoppingOrder.getId().equals(item.getOrderId())).findFirst().orElse(null)); - }else if (item.getOrderType() == 4) { - item.setVipOrder(vipOrders.stream().filter(vipOrder -> vipOrder.getId().equals(item.getOrderId())).findFirst().orElse(null)); + TChargingOrder tChargingOrder = chargingOrders.stream().filter(chargingOrder -> chargingOrder.getId().equals(item.getOrderId())).findFirst().orElse(null); + if(Objects.nonNull(tChargingOrder)){ + item.setChargingOrder(chargingOrders.stream().filter(chargingOrder -> chargingOrder.getId().equals(item.getOrderId())).findFirst().orElse(null)); + SiteNameVO siteNameVO = chargingGunClient.getAllInfoById(tChargingOrder.getChargingGunId()).getData(); + item.setGunName(siteNameVO.getGunName()); + item.setGunNumber(siteNameVO.getGunNumber()); + item.setPileName(siteNameVO.getPileName()); + item.setPileNumber(siteNameVO.getPileNumber()); + item.setSiteName(siteNameVO.getSiteName()); + } + }else if (item.getOrderType() == 2) { + TShoppingOrder tShoppingOrder = shoppingOrders.stream().filter(shoppingOrder -> shoppingOrder.getId().equals(item.getOrderId())).findFirst().orElse(null); + setGoodsInfo(item,tShoppingOrder); } }); + list.forEach(e->e.setUid(e.getId().toString())); pageInfo.setRecords(list); return pageInfo; } @Override - public TOrderAppealVO getDetailById(Integer id) { + public TOrderAppealVO getDetailById(String id) { TOrderAppeal orderAppeal = this.baseMapper.selectById(id); TOrderAppealVO orderAppealVO = new TOrderAppealVO(); BeanUtils.copyProperties(orderAppeal,orderAppealVO); // 查询申诉详情 if (orderAppeal.getOrderType() == 1) { orderAppealVO.setChargingOrder(chargingOrderMapper.selectById(orderAppeal.getOrderId())); - } else if (orderAppeal.getOrderType() == 2) { - orderAppealVO.setExchangeOrder(exchangeOrderMapper.selectById(orderAppeal.getOrderId())); - }else if (orderAppeal.getOrderType() == 3) { - orderAppealVO.setShoppingOrder(shoppingOrderMapper.selectById(orderAppeal.getOrderId())); - }else if (orderAppeal.getOrderType() == 4) { - orderAppealVO.setVipOrder(vipOrderMapper.selectById(orderAppeal.getOrderId())); + }else if (orderAppeal.getOrderType() == 2) { + TShoppingOrder tShoppingOrder = shoppingOrderMapper.selectById(orderAppeal.getOrderId()); + setGoodsInfo(orderAppealVO,tShoppingOrder); } return orderAppealVO; } + + private void setGoodsInfo(TOrderAppealVO orderAppealVO,TShoppingOrder tShoppingOrder){ + if(Objects.nonNull(tShoppingOrder)){ + orderAppealVO.setShoppingOrder(tShoppingOrder); + TGoods goods = goodsClient.getGoodsById(tShoppingOrder.getGoodsId()).getData(); + if(Objects.nonNull(goods)){ + orderAppealVO.setGoodsName(goods.getName()); + orderAppealVO.setGoodsPicture(goods.getCoverPicture()); + } + } + } + } diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderInvoiceServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderInvoiceServiceImpl.java index ac22a39..61431f4 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderInvoiceServiceImpl.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderInvoiceServiceImpl.java @@ -90,7 +90,7 @@ public AjaxResult addOrderInvoice(AddOrderInvoice addOrderInvoice) { Long userId = tokenService.getLoginUserApplet().getUserId(); String orders = addOrderInvoice.getOrders(); - if(StringUtils.isNotEmpty(orders)){ + if(StringUtils.isEmpty(orders)){ return AjaxResult.error("请选择有效的订单"); } JSONArray parse = JSONArray.parse(orders); diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TShoppingOrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TShoppingOrderServiceImpl.java index c64f6ab..cad99dd 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TShoppingOrderServiceImpl.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TShoppingOrderServiceImpl.java @@ -6,6 +6,8 @@ import com.ruoyi.account.api.dto.GrantCouponDto; import com.ruoyi.account.api.feignClient.AppCouponClient; import com.ruoyi.account.api.feignClient.AppUserAddressClient; +import com.ruoyi.account.api.feignClient.AppUserClient; +import com.ruoyi.account.api.model.TAppUser; import com.ruoyi.account.api.model.TAppUserAddress; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.web.domain.AjaxResult; @@ -44,9 +46,7 @@ import java.text.SimpleDateFormat; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; +import java.util.*; import java.util.stream.Collectors; /** @@ -68,6 +68,8 @@ @Resource private CouponClient couponClient; + @Resource + private AppUserClient appUserClient; @Resource private AppUserAddressClient appUserAddressClient; @@ -190,14 +192,16 @@ * @return */ @Override - public List<MyShoppingOrderList> getMyShoppingOrderList(GetMyShoppingOrderList query) { + public Map<String, Object> getMyShoppingOrderList(GetMyShoppingOrderList query) { Long userId = tokenService.getLoginUserApplet().getUserId(); LambdaQueryWrapper<TShoppingOrder> wrapper = new LambdaQueryWrapper<TShoppingOrder>().eq(TShoppingOrder::getDelFlag, 0) .eq(TShoppingOrder::getAppUserId, userId); if(query.getStatus() != 0){ wrapper.eq(TShoppingOrder::getStatus, query.getStatus()); } - List<TShoppingOrder> list = this.list(wrapper.orderByDesc(TShoppingOrder::getCreateTime).last(" limit " + query.getPageCurr() + ", " + query.getPageSize())); + long count = this.count(wrapper); + Integer pageCurr = (query.getPageCurr() - 1) * query.getPageSize(); + List<TShoppingOrder> list = this.list(wrapper.orderByDesc(TShoppingOrder::getCreateTime).last(" limit " + pageCurr + ", " + query.getPageSize())); List<MyShoppingOrderList> pageList = new ArrayList<>(); for (TShoppingOrder tShoppingOrder : list) { MyShoppingOrderList myShoppingOrderList = new MyShoppingOrderList(); @@ -223,7 +227,10 @@ myShoppingOrderList.setOrderType(tShoppingOrder.getOrderType()); pageList.add(myShoppingOrderList); } - return pageList; + Map<String, Object> map = new HashMap<>(); + map.put("list", pageList); + map.put("total", count); + return map; } @@ -499,7 +506,30 @@ } PageInfo<TShoppingOrder> pageInfo = new PageInfo<>(query.getPageCurr(),query.getPageSize()); List<TShoppingOrder> list = this.baseMapper.pageList(pageInfo,query,startTime1,startTime2); + for (TShoppingOrder tShoppingOrder : list) { + tShoppingOrder.setUid(tShoppingOrder.getId().toString()); + switch (tShoppingOrder.getOrderType()){ + case 1: + TGoods data = goodsClient.getGoodsById(tShoppingOrder.getGoodsId()).getData(); + if (data!=null){ + tShoppingOrder.setName(data.getName()); + } + break; + case 2: + TCoupon data1 = couponClient.getCouponById1(tShoppingOrder.getCouponId()).getData(); + if (data1!=null){ + tShoppingOrder.setName(data1.getName()); + } + break; + } + if (tShoppingOrder.getAppUserId() != null){ + TAppUser data = appUserClient.getUserById(tShoppingOrder.getAppUserId()).getData(); + if (data!=null){ + tShoppingOrder.setPhone(data.getPhone()); + } + } + } pageInfo.setRecords(list); return pageInfo; } diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TVipOrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TVipOrderServiceImpl.java index d022a8c..bce2fae 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TVipOrderServiceImpl.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TVipOrderServiceImpl.java @@ -7,9 +7,12 @@ import com.ruoyi.order.api.query.VipShoppingOrderQuery; import com.ruoyi.order.mapper.TVipOrderMapper; import com.ruoyi.order.service.TVipOrderService; +import com.ruoyi.other.api.domain.TVip; +import com.ruoyi.other.api.feignClient.VipClient; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; +import javax.annotation.Resource; import java.util.List; /** @@ -23,6 +26,8 @@ @Service public class TVipOrderServiceImpl extends ServiceImpl<TVipOrderMapper, TVipOrder> implements TVipOrderService { + @Resource + private VipClient vipClient; @Override public PageInfo<TVipOrder> pageList(VipShoppingOrderQuery query) { String startTime1 = null; @@ -36,7 +41,14 @@ } PageInfo<TVipOrder> pageInfo = new PageInfo<>(query.getPageCurr(),query.getPageSize()); List<TVipOrder> list = this.baseMapper.pageList(pageInfo,query,startTime1,startTime2); - + for (TVipOrder tVipOrder : list) { + tVipOrder.setUid(tVipOrder.getId().toString()); + tVipOrder.setUserUid(tVipOrder.getAppUserId().toString()); + TVip data = vipClient.getInfo(tVipOrder.getVipId()).getData(); + if (data!=null){ + tVipOrder.setName(data.getName()); + } + } pageInfo.setRecords(list); return pageInfo; } diff --git a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml index 4a8d45d..e44e153 100644 --- a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml +++ b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml @@ -96,70 +96,83 @@ and t1.charging_gun_id = #{req.gunId} </if> <if test="startTime1 != null and startTime1!=''"> - and (t1.start_time between #{startTime1} and #{startTime2} + and (t1.start_time between #{startTime1} and #{startTime2}) </if> <if test="endTime1 != null and endTime1!=''"> - and (t1.end_time between #{endTime1} and #{endTime2} + and (t1.end_time between #{endTime1} and #{endTime2}) </if> </select> <select id="payOrderQuery" resultType="com.ruoyi.order.dto.PayOrderDto"> SELECT * FROM (SELECT - id, - `code`, - 1 as type, - title, - phone, - `status`, - order_amount, - payment_amount , - create_time, - end_time, - pay_time - FROM - charging_pile_order.t_charging_order UNION ALL - SELECT - id, - `code`, - 2 as type, - title, - phone, - `status`, - order_amount, - payment_amount , - create_time, - receiving_time as end_time, - pay_time - FROM - charging_pile_order.t_shopping_order UNION ALL - SELECT - id, - `code`, - 3 as type, - title, - phone, - payment_status AS `status`, - order_amount, - payment_amount , - create_time, - create_time as end_time, - pay_time - FROM - charging_pile_order.t_vip_order UNION ALL - SELECT - id, - `code`, - 4 as type, - title, - phone, - `status`, - order_amount , - order_amount as payment_amount, - create_time, - out_parking_time as end_time, - out_parking_time as pay_time - FROM - charging_pile_service.t_parking_record ) o + id, + `code`, + 1 as type, + title, + phone, + `status`, + order_amount, + payment_amount , + create_time, + end_time, + pay_time, + refund_status, + (payment_amount-refund_amount) as final_amount, + del_flag + FROM + charging_pile_order.t_charging_order UNION ALL + SELECT + id, + `code`, + 2 as type, + title, + phone, + `status`, + order_amount, + payment_amount , + create_time, + receiving_time as end_time, + pay_time, + refund_status, + (payment_amount-refund_amount) as final_amount, + del_flag + FROM + charging_pile_order.t_shopping_order UNION ALL + SELECT + id, + `code`, + 3 as type, + title, + phone, + payment_status AS `status`, + order_amount, + payment_amount , + create_time, + create_time as end_time, + pay_time, + refund_status, + (payment_amount-refund_amount) as final_amount, + del_flag + FROM + charging_pile_order.t_vip_order UNION ALL + SELECT + id, + `code`, + 4 as type, + title, + phone, + `status`, + order_amount , + order_amount as payment_amount, + create_time, + out_parking_time as end_time, + out_parking_time as pay_time, + null as refund_status, + 0 as final_amount, + 0 as del_flag + FROM + charging_pile_service.t_parking_record ) o <where> + o.del_flag = 0 <if test="data.code != null and data.code != ''"> AND o.code LIKE CONCAT('%',#{data.code},'%') </if> @@ -169,9 +182,7 @@ <if test="data.type != null"> AND o.type = #{data.type} </if> - <if test="data.status != null"> - AND o.status = #{data.status} - </if> + <if test="data.createTime1 != null"> AND o.create_time >= #{data.createTime1} </if> @@ -179,7 +190,7 @@ AND o.create_time <= #{data.createTime2} </if> </where> - + ORDER BY o.create_time desc </select> <select id="getRefundList" resultType="com.ruoyi.order.api.model.TChargingOrderRefund"> @@ -233,4 +244,78 @@ </select> + <select id="chargingList" resultType="com.ruoyi.order.api.vo.ChargingOrderListVO"> + select t1.* from t_charging_order t1 + where 1=1 + <if test="null != req.code and req.code!=''"> + and t1.code LIKE CONCAT('%',#{req.code},'%') + </if> + <if test="null != req.carIds and req.carIds.size()>0" > + and t1.app_user_car_id in + <foreach collection="req.carIds" item="item" index="index" separator="," open="(" close=")"> + #{item} + </foreach> + </if> + <if test="null != req.userIds and req.userIds.size()>0" > + and t1.app_user_id in + <foreach collection="req.userIds" item="item" index="index" separator="," open="(" close=")"> + #{item} + </foreach> + </if> + <if test="req.orderType != null "> + and t1.order_type = #{req.orderType} + </if> + <if test="req.status != null "> + and t1.status = #{status} + </if> + <if test="req.status != null "> + and t1.status = #{req.status} + </if> + <if test="req.siteId != null "> + and t1.site_id = #{req.siteId} + </if> + <if test="startTime1 != null and startTime1!=''"> + and (t1.start_time between #{startTime1} and #{startTime2}) + </if> + <if test="endTime1 != null and endTime1!=''"> + and (t1.end_time between #{endTime1} and #{endTime2}) + </if> + </select> + <select id="chargingList1" resultType="com.ruoyi.order.api.vo.ChargingOrderListVO"> + select t1.* from t_charging_order t1 + where 1=1 + <if test="null != req.code and req.code!=''"> + and t1.code LIKE CONCAT('%',#{req.code},'%') + </if> + <if test="null != req.carIds and req.carIds.size()>0" > + and t1.app_user_car_id in + <foreach collection="req.carIds" item="item" index="index" separator="," open="(" close=")"> + #{item} + </foreach> + </if> + <if test="null != req.userIds and req.userIds.size()>0" > + and t1.app_user_id in + <foreach collection="req.userIds" item="item" index="index" separator="," open="(" close=")"> + #{item} + </foreach> + </if> + <if test="req.orderType != null "> + and t1.order_type = #{req.orderType} + </if> + <if test="req.status != null "> + and t1.status = #{status} + </if> + <if test="req.status != null "> + and t1.status = #{req.status} + </if> + <if test="req.siteId != null "> + and t1.site_id = #{req.siteId} + </if> + <if test="startTime1 != null and startTime1!=''"> + and (t1.start_time between #{startTime1} and #{startTime2}) + </if> + <if test="endTime1 != null and endTime1!=''"> + and (t1.end_time between #{endTime1} and #{endTime2}) + </if> + </select> </mapper> diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TEvaluationTagController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TEvaluationTagController.java index 191d727..6161598 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TEvaluationTagController.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TEvaluationTagController.java @@ -107,8 +107,9 @@ @ResponseBody @GetMapping("/getRandomEvaluationTag") @ApiOperation(value = "获取随机的4个评价标签", tags = {"小程序-充电记录"}) - public AjaxResult<List<TEvaluationTag>> getRandomEvaluationTag(){ - List<TEvaluationTag> list = evaluationTagService.list(new LambdaQueryWrapper<TEvaluationTag>().last(" order by RAND() limit 0, 4")); + public AjaxResult<List<TEvaluationTag>> getRandomEvaluationTag(Integer type){ + List<TEvaluationTag> list = evaluationTagService.list(new LambdaQueryWrapper<TEvaluationTag>().eq(TEvaluationTag::getType, type) + .last(" order by RAND() limit 0, 4")); return AjaxResult.success(list); } } -- Gitblit v1.7.1