From 782da9b7882a697196fa47556dcee18e9fb0bc36 Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期一, 28 十月 2024 15:35:28 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java                         |  235 ++++++++++++++++++---
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TAccountingStrategyServiceImpl.java      |   22 ++
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/SignDayUtil.java                                           |   27 ++
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUserVipDetail.java                                |    3 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java            |   28 +-
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TGoodsController.java                                    |    2 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/TAccountingStrategyMapper.java                 |    3 
 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/AccountingStrategyDetailOrderVo.java                         |   47 ++++
 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingOrderAccountingStrategy.java                     |    1 
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TVip.java                                             |  156 ++++++++++++++
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserVipDetailController.java                     |    3 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyController.java         |    2 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingPileController.java               |   32 ++
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java                              |    7 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderInvoiceServiceImpl.java                          |    2 
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUserSign.java                                     |    2 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/UploadRealTimeMonitoringDataClient.java |    2 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/TAccountingStrategyService.java               |    3 
 ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TAccountingStrategyMapper.xml                       |   19 +
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java                            |    3 
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TGoodsServiceImpl.java                                 |    3 
 21 files changed, 537 insertions(+), 65 deletions(-)

diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUserSign.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUserSign.java
index 9f40e3a..022da3d 100644
--- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUserSign.java
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUserSign.java
@@ -54,6 +54,8 @@
     @TableField("create_time")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private LocalDateTime createTime;
+    @TableField(exist = false)
+    private Integer continueDays;
 
 
 }
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 865d080..701a010 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
@@ -91,6 +91,9 @@
     @TableField(exist = false)
     private Integer type;
 
+    @TableField(exist = false)
+    private TVip vip;
+
 
 
 }
diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TVip.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TVip.java
new file mode 100644
index 0000000..830ebda
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TVip.java
@@ -0,0 +1,156 @@
+package com.ruoyi.account.api.model;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.core.web.domain.BasePojo;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 无关风月
+ * @since 2024-08-06
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("t_vip")
+@ApiModel(value="TVip对象", description="")
+public class TVip extends BasePojo {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "主键")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty(value = "会员名称")
+    @TableField("name")
+    private String name;
+
+    @ApiModelProperty(value = "前端是否显示(0=否,1=是)")
+    @TableField("reveal")
+    private Integer reveal;
+
+    @ApiModelProperty(value = "月卡价格")
+    @TableField("monthly_card")
+    private BigDecimal monthlyCard;
+
+    @ApiModelProperty(value = "月卡显示(0=否,1=是)")
+    @TableField("monthly_card_reveal")
+    private Integer monthlyCardReveal;
+
+    @ApiModelProperty(value = "月卡折扣")
+    @TableField("monthly_card_discount")
+    private BigDecimal monthlyCardDiscount;
+
+    @ApiModelProperty(value = "月卡折扣开始时间")
+    @TableField("monthly_card_discount_start")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    private LocalDateTime monthlyCardDiscountStart;
+
+    @ApiModelProperty(value = "月卡折扣结束时间")
+    @TableField("monthly_card_discount_end")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    private LocalDateTime monthlyCardDiscountEnd;
+
+    @ApiModelProperty(value = "月卡折扣显示(0=否,1=是)")
+    @TableField("monthly_card_discount_reveal")
+    private Integer monthlyCardDiscountReveal;
+
+    @ApiModelProperty(value = "季卡价格")
+    @TableField("season_card")
+    private BigDecimal seasonCard;
+
+    @ApiModelProperty(value = "季卡显示(0=否,1=是)")
+    @TableField("season_card_reveal")
+    private Integer seasonCardReveal;
+
+    @ApiModelProperty(value = "季卡折扣")
+    @TableField("season_card_discount")
+    private BigDecimal seasonCardDiscount;
+
+    @ApiModelProperty(value = "季卡折扣开始时间")
+    @TableField("season_card_discount_start")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    private LocalDateTime seasonCardDiscountStart;
+
+    @ApiModelProperty(value = "季卡折扣结束时间")
+    @TableField("season_card_discount_end")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    private LocalDateTime seasonCardDiscountEnd;
+
+    @ApiModelProperty(value = "季卡折扣显示(0=否,1=是)")
+    @TableField("season_card_discount_reveal")
+    private Integer seasonCardDiscountReveal;
+
+    @ApiModelProperty(value = "年卡价格")
+    @TableField("annual_card")
+    private BigDecimal annualCard;
+
+    @ApiModelProperty(value = "年卡显示(0=否,1=是)")
+    @TableField("annual_card_reveal")
+    private Integer annualCardReveal;
+
+    @ApiModelProperty(value = "年卡折扣")
+    @TableField("annual_card_discount")
+    private BigDecimal annualCardDiscount;
+
+    @ApiModelProperty(value = "年卡折扣开始时间")
+    @TableField("annual_card_discount_start")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    private LocalDateTime annualCardDiscountStart;
+
+    @ApiModelProperty(value = "年卡折扣结束时间")
+    @TableField("annual_card_discount_end")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    private LocalDateTime annualCardDiscountEnd;
+
+    @ApiModelProperty(value = "年卡折扣显示(0=否,1=是)")
+    @TableField("annual_card_discount_reveal")
+    private Integer annualCardDiscountReveal;
+
+    @ApiModelProperty(value = "折扣次数")
+    @TableField("discount_times")
+    private Integer discountTimes;
+
+    @ApiModelProperty(value = "最高抵扣金额")
+    @TableField("maximum_deduction")
+    private BigDecimal maximumDeduction;
+
+    @ApiModelProperty(value = "抵扣类型(1=服务费)")
+    @TableField("deduction_type")
+    private Integer deductionType;
+
+    @ApiModelProperty(value = "优惠券[{\"id\":1,\"number\":1}]")
+    @TableField("coupon")
+    private String coupon;
+
+    @ApiModelProperty(value = "双倍积分开关(0=否,1=是)")
+    @TableField("double_integration")
+    private Integer doubleIntegration;
+
+    @ApiModelProperty(value = "商城专享价开关(0=否,1=是)")
+    @TableField("mall_exclusive_price")
+    private Integer mallExclusivePrice;
+    @ApiModelProperty(value = "内部会员折扣")
+    @TableField("discount")
+    private BigDecimal discount;
+    @ApiModelProperty(value = "添加的会员类型 1常规 2内部")
+    @TableField("type")
+    private Integer type;
+
+    @ApiModelProperty(value = "优惠券名称和张数 后台列表展示使用")
+    @TableField(exist = false)
+    private String couponName;
+
+
+}
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/UploadRealTimeMonitoringDataClient.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/UploadRealTimeMonitoringDataClient.java
index 2fb1b42..5d89233 100644
--- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/UploadRealTimeMonitoringDataClient.java
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/UploadRealTimeMonitoringDataClient.java
@@ -48,5 +48,5 @@
 	R<UploadRealTimeMonitoringPageData> getAll(@RequestBody MongoChargingOrderQuery mongoChargingOrderQuery);
 
 	@PostMapping("/uploadRealTimeMonitoringData/delete")
