luodangjia
2024-10-18 06ea0fe23faf2238d9d1141826ecb404367aecec
Merge remote-tracking branch 'origin/master'
42个文件已修改
788 ■■■■ 已修改文件
ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/TransactionRecord.java 116 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/vo/SwitchwayGateReq.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/OrderClient.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingOrder.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderListVO.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TActivityStatisticslVO.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TActivityVO.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TOrderEvaluateVO.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TransactionRecordMessageVO.java 117 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/OtherFallbackFactory.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/OtherClient.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/SignFilter.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-gateway/src/main/java/com/ruoyi/gateway/handler/GatewayExceptionHandler.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysOperlogController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TVehicleRampController.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/PartnerServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-chargingPile/src/main/resources/bootstrap.yml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/controller/CouponController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/controller/ParkingOrderController.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/server/CouponService.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/server/SwitchwayGateService.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/model/TransactionRecordMessage.java 114 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/produce/ChargingMessageListener.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java 197 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderEvaluateServiceImpl.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TShoppingOrderServiceImpl.java 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/task/TaskUtil.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/resources/bootstrap.yml 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingBillMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TOrderEvaluateMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TOrderInvoiceMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/RuoYiOrderApplicationTests.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/RegionController.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TAdvertisingController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/resources/bootstrap.yml 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-payment/src/main/resources/bootstrap.yml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/TransactionRecord.java
@@ -31,55 +31,161 @@
    private Integer stop_reason;// 停止原因
    private String physical_card_number;// 物理卡号
    private String time1;// 计费时段
    private BigDecimal sharp_peak_charge1;// 电量
    private BigDecimal loss_sharp_peak_charge1;// 计损电量
    private BigDecimal sharp_peak_amount1;// 金额
    private BigDecimal sharp_peak_charge1;// 尖电量
    private BigDecimal loss_sharp_peak_charge1;// 计损尖电量
    private BigDecimal sharp_peak_amount1;// 尖金额
    private BigDecimal flat_peak_charge1;// 平电量
    private BigDecimal loss_flat_peak_char1;// 计损平电量
    private BigDecimal flat_peak_amount1;// 平金额
    private BigDecimal peak_charge1;// 峰电量
    private BigDecimal loss_peak_charge1;// 计损峰电量
    private BigDecimal peak_amount1;// 峰金额
    private BigDecimal low_peak_charge1;// 谷电量
    private BigDecimal loss_low_peak_charge1;// 计损谷电量
    private BigDecimal low_peak_amount1;// 谷金额
    private String time2;// 计费时段
    private BigDecimal sharp_peak_charge2;// 电量
    private BigDecimal loss_sharp_peak_charge2;// 计损电量
    private BigDecimal sharp_peak_amount2;// 金额
    private BigDecimal flat_peak_charge2;// 电量
    private BigDecimal loss_flat_peak_char2;// 计损电量
    private BigDecimal flat_peak_amount2;// 金额
    private BigDecimal peak_charge2;// 电量
    private BigDecimal loss_peak_charge2;// 计损电量
    private BigDecimal peak_amount2;// 金额
    private BigDecimal low_peak_charge2;// 电量
    private BigDecimal loss_low_peak_charge2;// 计损电量
    private BigDecimal low_peak_amount2;// 金额
    private String time3;// 计费时段
    private BigDecimal sharp_peak_charge3;// 电量
    private BigDecimal loss_sharp_peak_charge3;// 计损电量
    private BigDecimal sharp_peak_amount3;// 金额
    private BigDecimal flat_peak_charge3;// 电量
    private BigDecimal loss_flat_peak_char3;// 计损电量
    private BigDecimal flat_peak_amount3;// 金额
    private BigDecimal peak_charge3;// 电量
    private BigDecimal loss_peak_charge3;// 计损电量
    private BigDecimal peak_amount3;// 金额
    private BigDecimal low_peak_charge3;// 电量
    private BigDecimal loss_low_peak_charge3;// 计损电量
    private BigDecimal low_peak_amount3;// 金额
    private String time4;// 计费时段
    private BigDecimal sharp_peak_charge4;// 电量
    private BigDecimal loss_sharp_peak_charge4;// 计损电量
    private BigDecimal sharp_peak_amount4;// 金额
    private BigDecimal flat_peak_charge4;// 电量
    private BigDecimal loss_flat_peak_char4;// 计损电量
    private BigDecimal flat_peak_amount4;// 金额
    private BigDecimal peak_charge4;// 电量
    private BigDecimal loss_peak_charge4;// 计损电量
    private BigDecimal peak_amount4;// 金额
    private BigDecimal low_peak_charge4;// 电量
    private BigDecimal loss_low_peak_charge4;// 计损电量
    private BigDecimal low_peak_amount4;// 金额
    private String time5;// 计费时段
    private BigDecimal sharp_peak_charge5;// 电量
    private BigDecimal loss_sharp_peak_charge5;// 计损电量
    private BigDecimal sharp_peak_amount5;// 金额
    private BigDecimal flat_peak_charge5;// 电量
    private BigDecimal loss_flat_peak_char5;// 计损电量
    private BigDecimal flat_peak_amount5;// 金额
    private BigDecimal peak_charge5;// 电量
    private BigDecimal loss_peak_charge5;// 计损电量
    private BigDecimal peak_amount5;// 金额
    private BigDecimal low_peak_charge5;// 电量
    private BigDecimal loss_low_peak_charge5;// 计损电量
    private BigDecimal low_peak_amount5;// 金额
    private String time6;// 计费时段
    private BigDecimal sharp_peak_charge6;// 电量
    private BigDecimal loss_sharp_peak_charge6;// 计损电量
    private BigDecimal sharp_peak_amount6;// 金额
    private BigDecimal flat_peak_charge6;// 电量
    private BigDecimal loss_flat_peak_char6;// 计损电量
    private BigDecimal flat_peak_amount6;// 金额
    private BigDecimal peak_charge6;// 电量
    private BigDecimal loss_peak_charge6;// 计损电量
    private BigDecimal peak_amount6;// 金额
    private BigDecimal low_peak_charge6;// 电量
    private BigDecimal loss_low_peak_charge6;// 计损电量
    private BigDecimal low_peak_amount6;// 金额
    private String time7;// 计费时段
    private BigDecimal sharp_peak_charge7;// 电量
    private BigDecimal loss_sharp_peak_charge7;// 计损电量
    private BigDecimal sharp_peak_amount7;// 金额
    private BigDecimal flat_peak_charge7;// 电量
    private BigDecimal loss_flat_peak_char7;// 计损电量
    private BigDecimal flat_peak_amount7;// 金额
    private BigDecimal peak_charge7;// 电量
    private BigDecimal loss_peak_charge7;// 计损电量
    private BigDecimal peak_amount7;// 金额
    private BigDecimal low_peak_charge7;// 电量
    private BigDecimal loss_low_peak_charge7;// 计损电量
    private BigDecimal low_peak_amount7;// 金额
    private String time8;// 计费时段
    private BigDecimal sharp_peak_charge8;// 电量
    private BigDecimal loss_sharp_peak_charge8;// 计损电量
    private BigDecimal sharp_peak_amount8;// 金额
    private BigDecimal flat_peak_charge8;// 电量
    private BigDecimal loss_flat_peak_char8;// 计损电量
    private BigDecimal flat_peak_amount8;// 金额
    private BigDecimal peak_charge8;// 电量
    private BigDecimal loss_peak_charge8;// 计损电量
    private BigDecimal peak_amount8;// 金额
    private BigDecimal low_peak_charge8;// 电量
    private BigDecimal loss_low_peak_charge8;// 计损电量
    private BigDecimal low_peak_amount8;// 金额
    private String time9;// 计费时段
    private BigDecimal sharp_peak_charge9;// 电量
    private BigDecimal loss_sharp_peak_charge9;// 计损电量
    private BigDecimal sharp_peak_amount9;// 金额
    private BigDecimal flat_peak_charge9;// 电量
    private BigDecimal loss_flat_peak_char9;// 计损电量
    private BigDecimal flat_peak_amount9;// 金额
    private BigDecimal peak_charge9;// 电量
    private BigDecimal loss_peak_charge9;// 计损电量
    private BigDecimal peak_amount9;// 金额
    private BigDecimal low_peak_charge9;// 电量
    private BigDecimal loss_low_peak_charge9;// 计损电量
    private BigDecimal low_peak_amount9;// 金额
    private String time10;// 计费时段
    private BigDecimal sharp_peak_charge10;// 电量
    private BigDecimal loss_sharp_peak_charge10;// 计损电量
    private BigDecimal sharp_peak_amount10;// 金额
    private BigDecimal flat_peak_charge10;// 电量
    private BigDecimal loss_flat_peak_char10;// 计损电量
    private BigDecimal flat_peak_amount10;// 金额
    private BigDecimal peak_charge10;// 电量
    private BigDecimal loss_peak_charge10;// 计损电量
    private BigDecimal peak_amount10;// 金额
    private BigDecimal low_peak_charge10;// 电量
    private BigDecimal loss_low_peak_charge10;// 计损电量
    private BigDecimal low_peak_amount10;// 金额
    private String time11;// 计费时段
    private BigDecimal sharp_peak_charge11;// 电量
    private BigDecimal loss_sharp_peak_charge11;// 计损电量
    private BigDecimal sharp_peak_amount11;// 金额
    private BigDecimal flat_peak_charge11;// 电量
    private BigDecimal loss_flat_peak_char11;// 计损电量
    private BigDecimal flat_peak_amount11;// 金额
    private BigDecimal peak_charge11;// 电量
    private BigDecimal loss_peak_charge11;// 计损电量
    private BigDecimal peak_amount11;// 金额
    private BigDecimal low_peak_charge11;// 电量
    private BigDecimal loss_low_peak_charge11;// 计损电量
    private BigDecimal low_peak_amount11;// 金额
    private String time12;// 计费时段
    private BigDecimal sharp_peak_charge12;// 电量
    private BigDecimal loss_sharp_peak_charge12;// 计损电量
    private BigDecimal sharp_peak_amount12;// 金额
    private BigDecimal flat_peak_charge12;// 电量
    private BigDecimal loss_flat_peak_char12;// 计损电量
    private BigDecimal flat_peak_amount12;// 金额
    private BigDecimal peak_charge12;// 电量
    private BigDecimal loss_peak_charge12;// 计损电量
    private BigDecimal peak_amount12;// 金额
    private BigDecimal low_peak_charge12;// 电量
    private BigDecimal loss_low_peak_charge12;// 计损电量
    private BigDecimal low_peak_amount12;// 金额
}
ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/vo/SwitchwayGateReq.java
@@ -16,4 +16,12 @@
     * 通道编号
     */
    private String channel;
    /**
     * appkey
     */
    private String appkey;
    /**
     * secretkey
     */
    private String secretkey;
}
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/OrderClient.java
@@ -56,7 +56,7 @@
     * @return
     */
    @PostMapping(value = "/t-exchange-order/activityStatistics")
    public R<TActivityVO> activityStatistics(@RequestBody TActivityStatisticsQuery dto);
    R<TActivityVO> activityStatistics(@RequestBody TActivityStatisticsQuery dto);
    @PostMapping(value = "/chargingBill/accountBillList")
    @ApiOperation(value = "列表查询", tags = {"管理后台-账户结算账单"})
    R<AccountListVO> accountBillList(@RequestBody ChargingListQuery dto);
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingOrder.java
@@ -204,7 +204,7 @@
    private LocalDateTime refundTime;
    @ApiModelProperty(value = "总电量")
    @TableField("total_electricity")
    private BigDecimal totalElectricity;// 总电量
    private BigDecimal totalElectricity;
    @ApiModelProperty(value = "支付时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderListVO.java
@@ -42,6 +42,8 @@
    private String phone;
    @ApiModelProperty(value = "充电到账金额")
    private BigDecimal paymentAmount;
    @ApiModelProperty(value = "充电后剩余金额")
    private BigDecimal residualAmount;
    @ApiModelProperty(value = "累计电费")
    private BigDecimal electrovalence;
    @ApiModelProperty(value = "累计服务费")
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TActivityStatisticslVO.java
@@ -1,5 +1,6 @@
package com.ruoyi.order.api.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.ser.Serializers;
import com.ruoyi.common.core.web.domain.BasePojo;
import com.ruoyi.order.api.model.*;
@@ -8,6 +9,7 @@
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@Data
@ApiModel(value = "管理后台活动费用统计分页列表", description = "管理后台活动费用统计分页列表")
@@ -33,16 +35,17 @@
    @ApiModelProperty(value = "实付")
    private BigDecimal paymentAmount;
    @ApiModelProperty(value = "消费时间")
    private String time;
    @ApiModelProperty(value = "消费时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private LocalDateTime time;
    @ApiModelProperty(value = "总计优惠")
    private BigDecimal total;
    @ApiModelProperty(value = "消费时间")
    @ApiModelProperty(value = "优惠券优惠")
    private BigDecimal coupon;
    @ApiModelProperty(value = "消费时间")
    @ApiModelProperty(value = "会员抵扣")
    private BigDecimal discount;
    @ApiModelProperty(value = "消费时间")
    @ApiModelProperty(value = "会员活动")
    private BigDecimal vipActivity;
    @ApiModelProperty(value = "消费时间")
    @ApiModelProperty(value = "赠送会员")
    private BigDecimal grantVip;
}
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TActivityVO.java
@@ -7,7 +7,6 @@
import lombok.Data;
import java.math.BigDecimal;
@Data
@ApiModel(value = "TOrderAppealVO对象", description = "订单申诉VO对象")
public class TActivityVO  {
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TOrderEvaluateVO.java
@@ -2,6 +2,7 @@
import com.ruoyi.order.api.model.TOrderEvaluate;
import com.ruoyi.order.api.model.TOrderEvaluateTag;
import com.ruoyi.other.api.domain.TEvaluationTag;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -22,6 +23,6 @@
    private String carName;
    @ApiModelProperty(value = "评价标签列表")
    private List<TOrderEvaluateTag> orderEvaluateTags;
    private List<TEvaluationTag> orderEvaluateTags;
}
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TransactionRecordMessageVO.java
@@ -10,7 +10,7 @@
@Data
public class TransactionRecordMessageVO {
    private String transaction_serial_number;// 交易流水号
    private String charging_pile_code;// 桩编码
    private String charging_gun_code;// 抢号
@@ -27,54 +27,161 @@
    private Integer stop_reason;// 停止原因
    private String physical_card_number;// 物理卡号
    private String time1;// 计费时段
    private BigDecimal sharp_peak_charge1;// 电量
    private BigDecimal loss_sharp_peak_charge1;// 计损电量
    private BigDecimal sharp_peak_amount1;// 金额
    private BigDecimal sharp_peak_charge1;// 尖电量
    private BigDecimal loss_sharp_peak_charge1;// 计损尖电量
    private BigDecimal sharp_peak_amount1;// 尖金额
    private BigDecimal flat_peak_charge1;// 平电量
    private BigDecimal loss_flat_peak_char1;// 计损平电量
    private BigDecimal flat_peak_amount1;// 平金额
    private BigDecimal peak_charge1;// 峰电量
    private BigDecimal loss_peak_charge1;// 计损峰电量
    private BigDecimal peak_amount1;// 峰金额
    private BigDecimal low_peak_charge1;// 谷电量
    private BigDecimal loss_low_peak_charge1;// 计损谷电量
    private BigDecimal low_peak_amount1;// 谷金额
    private String time2;// 计费时段
    private BigDecimal sharp_peak_charge2;// 电量
    private BigDecimal loss_sharp_peak_charge2;// 计损电量
    private BigDecimal sharp_peak_amount2;// 金额
    private BigDecimal flat_peak_charge2;// 电量
    private BigDecimal loss_flat_peak_char2;// 计损电量
    private BigDecimal flat_peak_amount2;// 金额
    private BigDecimal peak_charge2;// 电量
    private BigDecimal loss_peak_charge2;// 计损电量
    private BigDecimal peak_amount2;// 金额
    private BigDecimal low_peak_charge2;// 电量
    private BigDecimal loss_low_peak_charge2;// 计损电量
    private BigDecimal low_peak_amount2;// 金额
    private String time3;// 计费时段
    private BigDecimal sharp_peak_charge3;// 电量
    private BigDecimal loss_sharp_peak_charge3;// 计损电量
    private BigDecimal sharp_peak_amount3;// 金额
    private BigDecimal flat_peak_charge3;// 电量
    private BigDecimal loss_flat_peak_char3;// 计损电量
    private BigDecimal flat_peak_amount3;// 金额
    private BigDecimal peak_charge3;// 电量
    private BigDecimal loss_peak_charge3;// 计损电量
    private BigDecimal peak_amount3;// 金额
    private BigDecimal low_peak_charge3;// 电量
    private BigDecimal loss_low_peak_charge3;// 计损电量
    private BigDecimal low_peak_amount3;// 金额
    private String time4;// 计费时段
    private BigDecimal sharp_peak_charge4;// 电量
    private BigDecimal loss_sharp_peak_charge4;// 计损电量
    private BigDecimal sharp_peak_amount4;// 金额
    private BigDecimal flat_peak_charge4;// 电量
    private BigDecimal loss_flat_peak_char4;// 计损电量
    private BigDecimal flat_peak_amount4;// 金额
    private BigDecimal peak_charge4;// 电量
    private BigDecimal loss_peak_charge4;// 计损电量
    private BigDecimal peak_amount4;// 金额
    private BigDecimal low_peak_charge4;// 电量
    private BigDecimal loss_low_peak_charge4;// 计损电量
    private BigDecimal low_peak_amount4;// 金额
    private String time5;// 计费时段
    private BigDecimal sharp_peak_charge5;// 电量
    private BigDecimal loss_sharp_peak_charge5;// 计损电量
    private BigDecimal sharp_peak_amount5;// 金额
    private BigDecimal flat_peak_charge5;// 电量
    private BigDecimal loss_flat_peak_char5;// 计损电量
    private BigDecimal flat_peak_amount5;// 金额
    private BigDecimal peak_charge5;// 电量
    private BigDecimal loss_peak_charge5;// 计损电量
    private BigDecimal peak_amount5;// 金额
    private BigDecimal low_peak_charge5;// 电量
    private BigDecimal loss_low_peak_charge5;// 计损电量
    private BigDecimal low_peak_amount5;// 金额
    private String time6;// 计费时段
    private BigDecimal sharp_peak_charge6;// 电量
    private BigDecimal loss_sharp_peak_charge6;// 计损电量
    private BigDecimal sharp_peak_amount6;// 金额
    private BigDecimal flat_peak_charge6;// 电量
    private BigDecimal loss_flat_peak_char6;// 计损电量
    private BigDecimal flat_peak_amount6;// 金额
    private BigDecimal peak_charge6;// 电量
    private BigDecimal loss_peak_charge6;// 计损电量
    private BigDecimal peak_amount6;// 金额
    private BigDecimal low_peak_charge6;// 电量
    private BigDecimal loss_low_peak_charge6;// 计损电量
    private BigDecimal low_peak_amount6;// 金额
    private String time7;// 计费时段
    private BigDecimal sharp_peak_charge7;// 电量
    private BigDecimal loss_sharp_peak_charge7;// 计损电量
    private BigDecimal sharp_peak_amount7;// 金额
    private BigDecimal flat_peak_charge7;// 电量
    private BigDecimal loss_flat_peak_char7;// 计损电量
    private BigDecimal flat_peak_amount7;// 金额
    private BigDecimal peak_charge7;// 电量
    private BigDecimal loss_peak_charge7;// 计损电量
    private BigDecimal peak_amount7;// 金额
    private BigDecimal low_peak_charge7;// 电量
    private BigDecimal loss_low_peak_charge7;// 计损电量
    private BigDecimal low_peak_amount7;// 金额
    private String time8;// 计费时段
    private BigDecimal sharp_peak_charge8;// 电量
    private BigDecimal loss_sharp_peak_charge8;// 计损电量
    private BigDecimal sharp_peak_amount8;// 金额
    private BigDecimal flat_peak_charge8;// 电量
    private BigDecimal loss_flat_peak_char8;// 计损电量
    private BigDecimal flat_peak_amount8;// 金额
    private BigDecimal peak_charge8;// 电量
    private BigDecimal loss_peak_charge8;// 计损电量
    private BigDecimal peak_amount8;// 金额
    private BigDecimal low_peak_charge8;// 电量
    private BigDecimal loss_low_peak_charge8;// 计损电量
    private BigDecimal low_peak_amount8;// 金额
    private String time9;// 计费时段
    private BigDecimal sharp_peak_charge9;// 电量
    private BigDecimal loss_sharp_peak_charge9;// 计损电量
    private BigDecimal sharp_peak_amount9;// 金额
    private BigDecimal flat_peak_charge9;// 电量
    private BigDecimal loss_flat_peak_char9;// 计损电量
    private BigDecimal flat_peak_amount9;// 金额
    private BigDecimal peak_charge9;// 电量
    private BigDecimal loss_peak_charge9;// 计损电量
    private BigDecimal peak_amount9;// 金额
    private BigDecimal low_peak_charge9;// 电量
    private BigDecimal loss_low_peak_charge9;// 计损电量
    private BigDecimal low_peak_amount9;// 金额
    private String time10;// 计费时段
    private BigDecimal sharp_peak_charge10;// 电量
    private BigDecimal loss_sharp_peak_charge10;// 计损电量
    private BigDecimal sharp_peak_amount10;// 金额
    private BigDecimal flat_peak_charge10;// 电量
    private BigDecimal loss_flat_peak_char10;// 计损电量
    private BigDecimal flat_peak_amount10;// 金额
    private BigDecimal peak_charge10;// 电量
    private BigDecimal loss_peak_charge10;// 计损电量
    private BigDecimal peak_amount10;// 金额
    private BigDecimal low_peak_charge10;// 电量
    private BigDecimal loss_low_peak_charge10;// 计损电量
    private BigDecimal low_peak_amount10;// 金额
    private String time11;// 计费时段
    private BigDecimal sharp_peak_charge11;// 电量
    private BigDecimal loss_sharp_peak_charge11;// 计损电量
    private BigDecimal sharp_peak_amount11;// 金额
    private BigDecimal flat_peak_charge11;// 电量
    private BigDecimal loss_flat_peak_char11;// 计损电量
    private BigDecimal flat_peak_amount11;// 金额
    private BigDecimal peak_charge11;// 电量
    private BigDecimal loss_peak_charge11;// 计损电量
    private BigDecimal peak_amount11;// 金额
    private BigDecimal low_peak_charge11;// 电量
    private BigDecimal loss_low_peak_charge11;// 计损电量
    private BigDecimal low_peak_amount11;// 金额
    private String time12;// 计费时段
    private BigDecimal sharp_peak_charge12;// 电量
    private BigDecimal loss_sharp_peak_charge12;// 计损电量
    private BigDecimal sharp_peak_amount12;// 金额
    private BigDecimal flat_peak_charge12;// 电量
    private BigDecimal loss_flat_peak_char12;// 计损电量
    private BigDecimal flat_peak_amount12;// 金额
    private BigDecimal peak_charge12;// 电量
    private BigDecimal loss_peak_charge12;// 计损电量
    private BigDecimal peak_amount12;// 金额
    private BigDecimal low_peak_charge12;// 电量
    private BigDecimal loss_low_peak_charge12;// 计损电量
    private BigDecimal low_peak_amount12;// 金额
}
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/OtherFallbackFactory.java
@@ -2,10 +2,7 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.other.api.domain.TCompany;
import com.ruoyi.other.api.domain.TCoupon;
import com.ruoyi.other.api.domain.TEnterpriseUserApplication;
import com.ruoyi.other.api.domain.TUserTag;
import com.ruoyi.other.api.domain.*;
import com.ruoyi.other.api.dto.TagListQueryDto;
import com.ruoyi.other.api.dto.UnitListQueryDto;
import com.ruoyi.other.api.feignClient.OtherClient;
@@ -102,6 +99,11 @@
            public R<List<TEnterpriseUserApplication>> getTnterPrise() {
                return R.fail("查询:"+throwable.getMessage());
            }
            @Override
            public R<Region> getRegionBuyCode(String code) {
                return R.fail("远程调用根据code查询名称失败:"+throwable.getMessage());
            }
        };
    }
}
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/OtherClient.java
@@ -72,4 +72,6 @@
    @PutMapping(value = "/t-enterprise-user-application/export")
    R<List<TEnterpriseUserApplication>> getTnterPrise();
    @GetMapping("/region/getRegionBuyCode/{code}")
    R<Region> getRegionBuyCode(@PathVariable("code") String code);
}
ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/SignFilter.java
@@ -160,7 +160,10 @@
                sb.append(k + "=" + v + "&");
            }
        }
        String signUrl = sb.substring(0, sb.length() - 1);
        String signUrl = "";
        if(sb.length() != 0){
            signUrl = sb.substring(0, sb.length() - 1);
        }
        System.err.println("签名串:" + signUrl);
        return signUrlEncode(signUrl, key);
    }