-	R delete(@RequestParam String id);
+	R delete(@RequestParam("id") String id);
 }
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 39f3408..53137bd 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
@@ -105,5 +105,4 @@
 
 
 
-
 }
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/AccountingStrategyDetailOrderVo.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/AccountingStrategyDetailOrderVo.java
new file mode 100644
index 0000000..b99cac8
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/AccountingStrategyDetailOrderVo.java
@@ -0,0 +1,47 @@
+package com.ruoyi.order.api.vo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @author zhibing.pu
+ * @Date 2024/9/3 14:00
+ */
+@Data
+public class AccountingStrategyDetailOrderVo {
+	@ApiModelProperty(value = "主键")
+	private Integer id;
+	@ApiModelProperty(value = "策略id")
+	private Integer accountingStrategyId;
+	
+	@ApiModelProperty(value = "阶段(1=尖阶段,2=峰阶段,3=平阶段,4=谷阶段)")
+	private Integer type;
+	
+	@ApiModelProperty(value = "开始时间")
+	private String startTime;
+	
+	@ApiModelProperty(value = "结束时间")
+	private String endTime;
+	
+	@ApiModelProperty(value = "电价")
+	private BigDecimal electrovalence;
+	
+	@ApiModelProperty(value = "服务费")
+	private BigDecimal serviceCharge;
+	
+	@ApiModelProperty(value = "原价服务费")
+	private BigDecimal costServiceCharge;
+	
+	@ApiModelProperty(value = "充电订单id")
+	private Long chargingOrderId;
+	
+	private Long start;
+	private Long end;
+	private BigDecimal chargingCapacity;
+}
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 01c39c3..6a9293c 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
@@ -40,6 +40,7 @@
 import com.ruoyi.order.api.model.TGrantVip;
 import com.ruoyi.other.api.domain.*;
 import com.ruoyi.other.api.domain.TCoupon;
+import com.ruoyi.other.api.domain.TVip;
 import com.ruoyi.other.api.dto.UnitListQueryDto;
 import com.ruoyi.other.api.feignClient.IntegralRuleClient;
 import com.ruoyi.other.api.feignClient.OtherClient;
@@ -705,7 +706,7 @@
 
 
     @ApiOperation(value = "优惠卷详情(1可使用2不可用)", tags = {"小程序-个人中心"})
-    @GetMapping(value = "/user/coupon/getById")
+    @PostMapping(value = "/user/coupon/getById")
     public R<TAppCoupon> couponGetById(@RequestParam("id")Long id) {
         TAppCoupon appCoupon = appCouponService.getById(id);
         appCoupon.setUid(id.toString());
@@ -964,6 +965,10 @@
                 .eq(TAppUserSign::getAppUserId, userId)
                 .orderByDesc(TAppUserSign::getSignDay)
                 .list();
+        for (TAppUserSign signRecord : signRecords) {
+            int i = signDayUtil.calculateContinuousSignDays1(signRecord.getAppUserId(), signRecord.getSignDay());
+            signRecord.setContinueDays(i);
+        }
         return R.ok(signRecords);
 
     }
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 54a2d3b..27c8667 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
@@ -4,13 +4,13 @@
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.ruoyi.account.api.dto.SendCouponDto;
 import com.ruoyi.account.api.model.TAppUserVipDetail;
+import com.ruoyi.account.api.model.TVip;
 import com.ruoyi.account.api.vo.GetAppUserVipDetail;
 import com.ruoyi.account.service.TAppUserVipDetailService;
 import com.ruoyi.account.util.VipInfoDto;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.security.service.TokenService;
 import com.ruoyi.other.api.domain.TCoupon;
-import com.ruoyi.other.api.domain.TVip;
 import com.ruoyi.other.api.dto.VipCouponDto;
 import com.ruoyi.other.api.feignClient.OtherClient;
 import com.ruoyi.other.api.feignClient.VipClient;