ruoyi-gateway/src/main/java/com/ruoyi/gateway/handler/GatewayExceptionHandler.java
@@ -42,7 +42,7 @@
        }
        
        log.error("[网关异常处理]请求路径:{},异常信息:{}", exchange.getRequest().getPath(), ex.getMessage());
//        ex.printStackTrace();
        return ServletUtils.webFluxResponseWriter(response, msg);
    }
}
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysOperlogController.java
@@ -55,7 +55,7 @@
        if(null != query.getStartTime() && null != query.getEndTime()){
            wrapper.between(SysOperLog::getOperTime, query.getStartTime(), query.getEndTime());
        }
        PageInfo<SysOperLog> page = operLogService.page(pageInfo, wrapper);
        PageInfo<SysOperLog> page = operLogService.page(pageInfo, wrapper.orderByDesc(SysOperLog::getOperTime));
        return AjaxResult.success(page);
    }
    
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java
@@ -124,7 +124,7 @@
        {
            if (StringUtils.isNotEmpty(perm))
            {
                permsSet.addAll(Arrays.asList(perm.trim().split(",")));
                permsSet.add(perm);
            }
        }
        return permsSet;
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
@@ -537,11 +537,11 @@
                data1.addAll(data);
            }
            Set<Integer> siteIds = new HashSet<>(data1);
            sysUser.setSiteIds(siteIds.stream().collect(Collectors.toList()));
            List<Site> data = siteClient.getSiteByIds(siteIds.stream().collect(Collectors.toList())).getData();
            if (null != data) {
                List<String> siteNames = data.stream().map(Site::getName).collect(Collectors.toList());
                sysUser.setSiteNames(siteNames);
                sysUser.setSiteIds(data.stream().map(Site::getId).collect(Collectors.toList()));
            }
            List<String> roleNames = new ArrayList<>();
            for (SysUserRole sysUserRole : list1) {
ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml
@@ -21,16 +21,15 @@
    nacos:
      discovery:
        # 服务注册地址
        server-addr: 127.0.0.1:8848
        server-addr: 192.168.110.169:8848
        service: ${spring.application.name}
        group: DEFAULT_GROUP
        namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb
        ip: 192.168.110.111
      username: nacos
      password: nacos
        username: nacos
        password: nacos
      config:
        # 配置中心地址
        server-addr: 127.0.0.1:8848
        server-addr: 192.168.110.169:8848
        namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb
        group: DEFAULT_GROUP
        username: nacos
ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml
@@ -112,7 +112,7 @@
    </select>
    
    <select id="selectMenuPermsByRoleId" parameterType="Long" resultType="String">
        select distinct m.perms
        select distinct m.path
        from sys_menu m
             left join sys_role_menu rm on m.menu_id = rm.menu_id
        where m.status = '0' and rm.role_id = #{roleId}
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java
@@ -112,6 +112,7 @@
    @Resource
    private IntegralRuleClient integralRuleClient;
    @Resource
    private VipClient vipClient;
    @Resource
@@ -363,6 +364,14 @@
        R<Map<Integer, String>> vipMap = otherClient.getVipMap(vipIds);
        //循环处理
        for (TAppUser appUser : page.getRecords()) {
            if (appUser.getProvinceCode()!=null){
                Region data = otherClient.getRegionBuyCode(appUser.getProvinceCode()).getData();
                appUser.setProvince(data.getName());
            }
            if(appUser.getCityCode()!=null){
                Region data = otherClient.getRegionBuyCode(appUser.getCityCode()).getData();
                appUser.setProvince(data.getName());
            }
            //拿到最新的tagId
            TAppUserTag one = appUserTagService.lambdaQuery().eq(TAppUserTag::getAppUserId, appUser.getId()).orderByDesc(TAppUserTag::getCreateTime).last("limit 1").one();
            //设置最新的tagName
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TVehicleRampController.java
@@ -1,7 +1,9 @@
package com.ruoyi.chargingPile.controller;
import com.ruoyi.chargingPile.api.model.TParkingLot;
import com.ruoyi.chargingPile.api.model.TVehicleRamp;
import com.ruoyi.chargingPile.service.TParkingLotService;
import com.ruoyi.chargingPile.service.TVehicleRampService;
import com.ruoyi.common.core.utils.CodeGenerateUtils;
import com.ruoyi.common.core.web.domain.AjaxResult;
@@ -37,6 +39,9 @@
    
    @Resource
    private SwitchwayGateClient switchwayGateClient;
    @Resource
    private TParkingLotService parkingLotService;
    
    
    
@@ -105,9 +110,13 @@
    @ApiOperation(tags = {"后台-车道"},value = "开关闸车道")
    @PostMapping(value = "/openOrDown")
    public AjaxResult<String> openOrDown(@RequestBody TVehicleRamp dto) {
        TVehicleRamp vehicleRamp = vehicleRampService.getById(dto.getId());
        TParkingLot parkingLot = parkingLotService.getById(vehicleRamp.getParkingLotId());
        SwitchwayGateReq req = new SwitchwayGateReq();
        req.setAction(dto.getAction());
        req.setChannel(dto.getCarportNum());
        req.setAction(vehicleRamp.getAction());
        req.setChannel(vehicleRamp.getCarportNum());
        req.setAppkey(parkingLot.getAppKey());
        req.setSecretkey(parkingLot.getSecretKey());
        Boolean data = switchwayGateClient.gateService(req).getData();
        return data ? AjaxResult.success() : AjaxResult.error("操作失败");
    }
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/PartnerServiceImpl.java
@@ -146,12 +146,12 @@
        user.setRoleId(partner.getRoleId().longValue());
        user.setRoleType(2);
        user.setObjectId(partner.getId());
        //添加新数据
        this.save(partner);
        R r = sysUserClient.addSysUser(user);
        if(200 != r.getCode()){
            throw new RuntimeException(r.getMsg());
        }
        //添加新数据
        this.save(partner);
        return AjaxResult.success();
    }
    
ruoyi-service/ruoyi-chargingPile/src/main/resources/bootstrap.yml
@@ -22,7 +22,7 @@
    nacos:
      discovery:
        # 服务注册地址
        server-addr: 127.0.0.1:8848
        server-addr: 192.168.110.169:8848
        service: ${spring.application.name}
        group: DEFAULT_GROUP
        namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb
@@ -30,7 +30,7 @@
        password: nacos
      config:
        # 配置中心地址
        server-addr: 127.0.0.1:8848
        server-addr: 192.168.110.169:8848
        namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb
        group: DEFAULT_GROUP
        name: ${spring.application.name}
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/controller/CouponController.java
@@ -34,7 +34,7 @@
    @ResponseBody
    @PostMapping("/getCoupon")
    public BaseResponse<GetCouponResp> getCoupon(@RequestBody GetCouponReq req){
        log.info("停车获取优惠券请求参数:{}" + JSON.toJSONString(req));
        log.warn("停车获取优惠券请求参数:{}" + JSON.toJSONString(req));
        GetCouponResp coupon = couponService.getCoupon(req);
        return BaseResponse.ok(coupon);
    }
@@ -48,7 +48,7 @@
    @ResponseBody
    @PostMapping("/usedCoupon")
    public BaseResponse usedCoupon(@RequestBody UsedCoupon req){
        log.info("停车使用优惠券请求参数:{}" + JSON.toJSONString(req));
        log.warn("停车使用优惠券请求参数:{}" + JSON.toJSONString(req));
        couponService.usedCoupon(req);
        return BaseResponse.ok();
    }
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/controller/ParkingOrderController.java
@@ -28,7 +28,7 @@
    @ResponseBody
    @PostMapping("/cloudParkingInOrder")
    public BaseResponse cloudParkingInOrder(@RequestBody CloudParkingOrder order){
        log.info("云停车入场请求参数:{}" + JSON.toJSONString(order));
        log.warn("云停车入场请求参数:{}" + JSON.toJSONString(order));
        parkingOrderService.cloudParkingInOrder(order);
        return BaseResponse.ok();
    }
@@ -41,7 +41,7 @@
    @ResponseBody
    @PostMapping("/cloudParkingOutOrder")
    public BaseResponse cloudParkingOutOrder(@RequestBody CloudParkingOrder order){
        log.info("云停车出场请求参数:{}" + JSON.toJSONString(order));
        log.warn("云停车出场请求参数:{}" + JSON.toJSONString(order));
        parkingOrderService.cloudParkingOutOrder(order);
        return BaseResponse.ok();
    }
@@ -54,7 +54,7 @@
    @ResponseBody
    @PostMapping("/cloudParkingSpace")
    public BaseResponse cloudParkingSpace(@RequestBody CloudParkingSpace parkingSpace){
        log.info("云停车实时车位请求参数:{}" + JSON.toJSONString(parkingSpace));
        log.warn("云停车实时车位请求参数:{}" + JSON.toJSONString(parkingSpace));
        parkingOrderService.cloudParkingSpace(parkingSpace);
        return BaseResponse.ok();
    }
@@ -68,7 +68,7 @@
    @ResponseBody
    @PostMapping("/offlineParkingInOrder")
    public BaseResponse offlineParkingInOrder(@RequestBody OfflineParkingOrder order){
        log.info("线下停车场入场请求参数:{}" + JSON.toJSONString(order));
        log.warn("线下停车场入场请求参数:{}" + JSON.toJSONString(order));
        parkingOrderService.offlineParkingInOrder(order);
        OfflineParkingResponse offlineParkingResponse = new OfflineParkingResponse();
        offlineParkingResponse.setCode(0);
@@ -85,7 +85,7 @@
    @ResponseBody
    @PostMapping("/offlineParkingOutOrder")
    public BaseResponse offlineParkingOutOrder(@RequestBody OfflineParkingOrder order){
        log.info("线下停车场出场请求参数:{}" + JSON.toJSONString(order));
        log.warn("线下停车场出场请求参数:{}" + JSON.toJSONString(order));
        parkingOrderService.offlineParkingOutOrder(order);
        OfflineParkingResponse offlineParkingResponse = new OfflineParkingResponse();
        offlineParkingResponse.setCode(0);
@@ -102,7 +102,7 @@
    @ResponseBody
    @PostMapping("/offlineParkingSpace")
    public BaseResponse offlineParkingSpace(@RequestBody OfflineParkingSpace parkingSpace){
        log.info("线下停车场实时车位请求参数:{}" + JSON.toJSONString(parkingSpace));
        log.warn("线下停车场实时车位请求参数:{}" + JSON.toJSONString(parkingSpace));
        parkingOrderService.offlineParkingSpace(parkingSpace);
        return BaseResponse.ok();
    }
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/server/CouponService.java
@@ -70,9 +70,8 @@
        GetCouponResp resp = new GetCouponResp();
        resp.setRecordId(data.getId());
        resp.setCarNumber(carNumber);
        // todo 需要第三方提供数据
        resp.setSysOrgId("");
        resp.setPosName("");
        resp.setSysOrgId("MXCD7QjHapTJGZ8TZZz3");
        resp.setPosName("明星电力");
        resp.setLssuer("admin");
        resp.setType(4);
        Parameter parameter = new Parameter();
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/server/SwitchwayGateService.java
@@ -18,10 +18,6 @@
    private final String url = "http://8.137.103.127/universal";
    
    private final String appkey = "886621e841fc44c1ad63a823d";
    private final String secretkey = "7d87c2c36bea4749b30f38f4d";
    
    /**
     * 开关道闸
@@ -30,17 +26,17 @@
     */
    public Boolean gateService(SwitchwayGateReq req){
        SwitchwayGate switchwayGate = new SwitchwayGate()
                .setAppkey(appkey)
                .setAppkey(req.getAppkey())
                .setAction(req.getAction())
                .setChannel(req.getChannel())
                .setTimestamp(System.currentTimeMillis() + "")
                .build(secretkey);
                .build(req.getSecretkey());
        String body = JSON.toJSONString(switchwayGate);
        String result = HttpUtil.post(url + "/gateService", body);
        JSONObject jsonObject = JSON.parseObject(result);
        Boolean success = jsonObject.getBoolean("success");
        if(!success){
            log.error("调用开关道闸失败:\n请求参数:{}\n返回结果:{}", body, result);
            log.warn("调用开关道闸失败:\n请求参数:{}\n返回结果:{}", body, result);
        }
        return success;
    }
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/model/TransactionRecordMessage.java
@@ -30,53 +30,161 @@
    private Integer stop_reason;// 停止原因
    private String physical_card_number;// 物理卡号
    private String time1;// 计费时段
    private BigDecimal sharp_peak_charge1;// 电量
    private BigDecimal loss_sharp_peak_charge1;// 计损电量
    private BigDecimal sharp_peak_amount1;// 金额
    private BigDecimal sharp_peak_charge1;// 尖电量
    private BigDecimal loss_sharp_peak_charge1;// 计损尖电量
    private BigDecimal sharp_peak_amount1;// 尖金额
    private BigDecimal flat_peak_charge1;// 平电量
    private BigDecimal loss_flat_peak_char1;// 计损平电量
    private BigDecimal flat_peak_amount1;// 平金额
    private BigDecimal peak_charge1;// 峰电量
    private BigDecimal loss_peak_charge1;// 计损峰电量
    private BigDecimal peak_amount1;// 峰金额
    private BigDecimal low_peak_charge1;// 谷电量
    private BigDecimal loss_low_peak_charge1;// 计损谷电量
    private BigDecimal low_peak_amount1;// 谷金额
    private String time2;// 计费时段
    private BigDecimal sharp_peak_charge2;// 电量
    private BigDecimal loss_sharp_peak_charge2;// 计损电量
    private BigDecimal sharp_peak_amount2;// 金额
    private BigDecimal flat_peak_charge2;// 电量
    private BigDecimal loss_flat_peak_char2;// 计损电量
    private BigDecimal flat_peak_amount2;// 金额
    private BigDecimal peak_charge2;// 电量
    private BigDecimal loss_peak_charge2;// 计损电量
    private BigDecimal peak_amount2;// 金额
    private BigDecimal low_peak_charge2;// 电量
    private BigDecimal loss_low_peak_charge2;// 计损电量
    private BigDecimal low_peak_amount2;// 金额
    private String time3;// 计费时段
    private BigDecimal sharp_peak_charge3;// 电量
    private BigDecimal loss_sharp_peak_charge3;// 计损电量
    private BigDecimal sharp_peak_amount3;// 金额
    private BigDecimal flat_peak_charge3;// 电量
    private BigDecimal loss_flat_peak_char3;// 计损电量
    private BigDecimal flat_peak_amount3;// 金额
    private BigDecimal peak_charge3;// 电量
    private BigDecimal loss_peak_charge3;// 计损电量
    private BigDecimal peak_amount3;// 金额
    private BigDecimal low_peak_charge3;// 电量
    private BigDecimal loss_low_peak_charge3;// 计损电量
    private BigDecimal low_peak_amount3;// 金额
    private String time4;// 计费时段
    private BigDecimal sharp_peak_charge4;// 电量
    private BigDecimal loss_sharp_peak_charge4;// 计损电量
    private BigDecimal sharp_peak_amount4;// 金额
    private BigDecimal flat_peak_charge4;// 电量
    private BigDecimal loss_flat_peak_char4;// 计损电量
    private BigDecimal flat_peak_amount4;// 金额
    private BigDecimal peak_charge4;// 电量
    private BigDecimal loss_peak_charge4;// 计损电量
    private BigDecimal peak_amount4;// 金额
    private BigDecimal low_peak_charge4;// 电量
    private BigDecimal loss_low_peak_charge4;// 计损电量
    private BigDecimal low_peak_amount4;// 金额
    private String time5;// 计费时段
    private BigDecimal sharp_peak_charge5;// 电量
    private BigDecimal loss_sharp_peak_charge5;// 计损电量
    private BigDecimal sharp_peak_amount5;// 金额
    private BigDecimal flat_peak_charge5;// 电量
    private BigDecimal loss_flat_peak_char5;// 计损电量
    private BigDecimal flat_peak_amount5;// 金额
    private BigDecimal peak_charge5;// 电量
    private BigDecimal loss_peak_charge5;// 计损电量
    private BigDecimal peak_amount5;// 金额
    private BigDecimal low_peak_charge5;// 电量
    private BigDecimal loss_low_peak_charge5;// 计损电量
    private BigDecimal low_peak_amount5;// 金额
    private String time6;// 计费时段
    private BigDecimal sharp_peak_charge6;// 电量
    private BigDecimal loss_sharp_peak_charge6;// 计损电量
    private BigDecimal sharp_peak_amount6;// 金额
    private BigDecimal flat_peak_charge6;// 电量
    private BigDecimal loss_flat_peak_char6;// 计损电量
    private BigDecimal flat_peak_amount6;// 金额
    private BigDecimal peak_charge6;// 电量
    private BigDecimal loss_peak_charge6;// 计损电量
    private BigDecimal peak_amount6;// 金额
    private BigDecimal low_peak_charge6;// 电量
    private BigDecimal loss_low_peak_charge6;// 计损电量
    private BigDecimal low_peak_amount6;// 金额
    private String time7;// 计费时段
    private BigDecimal sharp_peak_charge7;// 电量
    private BigDecimal loss_sharp_peak_charge7;// 计损电量
    private BigDecimal sharp_peak_amount7;// 金额
    private BigDecimal flat_peak_charge7;// 电量
    private BigDecimal loss_flat_peak_char7;// 计损电量
    private BigDecimal flat_peak_amount7;// 金额
    private BigDecimal peak_charge7;// 电量
    private BigDecimal loss_peak_charge7;// 计损电量
    private BigDecimal peak_amount7;// 金额
    private BigDecimal low_peak_charge7;// 电量
    private BigDecimal loss_low_peak_charge7;// 计损电量
    private BigDecimal low_peak_amount7;// 金额
    private String time8;// 计费时段
    private BigDecimal sharp_peak_charge8;// 电量
    private BigDecimal loss_sharp_peak_charge8;// 计损电量
    private BigDecimal sharp_peak_amount8;// 金额
    private BigDecimal flat_peak_charge8;// 电量
    private BigDecimal loss_flat_peak_char8;// 计损电量
    private BigDecimal flat_peak_amount8;// 金额
    private BigDecimal peak_charge8;// 电量
    private BigDecimal loss_peak_charge8;// 计损电量
    private BigDecimal peak_amount8;// 金额
    private BigDecimal low_peak_charge8;// 电量
    private BigDecimal loss_low_peak_charge8;// 计损电量
    private BigDecimal low_peak_amount8;// 金额
    private String time9;// 计费时段
    private BigDecimal sharp_peak_charge9;// 电量
    private BigDecimal loss_sharp_peak_charge9;// 计损电量
    private BigDecimal sharp_peak_amount9;// 金额
    private BigDecimal flat_peak_charge9;// 电量
    private BigDecimal loss_flat_peak_char9;// 计损电量
    private BigDecimal flat_peak_amount9;// 金额
    private BigDecimal peak_charge9;// 电量
    private BigDecimal loss_peak_charge9;// 计损电量
    private BigDecimal peak_amount9;// 金额
    private BigDecimal low_peak_charge9;// 电量
    private BigDecimal loss_low_peak_charge9;// 计损电量
    private BigDecimal low_peak_amount9;// 金额
    private String time10;// 计费时段
    private BigDecimal sharp_peak_charge10;// 电量
    private BigDecimal loss_sharp_peak_charge10;// 计损电量
    private BigDecimal sharp_peak_amount10;// 金额
    private BigDecimal flat_peak_charge10;// 电量
    private BigDecimal loss_flat_peak_char10;// 计损电量
    private BigDecimal flat_peak_amount10;// 金额
    private BigDecimal peak_charge10;// 电量
    private BigDecimal loss_peak_charge10;// 计损电量
    private BigDecimal peak_amount10;// 金额
    private BigDecimal low_peak_charge10;// 电量
    private BigDecimal loss_low_peak_charge10;// 计损电量
    private BigDecimal low_peak_amount10;// 金额
    private String time11;// 计费时段
    private BigDecimal sharp_peak_charge11;// 电量
    private BigDecimal loss_sharp_peak_charge11;// 计损电量
    private BigDecimal sharp_peak_amount11;// 金额
    private BigDecimal flat_peak_charge11;// 电量
    private BigDecimal loss_flat_peak_char11;// 计损电量
    private BigDecimal flat_peak_amount11;// 金额
    private BigDecimal peak_charge11;// 电量
    private BigDecimal loss_peak_charge11;// 计损电量
    private BigDecimal peak_amount11;// 金额
    private BigDecimal low_peak_charge11;// 电量
    private BigDecimal loss_low_peak_charge11;// 计损电量
    private BigDecimal low_peak_amount11;// 金额
    private String time12;// 计费时段
    private BigDecimal sharp_peak_charge12;// 电量
    private BigDecimal loss_sharp_peak_charge12;// 计损电量
    private BigDecimal sharp_peak_amount12;// 金额
    private BigDecimal flat_peak_charge12;// 电量
    private BigDecimal loss_flat_peak_char12;// 计损电量
    private BigDecimal flat_peak_amount12;// 金额
    private BigDecimal peak_charge12;// 电量
    private BigDecimal loss_peak_charge12;// 计损电量
    private BigDecimal peak_amount12;// 金额
    private BigDecimal low_peak_charge12;// 电量
    private BigDecimal loss_low_peak_charge12;// 计损电量
    private BigDecimal low_peak_amount12;// 金额
}
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/produce/ChargingMessageListener.java
@@ -211,6 +211,11 @@
                        uploadRealTimeMonitoringData.setPeriod_charging_degree(uploadRealTimeMonitoringDataMessage.getCharging_degree());
                        uploadRealTimeMonitoringData.setPeriod_service_price(uploadRealTimeMonitoringDataMessage.getCharging_degree().multiply(accountingStrategyDetail.getServiceCharge()).setScale(4, RoundingMode.HALF_UP));
                    }
                    uploadRealTimeMonitoringData.setOrderType(chargingOrder.getOrderType());
                    uploadRealTimeMonitoringData.setSiteId(chargingOrder.getSiteId());
                    uploadRealTimeMonitoringData.setStatus(chargingOrder.getStatus());
                    uploadRealTimeMonitoringData.setStartTime(chargingOrder.getStartTime());
                    uploadRealTimeMonitoringData.setEndTime(chargingOrder.getEndTime());
                    int i = uploadRealTimeMonitoringDataService.create(uploadRealTimeMonitoringData);
                    if(i == 0){
                        log.error("数据存储mongo失败");
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -70,9 +70,7 @@
import java.math.MathContext;
import java.math.RoundingMode;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.time.*;
import java.time.format.DateTimeFormatter;
import java.time.format.TextStyle;
import java.time.temporal.WeekFields;
@@ -207,6 +205,7 @@
        Map<String, Object> map = new HashMap<>();
        int size = this.baseMapper.getMyChargingOrderList(appUserId, 1, null, null).size();
        map.put("number", size);
        query.setPageCurr((query.getPageCurr() - 1) * query.getPageSize());
        List<TChargingOrder> list = this.baseMapper.getMyChargingOrderList(appUserId, query.getType(), query.getPageCurr(), query.getPageSize());
        List<MyChargingOrderList> orderLists = new ArrayList<>();
        for (TChargingOrder tChargingOrder : list) {
@@ -260,8 +259,8 @@
        }else{
            myChargingOrderInfo.setLicensePlate("无");
        }
        myChargingOrderInfo.setStartTime(chargingOrder.getStartTime().toInstant(ZoneOffset.of("+8")).toEpochMilli());
        myChargingOrderInfo.setEndTime(chargingOrder.getEndTime().toInstant(ZoneOffset.of("+8")).toEpochMilli());
        myChargingOrderInfo.setStartTime(chargingOrder.getStartTime().atZone(ZoneId.systemDefault()).toInstant().getEpochSecond() * 1000);
        myChargingOrderInfo.setEndTime(chargingOrder.getEndTime().atZone(ZoneId.systemDefault()).toInstant().getEpochSecond() * 1000);
        myChargingOrderInfo.setOrderAmount(chargingOrder.getOrderAmount());
        myChargingOrderInfo.setPaymentAmount(chargingOrder.getPaymentAmount());
        myChargingOrderInfo.setRechargeAmount(chargingOrder.getRechargeAmount());
@@ -293,7 +292,7 @@
            myChargingOrderInfo.setCurrentAndVoltage(currentAndVoltage);
            //在MongoDB中获取数据
            List<Integer> soc = dataList.stream().map(UploadRealTimeMonitoringData::getSoc).collect(Collectors.toList());
            List<BigDecimal> po = dataList.stream().map(s -> s.getOutput_current().multiply(s.getOutput_voltage()).divide(new BigDecimal(1000))).collect(Collectors.toList());
            List<BigDecimal> po = dataList.stream().map(s -> s.getOutput_current().multiply(s.getOutput_voltage()).divide(new BigDecimal(1000),2, RoundingMode.HALF_DOWN)).collect(Collectors.toList());
            List<Map<String, Object>> power = new ArrayList<>();
            for (int i = 0; i < time.size(); i++) {
                Map<String, Object> map = new HashMap<>();
@@ -306,7 +305,7 @@
            }
            myChargingOrderInfo.setPower(power);
        }
        myChargingOrderInfo.setActionable(myChargingOrderInfo.getEndTime() + 604800000L > System.currentTimeMillis() ? 0 : 1);
        myChargingOrderInfo.setActionable(myChargingOrderInfo.getEndTime() + 604800000L < System.currentTimeMillis() ? 0 : 1);
        return myChargingOrderInfo;
    }
    
@@ -991,7 +990,12 @@
                GetPlatformStopChargingReply query = new GetPlatformStopChargingReply();
                query.setCharging_gun_code(chargingGun.getCode());
                query.setCharging_pile_code(chargingPile.getCode());
                query.setEnd_time(chargingOrder.getEndTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
                //将时间转换成UTC时间后查询数据(mongodb存储时间以UTC格式存储)
                ZoneId zoneId = ZoneId.systemDefault();
                ZonedDateTime zonedDateTime = ZonedDateTime.of(chargingOrder.getEndTime(), zoneId);
                ZonedDateTime endTime = zonedDateTime.withZoneSameInstant(ZoneId.of("UTC"));
                query.setEnd_time(endTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
                PlatformStopChargingReply reply = platformStopChargingReplyClient.getPlatformStopChargingReply(query).getData();
                log.error(code1 + ":-------------------查询远程停止充电应答-------------------");
                if(null == reply){
@@ -1406,6 +1410,7 @@
        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) {
            chargingOrderListVO.setPaymentAmount(chargingOrderListVO.getResidualAmount()==null?chargingOrderListVO.getPaymentAmount():chargingOrderListVO.getPaymentAmount().subtract(chargingOrderListVO.getResidualAmount()));
            chargingOrderListVO.setUid(chargingOrderListVO.getId()+"");
            List<Integer> integers = new ArrayList<>();
            integers.add(chargingOrderListVO.getSiteId());
@@ -1449,7 +1454,7 @@
                            if (data4!=null && !data4.isEmpty()) chargingOrderListVO.setLicensePlate(data4.get(0).getLicensePlate());
                        }
                    }
                    if (data3 != null) chargingOrderListVO.setPhone(data3.getPhone());
                    chargingOrderListVO.setPhone(data3.getPhone());
                }
            }