@@ -67,6 +67,7 @@
 //				TVip data = vipClient.getInfo1(tAppUserVipDetail.getVipId()).getData();
                 tAppUserVipDetail.setVipName(tVip.getName());
 				tAppUserVipDetail.setType(tVip.getType());
+				tAppUserVipDetail.setVip(tVip);
             }
         }
 
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/SignDayUtil.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/SignDayUtil.java
index 3431f5f..f2f1b87 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/SignDayUtil.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/SignDayUtil.java
@@ -4,7 +4,9 @@
 import cn.hutool.core.date.DateUtil;
 import com.ruoyi.account.api.model.TAppUserSign;
 import com.ruoyi.account.service.TAppUserSignService;
+import org.springframework.cglib.core.Local;
 import org.springframework.stereotype.Component;
+import sun.rmi.server.LoaderHandler;
 
 import javax.annotation.Resource;
 import java.time.LocalDate;
@@ -48,6 +50,31 @@
         return calculateMaxContinuousSignDays(signDays);
     }
 
+    public int calculateContinuousSignDays1(Long userId, LocalDate date) {
+        DateTime startOfMonth = DateUtil.beginOfMonth(new Date());
+//        DateTime endOfMonth = DateUtil.endOfMonth(new Date());
+        // 获取用户的所有签到记录
+        List<TAppUserSign> signRecords = signService.lambdaQuery()
+                .between(TAppUserSign::getSignDay, startOfMonth, date)
+                .eq(TAppUserSign::getAppUserId, userId)
+                .orderByDesc(TAppUserSign::getSignDay)
+                .list();
+
+        // 如果没有签到记录,则返回0
+        if (signRecords.isEmpty()) {
+            return 0;
+        }
+
+        // 将签到日期转换为 LocalDate 列表,并按照日期排序
+        List<LocalDate> signDays = signRecords.stream()
+                .map(TAppUserSign::getSignDay)
+                .sorted()
+                .collect(Collectors.toList());
+
+        // 计算连续签到的最大天数
+        return calculateMaxContinuousSignDays(signDays);
+    }
+
     /**
      * 根据签到日期列表计算连续签到的最大天数
      * @param signDays 签到日期列表
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyController.java
index 2670e36..a4a794b 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyController.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyController.java
@@ -327,7 +327,7 @@
     @PostMapping(value = "/auth/pageList")
     public AjaxResult<PageInfo<TAccountingStrategyVO>> authPageList(@RequestBody TAccountingStrategyQuery query) {
 
-        return AjaxResult.ok(accountingStrategyService.pageList(query));
+        return AjaxResult.ok(accountingStrategyService.pageList1(query));
     }
     
 
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingPileController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingPileController.java
index ff411ec..b499c19 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingPileController.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingPileController.java
@@ -237,9 +237,19 @@
 					faultMessage.setDelFlag(false);
 					faultMessage.setContent("设备故障");
 					faultMessageService.save(faultMessage);
-
-					chargingPile.setStatus(0 == status ? 1 : 3);
-					chargingPileService.updateById(chargingPile);
+					
+					TChargingPile chargingPile1 = new TChargingPile();
+					chargingPile1.setId(chargingPile.getId());
+					chargingPile1.setStatus(3);
+					chargingPileService.updateById(chargingPile1);
+					
+					List<TChargingGun> list1 = chargingGunService.list(new LambdaQueryWrapper<TChargingGun>().eq(TChargingGun::getChargingPileId, chargingPile.getId()));
+					for (TChargingGun chargingGun : list1) {
+						TChargingGun chargingGun1 = new TChargingGun();
+						chargingGun1.setId(chargingGun.getId());
+						chargingGun1.setStatus(7);
+						chargingGunService.updateById(chargingGun1);
+					}
 				}
 			}
 			if(chargingPile.getStatus() != 1 && 0 == status){
@@ -249,9 +259,19 @@
 					one.setEndTime(LocalDateTime.now());
 					faultMessageService.updateById(one);
 				}
-
-				chargingPile.setStatus(0 == status ? 1 : 3);
-				chargingPileService.updateById(chargingPile);
+				
+				TChargingPile chargingPile1 = new TChargingPile();
+				chargingPile1.setId(chargingPile.getId());
+				chargingPile1.setStatus(1);
+				chargingPileService.updateById(chargingPile1);
+				
+				List<TChargingGun> list1 = chargingGunService.list(new LambdaQueryWrapper<TChargingGun>().eq(TChargingGun::getChargingPileId, chargingPile.getId()));
+				for (TChargingGun chargingGun : list1) {
+					TChargingGun chargingGun1 = new TChargingGun();
+					chargingGun1.setId(chargingGun.getId());
+					chargingGun1.setStatus(2);
+					chargingGunService.updateById(chargingGun1);
+				}
 			}
 			if(0 == status){
 				Map<String, Object> charging_pile_online = redisService.getCacheMap("charging_pile_online");
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/TAccountingStrategyMapper.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/TAccountingStrategyMapper.java
index 6b3ce5d..efbf492 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/TAccountingStrategyMapper.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/TAccountingStrategyMapper.java
@@ -28,7 +28,8 @@
      * @return
      */
     List<TAccountingStrategyVO> pageList(@Param("query") TAccountingStrategyQuery query, @Param("pageInfo")PageInfo<TAccountingStrategyVO> pageInfo);