@@ -1697,102 +1702,14 @@
        if(com.ruoyi.common.core.utils.StringUtils.isNotEmpty(query.getTransaction_serial_number())){
            //获取当前的计费策略
            TChargingOrder chargingOrder = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, query.getTransaction_serial_number()));
            AccountingStrategyDetailOrder strategyDetail = accountingStrategyDetailOrderClient.getNowAccountingStrategyDetailOrder(chargingOrder.getId()).getData();
            TChargingOrderAccountingStrategy chargingOrderAccountingStrategy = chargingOrderAccountingStrategyService.getOne(new LambdaQueryWrapper<TChargingOrderAccountingStrategy>()
                    .eq(TChargingOrderAccountingStrategy::getChargingOrderId, chargingOrder.getId()).orderByDesc(TChargingOrderAccountingStrategy::getCreateTime).last(" limit 0, 1"));
            if(null == chargingOrderAccountingStrategy){
                chargingOrderAccountingStrategy = new TChargingOrderAccountingStrategy();
                chargingOrderAccountingStrategy.setChargingOrderId(chargingOrder.getId());
                chargingOrderAccountingStrategy.setAccountingStrategyDetailId(strategyDetail.getId());
                chargingOrderAccountingStrategy.setType(strategyDetail.getType());
                chargingOrderAccountingStrategy.setStartTime(chargingOrder.getStartTime().format(DateTimeFormatter.ofPattern("HH:mm")));
                chargingOrderAccountingStrategy.setEndTime(LocalDateTime.now().format(DateTimeFormatter.ofPattern("HH:mm")));
                chargingOrderAccountingStrategy.setElectrovalence(strategyDetail.getElectrovalence());
                chargingOrderAccountingStrategy.setServiceCharge(strategyDetail.getServiceCharge());
                chargingOrderAccountingStrategy.setCostServiceCharge(strategyDetail.getCostServiceCharge());
                //已充电总度数
                BigDecimal charging_degree = query.getCharging_degree();
                BigDecimal electrovalenc = strategyDetail.getElectrovalence().multiply(charging_degree);
                BigDecimal originalServicePrice = strategyDetail.getServiceCharge().multiply(charging_degree);
                BigDecimal serviceCharge = originalServicePrice;
                //计算优惠金额
                if(null != chargingOrder.getVipDiscount()){
                    serviceCharge = serviceCharge.multiply(chargingOrder.getVipDiscount().divide(new BigDecimal(10)));
                }
                chargingOrderAccountingStrategy.setChargingCapacity(charging_degree);
                chargingOrderAccountingStrategy.setPeriodElectricPrice(electrovalenc);
                chargingOrderAccountingStrategy.setPeriodServicePrice(serviceCharge);
                chargingOrderAccountingStrategy.setPeriodOriginalServicePrice(originalServicePrice);
                chargingOrderAccountingStrategy.setCreateTime(LocalDateTime.now());
                chargingOrderAccountingStrategyService.save(chargingOrderAccountingStrategy);
            }else{
                if(chargingOrderAccountingStrategy.getAccountingStrategyDetailId().equals(strategyDetail.getId())){
                    //已充电总度数
                    BigDecimal charging_degree = query.getCharging_degree();
                    BigDecimal chargingCapacity = chargingOrderAccountingStrategy.getChargingCapacity();
                    //计算本阶段充电度数
                    BigDecimal subtract = charging_degree.subtract(chargingCapacity);
                    //计算本阶段费用
                    BigDecimal electrovalenc = strategyDetail.getElectrovalence().multiply(subtract);
                    BigDecimal originalServicePrice = strategyDetail.getServiceCharge().multiply(subtract);
                    BigDecimal serviceCharge = originalServicePrice;
                    //计算优惠金额
                    if(null != chargingOrder.getVipDiscount()){
                        serviceCharge = serviceCharge.multiply(chargingOrder.getVipDiscount().divide(new BigDecimal(10)));
                    }
                    //将本阶段的费用增加到总费用中
                    electrovalenc = electrovalenc.add(chargingOrderAccountingStrategy.getPeriodElectricPrice());
                    originalServicePrice = originalServicePrice.add(chargingOrderAccountingStrategy.getPeriodOriginalServicePrice());
                    serviceCharge = serviceCharge.add(chargingOrderAccountingStrategy.getPeriodServicePrice());
                    chargingOrderAccountingStrategy.setChargingCapacity(charging_degree);
                    chargingOrderAccountingStrategy.setPeriodElectricPrice(electrovalenc);
                    chargingOrderAccountingStrategy.setPeriodServicePrice(serviceCharge);
                    chargingOrderAccountingStrategy.setPeriodOriginalServicePrice(originalServicePrice);
                    chargingOrderAccountingStrategy.setEndTime(LocalDateTime.now().format(DateTimeFormatter.ofPattern("HH:mm")));
                    chargingOrderAccountingStrategyService.updateById(chargingOrderAccountingStrategy);
                }else{
                    chargingOrderAccountingStrategy = new TChargingOrderAccountingStrategy();
                    chargingOrderAccountingStrategy.setChargingOrderId(chargingOrder.getId());
                    chargingOrderAccountingStrategy.setAccountingStrategyDetailId(strategyDetail.getId());
                    chargingOrderAccountingStrategy.setType(strategyDetail.getType());
                    chargingOrderAccountingStrategy.setStartTime(chargingOrder.getStartTime().format(DateTimeFormatter.ofPattern("HH:mm")));
                    chargingOrderAccountingStrategy.setEndTime(LocalDateTime.now().format(DateTimeFormatter.ofPattern("HH:mm")));
                    chargingOrderAccountingStrategy.setElectrovalence(strategyDetail.getElectrovalence());
                    chargingOrderAccountingStrategy.setServiceCharge(strategyDetail.getServiceCharge());
                    chargingOrderAccountingStrategy.setCostServiceCharge(strategyDetail.getCostServiceCharge());
                    //已充电总度数
                    BigDecimal charging_degree = query.getCharging_degree();
                    BigDecimal electrovalenc = strategyDetail.getElectrovalence().multiply(charging_degree);
                    BigDecimal originalServicePrice = strategyDetail.getServiceCharge().multiply(charging_degree);
                    BigDecimal serviceCharge = originalServicePrice;
                    //计算优惠金额
                    if(null != chargingOrder.getVipDiscount()){
                        serviceCharge = serviceCharge.multiply(chargingOrder.getVipDiscount().divide(new BigDecimal(10)));
                    }
                    chargingOrderAccountingStrategy.setChargingCapacity(charging_degree);
                    chargingOrderAccountingStrategy.setPeriodElectricPrice(electrovalenc);
                    chargingOrderAccountingStrategy.setPeriodServicePrice(serviceCharge);
                    chargingOrderAccountingStrategy.setPeriodOriginalServicePrice(originalServicePrice);
                    chargingOrderAccountingStrategy.setCreateTime(LocalDateTime.now());
                    chargingOrderAccountingStrategyService.save(chargingOrderAccountingStrategy);
                }
            }
            List<TChargingOrderAccountingStrategy> list = chargingOrderAccountingStrategyService.list(new LambdaQueryWrapper<TChargingOrderAccountingStrategy>()
                    .eq(TChargingOrderAccountingStrategy::getChargingOrderId, chargingOrder.getId()));
            //总充电金额
            BigDecimal t = BigDecimal.ZERO;
            for (TChargingOrderAccountingStrategy coas : list) {
                t = t.add(coas.getPeriodServicePrice()).add(coas.getPeriodElectricPrice());
            }
            BigDecimal residualAmount = chargingOrder.getRechargeAmount().subtract(t).setScale(4, RoundingMode.HALF_EVEN);
            BigDecimal residualAmount = chargingOrder.getRechargeAmount().add(chargingOrder.getVipDiscountAmount()).subtract(query.getPaid_amount());
            chargingOrder.setResidualAmount(residualAmount);
            if(query.getOutput_current().compareTo(BigDecimal.ZERO) != 0){
                BigDecimal divide = (query.getOutput_current().multiply(query.getOutput_voltage())).divide(new BigDecimal(1000));
                chargingOrder.setChargingPower(divide);
                chargingOrder.setCurrent(query.getOutput_current());
                chargingOrder.setVoltage(query.getOutput_voltage());
                chargingOrder.setPower(query.getOutput_current().multiply(query.getOutput_voltage()));
                chargingOrder.setPower(divide);
                chargingOrder.setNeedElec(query.getOutput_current());
                
                TChargingGun chargingGun = chargingGunClient.getChargingGunById(chargingOrder.getChargingGunId()).getData();
@@ -1859,25 +1776,42 @@
        
        //获取订单的计费策略
        List<AccountingStrategyDetailOrder> accountingStrategyDetailOrderList = accountingStrategyDetailOrderClient.getAllAccountingStrategyDetailOrder(chargingOrder.getId()).getData();
        AccountingStrategyDetailOrder accountingStrategyDetailOrder = accountingStrategyDetailOrderList.get(accountingStrategyDetailOrderList.size() - 1);
        if(accountingStrategyDetailOrder.getEndTime().equals("00:00")){
            accountingStrategyDetailOrder.setEndTime("24:00");
        }
        chargingOrderAccountingStrategyService.remove(new LambdaQueryWrapper<TChargingOrderAccountingStrategy>().eq(TChargingOrderAccountingStrategy::getChargingOrderId, chargingOrder.getId()));
        for (int i = 0; i < 12; i++) {
            Class<? extends TransactionRecordMessageVO> clazz = vo.getClass();
            try {
                String time = (String) clazz.getMethod("getTime" + (i + 1)).invoke(vo);
                if(StringUtils.hasLength(time)){
                    //充电度数
                    Object invoke = clazz.getMethod("getSharp_peak_charge" + (i + 1)).invoke(vo);
                Object invoke1 = clazz.getMethod("getTime" + (i + 1)).invoke(vo);
                if(null != invoke1){
                    String[] split = invoke1.toString().split("-");
                    AccountingStrategyDetailOrder strategyDetail = accountingStrategyDetailOrderList.stream().filter(s -> s.getStartTime().equals(split[0]) && s.getEndTime().equals(split[1])).findFirst().get();
                    //阶段(1=尖阶段,2=峰阶段,3=平阶段,4=谷阶段)
                    Object invoke = null;
                    switch (strategyDetail.getType()){
                        case 1:
                            //充电度数
                            invoke = clazz.getMethod("getSharp_peak_charge" + (i + 1)).invoke(vo);
                            break;
                        case 2:
                            //充电度数
                            invoke = clazz.getMethod("getPeak_charge" + (i + 1)).invoke(vo);
                            break;
                        case 3:
                            //充电度数
                            invoke = clazz.getMethod("getFlat_peak_charge" + (i + 1)).invoke(vo);
                            break;
                        case 4:
                            //充电度数
                            invoke = clazz.getMethod("getLow_peak_charge" + (i + 1)).invoke(vo);
                            break;
                    }
                    if(null == invoke || invoke.toString().equals("0")){
                        continue;
                    }
                    BigDecimal Sharp_peak_charge = new BigDecimal(invoke.toString());
                    //充电金额
                    Object invoke1 = clazz.getMethod("getSharp_peak_amount" + (i + 1)).invoke(vo);
                    BigDecimal sharp_peak_amount = new BigDecimal(invoke1.toString());
                    String[] split = time.split("-");
                    AccountingStrategyDetailOrder strategyDetail = accountingStrategyDetailOrderList.stream().filter(s -> s.getStartTime().equals(split[0]) && s.getEndTime().equals(split[1])).findFirst().get();
                    TChargingOrderAccountingStrategy chargingOrderAccountingStrategy = new TChargingOrderAccountingStrategy();
                    chargingOrderAccountingStrategy.setChargingOrderId(chargingOrder.getId());
                    chargingOrderAccountingStrategy.setAccountingStrategyDetailId(strategyDetail.getId());
@@ -1968,10 +1902,10 @@
        order.setStartTime(LocalDateTime.parse(vo.getStart_time(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SS")));
        order.setEndTime(LocalDateTime.parse(vo.getEnd_time(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SS")));
        order.setStatus(5);
        order.setOrderAmount(orderAmount);
        order.setVipDiscountAmount(discountAmount);
        order.setServiceCharge(periodServicePrice_total);
        order.setElectrovalence(periodElectricPrice_total);
        order.setOrderAmount(orderAmount.setScale(2, RoundingMode.DOWN));
        order.setVipDiscountAmount(discountAmount.setScale(2, RoundingMode.DOWN));
        order.setServiceCharge(periodServicePrice_total.setScale(2, RoundingMode.DOWN));
        order.setElectrovalence(periodElectricPrice_total.setScale(2, RoundingMode.DOWN));
        order.setChargingCapacity(vo.getTotal_electricity());
        
        //计算优惠券
@@ -2009,8 +1943,8 @@
                }
            }
        }
        order.setPaymentAmount(payAmount);
        order.setRefundAmount(refundAmount);
        order.setPaymentAmount(payAmount.setScale(2, RoundingMode.DOWN));
        order.setRefundAmount(refundAmount.setScale(2, RoundingMode.DOWN));
        order.setRefundStatus(1);
        this.updateById(order);
        chargingOrder = this.getById(order.getId());
@@ -2547,9 +2481,13 @@
            if (!data1.isEmpty()){
                tSettlementConfirm.setSiteName(data1.get(0).getName());
            }
            meteringElectronic = meteringElectronic.add(tSettlementConfirm.getMeteringElectronic());
            chargingElectronic = chargingElectronic.add(tSettlementConfirm.getChargingElectronic());
            lossElectronic = lossElectronic.add(tSettlementConfirm.getLossElectronic());
            if (tSettlementConfirm.getMeteringElectronic()!=null){
                meteringElectronic = meteringElectronic.add(tSettlementConfirm.getMeteringElectronic());
                chargingElectronic = chargingElectronic.add(tSettlementConfirm.getChargingElectronic());
            }
            if (tSettlementConfirm.getLossElectronic()!=null){
                lossElectronic = lossElectronic.add(tSettlementConfirm.getLossElectronic());
            }
            income = income.add(tSettlementConfirm.getIncome());
            venue = venue.add(tSettlementConfirm.getVenue());
            metering = metering.add(tSettlementConfirm.getMetering());
@@ -2613,13 +2551,22 @@
                settlementConfirm.setIncome(settlementConfirm.getElectrovalence().add(settlementConfirm.getServiceCharge()));
                if (tSettlementConfirm.getSiteId().equals(settlementConfirm.getSiteId())){
                    // 电站相同比较收入涨幅跌幅
                    BigDecimal subtract = tSettlementConfirm.getIncome().subtract(settlementConfirm.getIncome()).divide(tSettlementConfirm.getIncome()).setScale(2, RoundingMode.HALF_DOWN).multiply(new BigDecimal("100"));
                    tSettlementConfirm.setIncomePercentage(subtract+"%");
                    if (tSettlementConfirm.getIncome().compareTo(BigDecimal.ZERO)>0){
                        BigDecimal subtract = tSettlementConfirm.getIncome().subtract(settlementConfirm.getIncome()).divide(tSettlementConfirm.getIncome()).setScale(2, RoundingMode.HALF_DOWN).multiply(new BigDecimal("100"));
                        tSettlementConfirm.setIncomePercentage(subtract+"%");
                    }else {
                        tSettlementConfirm.setIncomePercentage("100"+"%");
                    }
                    // 比较总利润 收入合计-成本合计
                    BigDecimal subtract1 = tSettlementConfirm.getIncome().subtract(tSettlementConfirm.getCost());
                    BigDecimal subtract2 = settlementConfirm.getIncome().subtract(settlementConfirm.getCost());
                    tSettlementConfirm.setTotalPercentage(subtract1.subtract(subtract2).divide(subtract2).setScale(2, RoundingMode.HALF_DOWN).multiply(new BigDecimal("100"))+"%");
                }
                    BigDecimal bigDecimal1 = subtract1.subtract(subtract2)
                            .divide(subtract2, 2, RoundingMode.HALF_DOWN)
                            .multiply(new BigDecimal("100"))
                            .setScale(2, RoundingMode.HALF_DOWN);
                    tSettlementConfirm.setTotalPercentage(bigDecimal1+"%");                }
                beforeCost = beforeCost.add(settlementConfirm.getCost());
                beforeIncome = beforeIncome.add(settlementConfirm.getIncome());
@@ -2669,7 +2616,7 @@
        if (subtract2.compareTo(new BigDecimal("0")) == 0){
            tSettlementConfirm.setTotalPercentage(0+"%");
        }else{
            tSettlementConfirm.setTotalPercentage(subtract1.subtract(subtract2).divide(subtract2).setScale(2, RoundingMode.HALF_DOWN).multiply(new BigDecimal("100"))+"%");
            tSettlementConfirm.setTotalPercentage(subtract1.subtract(subtract2).divide(subtract2,2, RoundingMode.HALF_DOWN).setScale(2, RoundingMode.HALF_DOWN).multiply(new BigDecimal("100"))+"%");
        }
        tSettlementConfirm.setElectronicRefund(0);
        // 查询上次汇报数据 进行比对涨幅跌幅
@@ -2773,7 +2720,7 @@
        info.setEndDay(endTime.format(DateTimeFormatter.ofPattern("MM月dd日")) + " 周" + endTime.getDayOfWeek().getDisplayName(TextStyle.FULL, Locale.SIMPLIFIED_CHINESE));
        info.setEndHour(endTime.format(DateTimeFormatter.ofPattern("HH:mm")));
        int hour = endTime.getHour() - startTime.getHour();
        int second = endTime.getSecond() - startTime.getSecond();
        int second = endTime.getMinute() - startTime.getMinute();
        info.setDuration(0 == hour ? String.format("%s分钟", second) : String.format("%s小时%s分钟", hour, second));
        return info;
    }
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderEvaluateServiceImpl.java
@@ -193,7 +193,22 @@
            BigDecimal reviewRate = new BigDecimal(goodCount).divide(new BigDecimal(tChargingOrders.size()),2, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP);
            siteDetailEvaluateVO.setReviewRate(reviewRate);
            siteDetailEvaluateVO.setEvaluateCount(tChargingOrders.size());
            siteDetailEvaluateVO.setOrderEvaluateVOS(tChargingOrders.stream().limit(3).collect(Collectors.toList()));
            List<TOrderEvaluateVO> collect = tChargingOrders.stream().limit(3).collect(Collectors.toList());
            // 查询评价下的标签
            List<Long> orderIds = collect.stream().map(TOrderEvaluateVO::getId).collect(Collectors.toList());
            if(!CollectionUtils.isEmpty(orderIds)){
                List<TOrderEvaluateTag> tOrderEvaluateTags = orderEvaluateTagMapper.selectList(Wrappers.lambdaQuery(TOrderEvaluateTag.class)
                        .in(TOrderEvaluateTag::getOrderEvaluateId, orderIds));
                for (TOrderEvaluateVO tOrderEvaluateVO : collect) {
                    List<TOrderEvaluateTag> tOrderEvaluateTagList = tOrderEvaluateTags.stream().filter(e -> e.getOrderEvaluateId().equals(tOrderEvaluateVO.getId())).collect(Collectors.toList());
                    if(!CollectionUtils.isEmpty(tOrderEvaluateTagList)){
                        List<Integer> tagIds = tOrderEvaluateTagList.stream().map(TOrderEvaluateTag::getEvaluationTagId).collect(Collectors.toList());
                        List<TEvaluationTag> data = evaluationTagClient.getListByIds(tagIds).getData();
                        tOrderEvaluateVO.setOrderEvaluateTags(data);
                    }
                }
            }
            siteDetailEvaluateVO.setOrderEvaluateVOS(collect);
        }
        return siteDetailEvaluateVO;
    }
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TShoppingOrderServiceImpl.java
@@ -127,15 +127,15 @@
                        coupon = coupon.add(tActivityStatisticslVO.getCouponDiscountAmount());
                        stringBuilder.append("优惠券抵扣").append("+");
                }
                    if (tActivityStatisticslVO.getVipDiscountAmount()!=null
                            &&
                            (tActivityStatisticslVO.getCouponDiscountAmount().compareTo(BigDecimal.ZERO)>0)){
                    if (tActivityStatisticslVO.getVipDiscountAmount()!=null &&(tActivityStatisticslVO.getVipDiscountAmount().compareTo(BigDecimal.ZERO)>0)){
                        discount = discount.add(tActivityStatisticslVO.getVipDiscountAmount());
                        stringBuilder.append("会员抵扣").append("+");
                    }
                    stringBuilder.deleteCharAt(stringBuilder.length()-1);
                    tActivityStatisticslVO.setType(stringBuilder.toString());
                    tActivityStatisticslVO.setTime(simpleDateFormat.format(tActivityStatisticslVO.getCreateTime()));
                    if (stringBuilder.length()>0){
                        stringBuilder.deleteCharAt(stringBuilder.length()-1);
                        tActivityStatisticslVO.setType(stringBuilder.toString());
                    }
                    tActivityStatisticslVO.setTime(tActivityStatisticslVO.getCreateTime());
                    break;
                case 2:
                    StringBuilder stringBuilder1 = new StringBuilder();
@@ -155,7 +155,7 @@
                    }
                    stringBuilder1.deleteCharAt(stringBuilder1.length()-1);
                    tActivityStatisticslVO.setType(stringBuilder1.toString());
                    tActivityStatisticslVO.setTime(simpleDateFormat.format(tActivityStatisticslVO.getCreateTime()));
                    tActivityStatisticslVO.setTime(tActivityStatisticslVO.getCreateTime());
                    break;
                case 3:
                    // 会员订单 优惠金额大于0
@@ -165,19 +165,19 @@
                        vipActivity = vipActivity.add(tActivityStatisticslVO.getVipDiscountAmount());
                    }
                    tActivityStatisticslVO.setType("会员活动");
                    tActivityStatisticslVO.setTime(simpleDateFormat.format(tActivityStatisticslVO.getCreateTime()));
                    tActivityStatisticslVO.setTime(tActivityStatisticslVO.getCreateTime());
                    break;
                case 4:
                    // 赠送会员订单 如果支付金额为0 那么就是后台赠送的会员
                    if (tActivityStatisticslVO.getPaymentAmount().compareTo(BigDecimal.ZERO)==0){
                        grantVip = grantVip.add(tActivityStatisticslVO.getOrderAmount());
                        tActivityStatisticslVO.setType("赠送会员");
                        tActivityStatisticslVO.setTime(simpleDateFormat.format(tActivityStatisticslVO.getCreateTime()));
                        tActivityStatisticslVO.setTime(tActivityStatisticslVO.getCreateTime());
                    }else{
                        // 赠送
                        grantVip = grantVip.add(tActivityStatisticslVO.getVipDiscountAmount());
                        tActivityStatisticslVO.setType("赠送会员");
                        tActivityStatisticslVO.setTime(simpleDateFormat.format(tActivityStatisticslVO.getCreateTime()));
                        tActivityStatisticslVO.setTime(tActivityStatisticslVO.getCreateTime());
                    }
                    break;
            }
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/task/TaskUtil.java
@@ -60,7 +60,7 @@
            String randomDigits = random.ints(10, 0, 10) // 生成10个随机数字,范围在0-9
                    .mapToObj(String::valueOf)
                    .collect(Collectors.joining()); // 将其连接成一个字符串
            tChargingBill.setCode("JSD"+string+randomDigits+"001" );
            tChargingBill.setCode("JSD"+string+randomDigits );
            tChargingBill.setType(1);
            tChargingBill.setBillTime(LocalDateTime.now());
            tChargingBill.setStatus(1);
ruoyi-service/ruoyi-order/src/main/resources/bootstrap.yml
@@ -23,16 +23,15 @@
    nacos:
      discovery:
        # 服务注册地址
        server-addr: 127.0.0.1:8848
        server-addr: 192.168.110.169:8848
        service: ${spring.application.name}
        group: DEFAULT_GROUP
        namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb
        username: nacos
        password: nacos
#        ip: 192.168.110.85
      config:
        # 配置中心地址
        server-addr: 127.0.0.1:8848
        server-addr: 192.168.110.169:8848
        namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb
        group: DEFAULT_GROUP
        name: ${spring.application.name}
@@ -57,7 +56,7 @@
    type: nacos
    nacos:
      # 开发环境
      server-addr: 127.0.0.1:8848
      server-addr: 192.168.110.169:8848
      namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb
      group: DEFAULT_GROUP
      data-id: seata-server.properties
@@ -75,7 +74,7 @@
    nacos:
      application: seata-server
      # 开发环境
      server-addr: 127.0.0.1:8848
      server-addr: 192.168.110.169:8848
      namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb
      group: DEFAULT_GROUP
      username: nacos
@@ -90,7 +89,7 @@
    nacos:
      discovery:
        # 开发环境
        server-addr: 127.0.0.1:8848 # nacos注册中心地址
        server-addr: 192.168.110.169:8848 # nacos注册中心地址
        namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb # 命名空间
        group: DEFAULT_GROUP
        application: seata-server #Nacos 中 Seata 名称
@@ -122,7 +121,6 @@
        namespace: c6cf40b5-44e8-43f9-be61-8d10fa830e2a
        username: nacos
        password: nacos
        ip: 192.168.110.111
      config:
        # 配置中心地址
        server-addr: 192.168.0.137:8848,192.168.0.123:8848
ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingBillMapper.xml
@@ -6,7 +6,7 @@
    <select id="chargingBillList" resultType="com.ruoyi.order.api.vo.ChargingBillListVO">
    select t1.* from t_charging_bill t1
    where 1=1
        <if test="req.type != null ">
        <if test="req.type != null and req.type!=0">
            and t1.type = #{req.type}
        </if>
      <if test="req.state != null ">
ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml
@@ -102,10 +102,10 @@
            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">
@@ -644,16 +644,16 @@
        <if test="statisticsQueryDto.dayType ==1 ">
            AND DATE(create_time) = CURDATE()
        </if>
        <if test="statisticsQueryDto.dayType == 2 ">
        <if test="statisticsQueryDto.dayType ==2 ">
            AND WEEKOFYEAR(create_time) = WEEKOFYEAR(CURDATE())
        </if>
        <if test="statisticsQueryDto.dayType == 3 ">
        <if test="statisticsQueryDto.dayType ==3 ">
            AND MONTH(create_time) = MONTH(CURDATE())
        </if>
        <if test="statisticsQueryDto.dayType == 4">
        <if test="statisticsQueryDto.dayType ==4">
            AND YEAR(create_time) = YEAR(CURDATE())
        </if>
        <if test="statisticsQueryDto.dayType == 5">
        <if test="statisticsQueryDto.dayType ==5">
            <if test="statisticsQueryDto.startTime != null">
                AND create_time >= #{statisticsQueryDto.startTime}
            </if>
@@ -797,7 +797,7 @@
    </select>
    <select id="chargingList" resultType="com.ruoyi.order.api.vo.ChargingOrderListVO">
        select t1.* from t_charging_order t1
        select t1.* ,t1.current as chargingCapacity,t1.recharge_amount as paymentAmount,t1.electricity as chargingCapacity from t_charging_order t1
        where 1=1
        <if test="null != req.code and req.code!=''">
            and t1.code  LIKE CONCAT('%',#{req.code},'%')
ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TOrderEvaluateMapper.xml
@@ -66,7 +66,7 @@
                    WHEN img_url IS NOT NULL THEN 0
                    ELSE 1
                    END ASC,
                    create_time DESC;
                    create_time DESC
                </otherwise>
            </choose>
        </if>
@@ -76,7 +76,7 @@
            WHEN img_url IS NOT NULL THEN 0
            ELSE 1
            END ASC,
            create_time DESC;
            create_time DESC
        </if>
    </select>
    <select id="getOrderEvaluateBySiteId" resultType="com.ruoyi.order.api.vo.TOrderEvaluateVO">
ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TOrderInvoiceMapper.xml
@@ -71,7 +71,7 @@
                </foreach>
            </if>
        </where>
        ORDER BY toi.billing_time DESC
        ORDER BY toi.create_time DESC
    </select>
    <select id="statusCount" resultType="java.util.Map">
        select
ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/RuoYiOrderApplicationTests.java
@@ -1,6 +1,8 @@
package com.ruoyi.order;
import com.alibaba.fastjson2.JSON;
import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.order.dto.MyChargingOrderInfo;
import com.ruoyi.order.service.TChargingOrderService;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
@@ -17,7 +19,7 @@
    
    @Test
    public void test(){
        AjaxResult ajaxResult = chargingOrderService.chargingOrderCallback(2, "CD55720241011143234718", "4200002400202410113181486798", "");
        MyChargingOrderInfo myChargingOrderInfo = chargingOrderService.getMyChargingOrderInfo("1846484071567437825");
        System.err.println(JSON.toJSONString(myChargingOrderInfo));
    }
}
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/RegionController.java
@@ -1,6 +1,7 @@
package com.ruoyi.other.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.other.api.domain.Region;
import com.ruoyi.other.service.IRegionService;
@@ -34,4 +35,15 @@
        List<Region> list = regionService.list(new LambdaQueryWrapper<Region>().eq(Region::getParentId, pid));
        return AjaxResult.success(list);
    }
    /**
     * 根据code获取对应名称
     * @return
     */
    @ResponseBody
    @GetMapping("/getRegionBuyCode/{code}")
    public R<Region> getRegionBuyCode(@PathVariable("code") String code){
        Region list = regionService.getOne(new LambdaQueryWrapper<Region>().eq(Region::getCode, code));
        return R.ok(list);
    }
}
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TAdvertisingController.java
@@ -68,7 +68,7 @@
    @ApiOperation(tags = {"管理后台-广告管理"},value = "广告修改")
    @Log(title = "【广告管理】修改广告", businessType = BusinessType.UPDATE,operatorType = OperatorType.MANAGE)
    public AjaxResult updateVip(@RequestBody TAdvertising dto) {
        if (dto.getJumpType() == 2){
        if (dto.getJumpType()!=null && dto.getJumpType() == 2){
            // 清空跳转地址
            advertisingService.updateById(dto);
            LambdaUpdateWrapper<TAdvertising> tAdvertisingLambdaUpdateWrapper = new LambdaUpdateWrapper<>();
ruoyi-service/ruoyi-other/src/main/resources/bootstrap.yml
@@ -23,16 +23,15 @@
    nacos:
      discovery:
        # 服务注册地址
        server-addr: 127.0.0.1:8848
        server-addr: 192.168.110.169:8848
        service: ${spring.application.name}
        group: DEFAULT_GROUP
        namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb
        username: nacos
        password: nacos
#        ip: 192.168.110.85
      config:
        # 配置中心地址
        server-addr: 127.0.0.1:8848
        server-addr: 192.168.110.169:8848
        namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb
        group: DEFAULT_GROUP
        name: ${spring.application.name}
@@ -57,7 +56,7 @@
    type: nacos
    nacos:
      # 开发环境
      server-addr: 127.0.0.1:8848
      server-addr: 192.168.110.169:8848
      namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb
      group: DEFAULT_GROUP
      data-id: seata-server.properties
@@ -75,7 +74,7 @@
    nacos:
      application: seata-server
      # 开发环境
      server-addr: 127.0.0.1:8848
      server-addr: 192.168.110.169:8848
      namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb
      group: DEFAULT_GROUP
      username: nacos
@@ -90,7 +89,7 @@
    nacos:
      discovery:
        # 开发环境
        server-addr: 127.0.0.1:8848 # nacos注册中心地址
        server-addr: 192.168.110.169:8848 # nacos注册中心地址
        namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb # 命名空间
        group: DEFAULT_GROUP
        application: seata-server #Nacos 中 Seata 名称
ruoyi-service/ruoyi-payment/src/main/resources/bootstrap.yml
@@ -18,16 +18,15 @@
    nacos:
      discovery:
        # 服务注册地址
        server-addr: 127.0.0.1:8848
        server-addr: 192.168.110.169:8848
        service: ${spring.application.name}
        group: DEFAULT_GROUP
        namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb
        username: nacos
        password: nacos
        ip: 192.168.110.111
      config:
        # 配置中心地址
        server-addr: 127.0.0.1:8848
        server-addr: 192.168.110.169:8848
        namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb
        group: DEFAULT_GROUP
        name: ${spring.application.name}