-    
+    List<TAccountingStrategyVO> pageList1(@Param("query") TAccountingStrategyQuery query, @Param("pageInfo")PageInfo<TAccountingStrategyVO> pageInfo);
+
     
     /**
      * 获取平台添加的计费策略
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/TAccountingStrategyService.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/TAccountingStrategyService.java
index 06834ef..f805cd0 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/TAccountingStrategyService.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/TAccountingStrategyService.java
@@ -24,7 +24,8 @@
      * @return
      */
     PageInfo<TAccountingStrategyVO> pageList(TAccountingStrategyQuery query);
-    
+    PageInfo<TAccountingStrategyVO> pageList1(TAccountingStrategyQuery query);
+
     /**
      * 获取平台添加的计费策略
      * @return
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TAccountingStrategyServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TAccountingStrategyServiceImpl.java
index 472d616..29d8c4a 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TAccountingStrategyServiceImpl.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TAccountingStrategyServiceImpl.java
@@ -64,6 +64,28 @@
         pageInfo.setRecords(list);
         return pageInfo;
     }
+    @Override
+    public PageInfo<TAccountingStrategyVO> pageList1(TAccountingStrategyQuery query) {
+        PageInfo<TAccountingStrategyVO> pageInfo = new PageInfo<>(query.getPageCurr(),query.getPageSize());
+        List<TAccountingStrategyVO> list = this.baseMapper.pageList1(query,pageInfo);
+        List<Integer> parentIds = list.stream().map(TAccountingStrategyVO::getId).collect(Collectors.toList());
+
+        for (TAccountingStrategyVO tAccountingStrategyVO : list) {
+            SysUser data = sysUserClient.getSysUser(tAccountingStrategyVO.getUserId()).getData();
+            tAccountingStrategyVO.setUserName(data.getNickName());
+            if (tAccountingStrategyVO.getFirstUserId()!=null){
+                SysUser first = sysUserClient.getSysUser(tAccountingStrategyVO.getFirstUserId()).getData();
+                tAccountingStrategyVO.setFirstUserName(first==null?null:first.getNickName());
+            }
+            if (tAccountingStrategyVO.getTwoUserId()!=null){
+                SysUser two = sysUserClient.getSysUser(tAccountingStrategyVO.getTwoUserId()).getData();
+                tAccountingStrategyVO.setTwoUserName(two==null?null:two.getNickName());
+            }
+
+        }
+        pageInfo.setRecords(list);
+        return pageInfo;
+    }
     
     
     /**
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 640d886..70a11ec 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
@@ -586,24 +586,29 @@
 	@Override
 	public void updateStatus() {
 		List<TChargingPile> list = this.list(new LambdaQueryWrapper<TChargingPile>().eq(TChargingPile::getDelFlag, 0));
-		List<TChargingPile> datas = new ArrayList();
 		Map<String, Object> charging_pile_online = redisService.getCacheMap("charging_pile_online");
 		for (TChargingPile chargingPile : list) {
 			Long time = (Long) charging_pile_online.get(chargingPile.getCode());
 			if(null != time && System.currentTimeMillis() - time > 60000){
-				chargingPile.setStatus(2);
-				datas.add(chargingPile);
-			}
-		}
-		
-		if(datas.size() > 0){
-			for (TChargingPile data : datas) {
-				TFaultMessage faultMessage = faultMessageService.getOne(new LambdaQueryWrapper<TFaultMessage>().eq(TFaultMessage::getChargingPileId, data.getId())
+				TChargingPile chargingPile1 = new TChargingPile();
+				chargingPile1.setId(chargingPile.getId());
+				chargingPile1.setStatus(2);
+				this.updateById(chargingPile1);
+				List<TChargingGun> list1 = chargingGunService.list(new LambdaQueryWrapper<TChargingGun>().eq(TChargingGun::getChargingPileId, chargingPile.getId()));
+				for (TChargingGun chargingGun : list1) {
+					TChargingGun chargingGun1 = new TChargingGun();
+					chargingGun1.setId(chargingGun.getId());
+					chargingGun1.setStatus(1);
+					chargingGunService.updateById(chargingGun1);
+				}
+				
+				//添加记录
+				TFaultMessage faultMessage = faultMessageService.getOne(new LambdaQueryWrapper<TFaultMessage>().eq(TFaultMessage::getChargingPileId, chargingPile.getId())
 						.eq(TFaultMessage::getStatus, 1).eq(TFaultMessage::getDelFlag, 0).isNull(TFaultMessage::getEndTime));
 				if(null == faultMessage){
 					faultMessage = new TFaultMessage();
-					faultMessage.setSiteId(data.getSiteId());
-					faultMessage.setChargingPileId(data.getId());
+					faultMessage.setSiteId(chargingPile.getSiteId());
+					faultMessage.setChargingPileId(chargingPile.getId());
 					faultMessage.setStatus(1);
 					faultMessage.setDownTime(LocalDateTime.now());
 					faultMessage.setCreateTime(LocalDateTime.now());
@@ -612,7 +617,6 @@
 					faultMessageService.save(faultMessage);
 				}
 			}
-			this.updateBatchById(datas);
 		}
 	}
 }
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TAccountingStrategyMapper.xml b/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TAccountingStrategyMapper.xml
index e218c2a..c9b1ea5 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TAccountingStrategyMapper.xml
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TAccountingStrategyMapper.xml
@@ -43,6 +43,25 @@
         ORDER BY create_time DESC
     </select>
 
+
+    <select id="pageList1" resultType="com.ruoyi.chargingPile.api.vo.TAccountingStrategyVO">
+        SELECT
+        id, site_id, `name`, description, discount,first_user_id,two_user_id,first_remark,two_remark,audit_status,first_audit_time,two_audit_time, create_time, del_flag,user_id,parent_id
+        FROM t_accounting_strategy
+        <where>
+            <if test="query.name != null and query.name != ''">
+                AND `name` LIKE concat('%',#{query.name}, '%')
+            </if>
+            <if test="query.auditStatus != null">
+                AND audit_status = #{query.auditStatus}
+            </if>
+            AND site_id IS NULL
+            AND (parent_id IS NULL OR audit_status = 1 OR audit_status = 2)
+            AND del_flag = ${@com.ruoyi.common.core.enums.DelFlagEnum@NO.getCode()}
+        </where>
+        ORDER BY create_time DESC
+    </select>
+
     
     
     <select id="getPlatformAccountingStrategy" resultType="com.ruoyi.chargingPile.api.vo.TAccountingStrategyVO">
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 a254b05..4c48815 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
@@ -348,7 +348,6 @@
     public AjaxResult<ChargingOrderInfoVO> chargingOrderInfo(String strategyId) {
         TChargingOrder byId = chargingOrderService.getById(strategyId);
         ChargingOrderInfoVO chargingOrderInfoVO = new ChargingOrderInfoVO();
-
         chargingOrderInfoVO.setCdElectronic(byId.getCurrent()!=null?byId.getCurrent().setScale(2, BigDecimal.ROUND_HALF_DOWN)+"":"");
         chargingOrderInfoVO.setCdVoltage(byId.getVoltage()!=null?byId.getVoltage().setScale(2, BigDecimal.ROUND_HALF_DOWN)+"":"");
         chargingOrderInfoVO.setSurplus(byId.getTotalElectricity()!=null?byId.getTotalElectricity().setScale(2, BigDecimal.ROUND_HALF_DOWN)+"":"");
@@ -842,7 +841,7 @@
 
 
     @ResponseBody
-    @PostMapping(value = "/watch/delete")
+    @GetMapping(value = "/watch/deletes")
     @ApiOperation(value = "监控订单-删除", tags = {"管理后台-订单管理"})
     public R watchChargingOrder(@RequestParam String id) {
         uploadRealTimeMonitoringDataClient.delete(id);
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 e7152ca..494f449 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
@@ -50,6 +50,7 @@
 import com.ruoyi.order.vo.EndOfChargePageInfo;
 import com.ruoyi.other.api.domain.*;
 import com.ruoyi.order.vo.ChargingOrderListInfoVO;
+import com.ruoyi.other.api.domain.TVip;
 import com.ruoyi.other.api.feignClient.*;
 import com.ruoyi.payment.api.feignClient.AliPaymentClient;
 import com.ruoyi.payment.api.feignClient.WxPaymentClient;
@@ -65,10 +66,12 @@
 import org.springframework.util.StringUtils;
 
 import javax.annotation.Resource;
+import javax.crypto.MacSpi;
 import java.lang.reflect.InvocationTargetException;
 import java.math.BigDecimal;
 import java.math.MathContext;
 import java.math.RoundingMode;
+import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.time.*;
 import java.time.format.DateTimeFormatter;
@@ -656,10 +659,107 @@
 		
 		log.error(chargingOrder.getCode() + ":-------------------远程调起开始充电请求-------------------" + platformStartCharging.toString());
 		sendMessageClient.platformStartCharging(platformStartCharging);
+		//异步线程检测远程启动的应答结果。如果失败,则需要全额退款
+		Long id = chargingOrder.getId();
+		//执行5分钟的定时任务检测
+		ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
+		scheduler.scheduleAtFixedRate(()->{
+			if(timingDetection(id)){
+				scheduler.shutdown();
+			}
+		}, 5, 1, TimeUnit.SECONDS);
 		return AjaxResult.success();
 	}
 	
-
+	
+	/**
+	 * 定时检测mongodb数据库数据
+	 * @param id
+	 * @return
+	 */
+	public boolean timingDetection(Long id){
+		TChargingOrder chargingOrder = this.getById(id);
+		if(chargingOrder.getStatus() != 2){
+			return true;
+		}
+		String code = chargingOrder.getCode();
+		String key = "AQJC_" + chargingOrder.getChargingGunId();
+		List<PlatformStartChargingReply> data = platformStartChargingReplyClient.getPlatformStartChargingReply(code).getData();
+		if(null == data || data.size() == 0){
+			return false;
+		}
+		log.error(code + ":-------------------开始检查调起充电结果-------------------" + data.toString());
+		if(data.size() != 0){
+			PlatformStartChargingReply platformStartChargingReply = data.get(1);
+			Integer startup_result = platformStartChargingReply.getStartup_result();
+			Integer failure_cause = platformStartChargingReply.getFailure_cause();
+			Integer counter = counter_map.get(code);
+			PreChargeCheck preChargeCheck1 = redisService.getCacheObject(key);
+			//5分钟内还未插枪则取消充电,退回金额。
+			if(failure_cause == 5 && (null == counter || counter < 300)){
+				counter = (null == counter ? 0 : counter) + 1;
+				counter_map.put(code, counter);
+				//启动失败
+				preChargeCheck1.setStartupSuccess(3);
+				preChargeCheck1.setFailureCause(failure_cause);
+				redisService.setCacheObject(key, preChargeCheck1, 24L, TimeUnit.HOURS);
+				return false;
+			}
+			
+			//清除计时器中的无效数据
+			counter_map.remove(code);
+			TChargingOrder order = new TChargingOrder();
+			order.setId(id);
+			order.setAppUserId(chargingOrder.getAppUserId());
+			if(0 == startup_result){
+				//启动失败
+				preChargeCheck1.setStartupSuccess(3);
+				preChargeCheck1.setFailureCause(failure_cause);
+				//启动失败后取消订单,退款操作
+				refund(code);
+				order.setStatus(-1);
+				order.setEndMode(0);
+			}else{
+				//启动成功
+				preChargeCheck1.setStartupSuccess(2);
+				order.setStatus(3);
+				order.setStartTime(LocalDateTime.now());
+			}
+			this.updateById(order);
+			redisService.setCacheObject(key, preChargeCheck1, 24L, TimeUnit.HOURS);
+			return true;
+		}else{
+			Integer counter = boot_failed_map.get(code);
+			log.error(code + ":-------------------未上传开启充电结果-------------------" + counter);
+			PreChargeCheck preChargeCheck1 = redisService.getCacheObject(key);
+			//5分钟内未启动成功,退回金额。
+			if(null == counter || counter < 300){
+				counter = (null == counter ? 0 : counter) + 1;
+				boot_failed_map.put(code, counter);
+				//启动失败
+				preChargeCheck1.setStartupSuccess(3);
+				preChargeCheck1.setFailureCause(0);
+				redisService.setCacheObject(key, preChargeCheck1, 24L, TimeUnit.HOURS);
+				return false;
+			}
+			
+			//清除计时器中的无效数据
+			boot_failed_map.remove(code);
+			TChargingOrder order = new TChargingOrder();
+			order.setId(id);
+			order.setAppUserId(chargingOrder.getAppUserId());
+			//启动失败
+			preChargeCheck1.setStartupSuccess(3);
+			preChargeCheck1.setFailureCause(0);
+			//启动失败后取消订单,退款操作
+			refund(code);
+			order.setStatus(-1);
+			order.setEndMode(0);
+			this.updateById(order);
+			redisService.setCacheObject(key, preChargeCheck1, 24L, TimeUnit.HOURS);
+			return true;
+		}
+	}
 	
 	
 	/**
@@ -798,7 +898,10 @@
 		one.setRefundTime(LocalDateTime.now());
 		chargingOrderRefundService.updateById(one);
 		
-		TChargingOrder chargingOrder = this.getById(one.getChargingOrderId());
+		TChargingOrder order = this.getById(one.getChargingOrderId());
+		TChargingOrder chargingOrder = new TChargingOrder();
+		chargingOrder.setId(one.getChargingOrderId());
+		chargingOrder.setAppUserId(order.getAppUserId());
 		chargingOrder.setRefundStatus(2);
 		chargingOrder.setRefundSerialNumber(refund_id);
 		chargingOrder.setRefundTime(LocalDateTime.now());
@@ -866,14 +969,17 @@
 	@Override
 	@GlobalTransactional(rollbackFor = Exception.class)
 	public AjaxResult stopCharging(String id) {
-		TChargingOrder chargingOrder = this.getById(id);
-		Integer status = chargingOrder.getStatus();
+		TChargingOrder order = this.getById(id);
+		Integer status = order.getStatus();
 		if(status != 3){
 			return AjaxResult.error("还未开始充电");
 		}
 		if(status == 4 || status == 5){
 			return AjaxResult.error("不能重复操作");
 		}
+		TChargingOrder chargingOrder = new TChargingOrder();
+		chargingOrder.setId(Long.valueOf(id));
+		chargingOrder.setAppUserId(order.getAppUserId());
 		chargingOrder.setEndTime(LocalDateTime.now());
 		chargingOrder.setEndMode(1);
 		this.updateById(chargingOrder);
@@ -1681,6 +1787,8 @@
 		
 		//开始处理计费明细数据和优惠数据
 		chargingOrderAccountingStrategyService.remove(new LambdaQueryWrapper<TChargingOrderAccountingStrategy>().eq(TChargingOrderAccountingStrategy::getChargingOrderId, chargingOrder.getId()));
+		SimpleDateFormat sdfs = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+		List<AccountingStrategyDetailOrderVo> lists = new ArrayList<>();
 		for (int i = 0; i < accountingStrategyDetailOrderList.size(); i++) {
 			Class<? extends TransactionRecordMessageVO> clazz = vo.getClass();
 			try {
@@ -1709,44 +1817,100 @@
 					continue;
 				}
 				BigDecimal sharp_peak_charge = new BigDecimal(invoke.toString());
-				TChargingOrderAccountingStrategy 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 electrovalenc = strategyDetail.getElectrovalence().multiply(sharp_peak_charge).setScale(2, RoundingMode.DOWN);
-				BigDecimal originalServicePrice = strategyDetail.getServiceCharge().multiply(sharp_peak_charge).setScale(2, RoundingMode.DOWN);
-				BigDecimal serviceCharge = originalServicePrice;
-				BigDecimal vipDiscountAmount = BigDecimal.ZERO;
-				//计算优惠金额
-				if(null != chargingOrder.getVipDiscount()){
-					vipDiscountAmount = serviceCharge.multiply(new BigDecimal(1).subtract(chargingOrder.getVipDiscount())).setScale(2, RoundingMode.DOWN);
-					serviceCharge = serviceCharge.multiply(chargingOrder.getVipDiscount()).setScale(2, RoundingMode.DOWN);
-				}
-				chargingOrderAccountingStrategy.setChargingCapacity(sharp_peak_charge);
-				chargingOrderAccountingStrategy.setPeriodElectricPrice(electrovalenc);
-				chargingOrderAccountingStrategy.setPeriodServicePrice(serviceCharge);
-				chargingOrderAccountingStrategy.setPeriodOriginalServicePrice(originalServicePrice);
-				chargingOrderAccountingStrategy.setVipDiscountAmount(vipDiscountAmount);
-				chargingOrderAccountingStrategy.setCreateTime(LocalDateTime.now());
-				chargingOrderAccountingStrategyService.save(chargingOrderAccountingStrategy);
-				
-				periodElectricPrice_total = periodElectricPrice_total.add(electrovalenc);
-				periodServicePrice_total = periodServicePrice_total.add(originalServicePrice);
-				total = total.add(electrovalenc.add(originalServicePrice));
+				AccountingStrategyDetailOrderVo vo1 = new AccountingStrategyDetailOrderVo();
+				BeanUtils.copyProperties(strategyDetail, vo1);
+				vo1.setStart(sdfs.parse(vo.getStart_time().split(" ")[0] + " " + strategyDetail.getStartTime() + ":00").getTime());
+				vo1.setEnd(sdfs.parse(vo.getStart_time().split(" ")[0] + " " + strategyDetail.getEndTime() + ":00").getTime());
+				vo1.setServiceCharge(sharp_peak_charge);
+				lists.add(vo1);
 			} catch (IllegalAccessException e) {
 				throw new RuntimeException(e);
 			} catch (InvocationTargetException e) {
 				throw new RuntimeException(e);
 			} catch (NoSuchMethodException e) {
 				throw new RuntimeException(e);
+			} catch (ParseException e) {
+				throw new RuntimeException(e);
 			}
 		}
+		Collections.sort(lists, new Comparator<AccountingStrategyDetailOrderVo>() {
+			public int compare(AccountingStrategyDetailOrderVo s1, AccountingStrategyDetailOrderVo s2) {
+				return s1.getStart() < s2.getStart() ? -1 : s1.getStart() == s2.getStart() ? 0 : 1;
+			}
+		});
+		if(!vo.getStart_time().split(" ")[0].equals(vo.getEnd_time().split(" ")[0])){
+			List<AccountingStrategyDetailOrderVo> list1 = new ArrayList<>(lists);
+			for (AccountingStrategyDetailOrderVo orderVo : list1) {
+				Calendar start = Calendar.getInstance();
+				start.setTimeInMillis(orderVo.getStart());
+				start.set(Calendar.DAY_OF_YEAR, start.get(Calendar.DAY_OF_YEAR) + 1);
+				orderVo.setStart(start.getTimeInMillis());
+				Calendar end = Calendar.getInstance();
+				end.setTimeInMillis(orderVo.getEnd());
+				end.set(Calendar.DAY_OF_YEAR, end.get(Calendar.DAY_OF_YEAR) + 1);
+				orderVo.setEnd(end.getTimeInMillis());
+			}
+			lists.addAll(list1);
+		}
+		
+		//开始处理明细
+		SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SS");
+		SimpleDateFormat sdf2 = new SimpleDateFormat("HH:mm");
+		Date start = null;
+		Date end = null;
+		try {
+			start = sdf3.parse(vo.getStart_time());
+			end = sdf3.parse(vo.getEnd_time());
+		} catch (ParseException e) {
+			throw new RuntimeException(e);
+		}
+		for (AccountingStrategyDetailOrderVo strategyDetail : lists) {
+			if(strategyDetail.getStart() < start.getTime() || strategyDetail.getEnd() > end.getTime()){
+				continue;
+			}
+			BigDecimal sharp_peak_charge = strategyDetail.getChargingCapacity();
+			TChargingOrderAccountingStrategy chargingOrderAccountingStrategy = new TChargingOrderAccountingStrategy();
+			chargingOrderAccountingStrategy.setChargingOrderId(chargingOrder.getId());
+			chargingOrderAccountingStrategy.setAccountingStrategyDetailId(strategyDetail.getId());
+			chargingOrderAccountingStrategy.setType(strategyDetail.getType());
+			chargingOrderAccountingStrategy.setElectrovalence(strategyDetail.getElectrovalence());
+			chargingOrderAccountingStrategy.setServiceCharge(strategyDetail.getServiceCharge());
+			chargingOrderAccountingStrategy.setCostServiceCharge(strategyDetail.getCostServiceCharge());
+			
+			if(start.getTime() >= strategyDetail.getStart()){
+				chargingOrderAccountingStrategy.setStartTime(sdf2.format(start));
+			}else{
+				chargingOrderAccountingStrategy.setStartTime(strategyDetail.getStartTime());
+			}
+			if(end.getTime() >= strategyDetail.getEnd()){
+				chargingOrderAccountingStrategy.setStartTime(strategyDetail.getEndTime());
+			}else{
+				chargingOrderAccountingStrategy.setStartTime(sdf2.format(end));
+			}
+			
+			//已充电总度数
+			BigDecimal electrovalenc = strategyDetail.getElectrovalence().multiply(sharp_peak_charge).setScale(2, RoundingMode.DOWN);
+			BigDecimal originalServicePrice = strategyDetail.getServiceCharge().multiply(sharp_peak_charge).setScale(2, RoundingMode.DOWN);
+			BigDecimal serviceCharge = originalServicePrice;
+			BigDecimal vipDiscountAmount = BigDecimal.ZERO;
+			//计算优惠金额
+			if(null != chargingOrder.getVipDiscount()){
+				vipDiscountAmount = serviceCharge.multiply(new BigDecimal(1).subtract(chargingOrder.getVipDiscount())).setScale(2, RoundingMode.DOWN);
+				serviceCharge = serviceCharge.multiply(chargingOrder.getVipDiscount()).setScale(2, RoundingMode.DOWN);
+			}
+			chargingOrderAccountingStrategy.setChargingCapacity(sharp_peak_charge);
+			chargingOrderAccountingStrategy.setPeriodElectricPrice(electrovalenc);
+			chargingOrderAccountingStrategy.setPeriodServicePrice(serviceCharge);
+			chargingOrderAccountingStrategy.setPeriodOriginalServicePrice(originalServicePrice);
+			chargingOrderAccountingStrategy.setVipDiscountAmount(vipDiscountAmount);
+			chargingOrderAccountingStrategy.setCreateTime(LocalDateTime.now());
+			chargingOrderAccountingStrategyService.save(chargingOrderAccountingStrategy);
+			
+			periodElectricPrice_total = periodElectricPrice_total.add(electrovalenc);
+			periodServicePrice_total = periodServicePrice_total.add(originalServicePrice);
+			total = total.add(electrovalenc.add(originalServicePrice));
+		}
+		
 		
 		
 		//原金额
@@ -1876,9 +2040,10 @@
 		BigDecimal couponDiscountAmount = order.getCouponDiscountAmount();
 		if(null != couponDiscountAmount && couponDiscountAmount.compareTo(BigDecimal.ZERO) > 0){
 			List<TChargingOrderAccountingStrategy> list = chargingOrderAccountingStrategyService.list(new LambdaQueryWrapper<TChargingOrderAccountingStrategy>().eq(TChargingOrderAccountingStrategy::getChargingOrderId, order.getId()));
+			BigDecimal reduce = list.stream().map(TChargingOrderAccountingStrategy::getPeriodServicePrice).reduce(BigDecimal.ZERO, BigDecimal::add);
 			for (TChargingOrderAccountingStrategy chargingOrderAccountingStrategy : list) {
 				BigDecimal periodServicePrice = chargingOrderAccountingStrategy.getPeriodServicePrice();
-				BigDecimal multiply = couponDiscountAmount.multiply(periodServicePrice.divide(periodServicePrice_total, new MathContext(4, RoundingMode.HALF_EVEN)));
+				BigDecimal multiply = couponDiscountAmount.multiply(periodServicePrice.divide(reduce, new MathContext(4, RoundingMode.HALF_EVEN)));
 				periodServicePrice = periodServicePrice.subtract(multiply);
 				chargingOrderAccountingStrategy.setPeriodServicePrice(periodServicePrice);
 				chargingOrderAccountingStrategy.setCouponDiscountAmount(multiply);
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 a4aed6f..6cd271a 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
@@ -218,6 +218,8 @@
 				BigDecimal payMoney = tChargingOrder.getStatus() < 4 ? tChargingOrder.getRechargeAmount() : tChargingOrder.getPaymentAmount();
 				myChargingOrderList.setPayMoney(payMoney);
 				myChargingOrderList.setCreateTime(tChargingOrder.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy.MM.dd HH:mm:ss")));
+				myChargingOrderList.setElectricCharge(tChargingOrder.getElectrovalence());
+				myChargingOrderList.setServiceCharge(tChargingOrder.getServiceCharge());
 				chargingOrder.add(myChargingOrderList);
 			}
 			myOrderInvoiceInfo.setChargingOrder(chargingOrder);
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TGoodsController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TGoodsController.java
index 05af7e9..3ea9ee4 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TGoodsController.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TGoodsController.java
@@ -351,7 +351,7 @@
             //调起支付
             PaymentOrder paymentOrder = new PaymentOrder();
             paymentOrder.setCode(shopOrder.getCode());
-            paymentOrder.setAmount(exchangeDto.getOrderPrice());
+            paymentOrder.setAmount(exchangeDto.getPayPrice());
             paymentOrder.setOpenId(user.getWxOpenid());
             paymentOrder.setDescription("购买商品");
             R<Map<String, Object>> mapR = wxPaymentClient.orderPay(paymentOrder);
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TGoodsServiceImpl.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TGoodsServiceImpl.java
index 7a58640..5f390ad 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TGoodsServiceImpl.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TGoodsServiceImpl.java
@@ -60,7 +60,6 @@
     @Override
     public PageInfo<TGoods> pageList1(AppGoodQuery basePage) {
         GoodsDTO dto = new GoodsDTO();
-        dto.setType(2);
         dto.setStatus(1);
         dto.setPageCurr(basePage.getPageCurr());
         dto.setPageSize(basePage.getPageSize());
@@ -81,7 +80,7 @@
         }
         String string = stringBuilder.toString();
         // 订单号加上商品类型
-        String res = string+"-"+dto.getType();
+        String res = string+"-"+basePage.getType();
 
         List<Integer> data = orderClient.getSalesCountByGoodsId(res).getData();
         for (int i = 0; i < list.size(); i++) {

--
Gitblit v1.7.1