From 030eb0ac289f56be371d89646208e2e366ea440f Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期二, 07 一月 2025 16:56:37 +0800
Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/mx_charging_pile

---
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/IotInterfaceFallbackFactory.java             |   10 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java                          |  645 +++++++++++++++++++++++++++++++----
 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/api/IotInterfaceUtil.java                    |   30 +
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/IotInterfaceClient.java                  |    9 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ConfirmTransactionRecord.java                  |    2 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TAccountingStrategyDetailServiceImpl.java |    6 
 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/produce/IotMessageProduce.java               |    7 
 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/AccountingStrategyDetailOrderVo.java                          |    3 
 ruoyi-service/ruoyi-other/src/main/resources/bootstrap.yml                                                                   |    2 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java                                   |    6 
 ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/auth/AuthLogic.java                               |    8 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java                         |    8 
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java                               |   55 +++
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/vo/ShowDeviceResp.java                               |   68 +++
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java                             |    9 
 ruoyi-service/ruoyi-order/src/main/resources/bootstrap.yml                                                                   |   10 
 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/controller/SendMessageController.java              |   10 
 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/controller/IotInterfaceController.java             |   12 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java             |   77 +++
 ruoyi-service/ruoyi-integration/src/main/resources/bootstrap.yml                                                             |   10 
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TActivityController.java                                  |   20 
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TIntegralRuleController.java                              |    5 
 ruoyi-service/ruoyi-payment/src/main/resources/bootstrap.yml                                                                 |   10 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TShoppingOrderController.java                             |   16 
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TSystemConfigurationController.java                       |   13 
 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/listener/IotMessageListener.java             |    2 
 26 files changed, 905 insertions(+), 148 deletions(-)

diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/IotInterfaceFallbackFactory.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/IotInterfaceFallbackFactory.java
index c7050fa..741048a 100644
--- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/IotInterfaceFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/IotInterfaceFallbackFactory.java
@@ -3,10 +3,7 @@
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.integration.api.feignClient.IotInterfaceClient;
 import com.ruoyi.integration.api.feignClient.SwitchwayGateClient;
-import com.ruoyi.integration.api.vo.AddDevice;
-import com.ruoyi.integration.api.vo.AddDeviceResp;
-import com.ruoyi.integration.api.vo.DeleteDeviceResp;
-import com.ruoyi.integration.api.vo.SwitchwayGateReq;
+import com.ruoyi.integration.api.vo.*;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Component;
@@ -35,6 +32,11 @@
 			public R<DeleteDeviceResp> deleteDevice(String deviceId) {
 				return R.fail("删除设备失败:" + throwable.getMessage());
 			}
+			
+			@Override
+			public R<ShowDeviceResp> showDeviceRequest(String deviceId) {
+				return R.fail("查询设备失败:" + throwable.getMessage());
+			}
 		};
 	}
 }
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/IotInterfaceClient.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/IotInterfaceClient.java
index 13f7b58..207907f 100644
--- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/IotInterfaceClient.java
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/IotInterfaceClient.java
@@ -6,6 +6,7 @@
 import com.ruoyi.integration.api.vo.AddDevice;
 import com.ruoyi.integration.api.vo.AddDeviceResp;
 import com.ruoyi.integration.api.vo.DeleteDeviceResp;
+import com.ruoyi.integration.api.vo.ShowDeviceResp;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -35,4 +36,12 @@
 	 */
 	@PostMapping("/iotInterface/deleteDevice")
 	R<DeleteDeviceResp> deleteDevice(@RequestParam("deviceId") String deviceId);
+	
+	/**
+	 * 查询设备
+	 * @param deviceId
+	 * @return
+	 */
+	@PostMapping("/iotInterface/showDeviceRequest")
+	R<ShowDeviceResp> showDeviceRequest(@RequestParam("deviceId") String deviceId);
 }
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ConfirmTransactionRecord.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ConfirmTransactionRecord.java
index 69c7681..56edb57 100644
--- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ConfirmTransactionRecord.java
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ConfirmTransactionRecord.java
@@ -13,7 +13,7 @@
 @Document(collection = "confirm_transaction_record") //指定要对应的文档名(表名)
 @Accessors(chain = true)
 public class ConfirmTransactionRecord extends BaseModel {
-    private String transaction_serial_number;// 桩编码
+    private String transaction_serial_number;// 交易流水号
     private Integer confirm_result;// 确认结果(0:上传成功,1:非法账单)
 
 }
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/vo/ShowDeviceResp.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/vo/ShowDeviceResp.java
new file mode 100644
index 0000000..fc2a57c
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/vo/ShowDeviceResp.java
@@ -0,0 +1,68 @@
+package com.ruoyi.integration.api.vo;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+
+/**
+ * @author zhibing.pu
+ * @Date 2024/12/31 16:19
+ */
+@Data
+public class ShowDeviceResp {
+	@JsonInclude(JsonInclude.Include.NON_NULL)
+	@JsonProperty("app_id")
+	private String appId;
+	@JsonInclude(JsonInclude.Include.NON_NULL)
+	@JsonProperty("app_name")
+	private String appName;
+	@JsonInclude(JsonInclude.Include.NON_NULL)
+	@JsonProperty("device_id")
+	private String deviceId;
+	@JsonInclude(JsonInclude.Include.NON_NULL)
+	@JsonProperty("node_id")
+	private String nodeId;
+	@JsonInclude(JsonInclude.Include.NON_NULL)
+	@JsonProperty("gateway_id")
+	private String gatewayId;
+	@JsonInclude(JsonInclude.Include.NON_NULL)
+	@JsonProperty("device_name")
+	private String deviceName;
+	@JsonInclude(JsonInclude.Include.NON_NULL)
+	@JsonProperty("node_type")
+	private String nodeType;
+	@JsonInclude(JsonInclude.Include.NON_NULL)
+	@JsonProperty("description")
+	private String description;
+	@JsonInclude(JsonInclude.Include.NON_NULL)
+	@JsonProperty("fw_version")
+	private String fwVersion;
+	@JsonInclude(JsonInclude.Include.NON_NULL)
+	@JsonProperty("sw_version")
+	private String swVersion;
+	@JsonInclude(JsonInclude.Include.NON_NULL)
+	@JsonProperty("device_sdk_version")
+	private String deviceSdkVersion;
+	@JsonInclude(JsonInclude.Include.NON_NULL)
+	@JsonProperty("product_id")
+	private String productId;
+	@JsonInclude(JsonInclude.Include.NON_NULL)
+	@JsonProperty("product_name")
+	private String productName;
+	@JsonInclude(JsonInclude.Include.NON_NULL)
+	@JsonProperty("status")
+	private String status;
+	@JsonInclude(JsonInclude.Include.NON_NULL)
+	@JsonProperty("create_time")
+	private String createTime;
+	@JsonInclude(JsonInclude.Include.NON_NULL)
+	@JsonProperty("connection_status_update_time")
+	private String connectionStatusUpdateTime;
+	@JsonInclude(JsonInclude.Include.NON_NULL)
+	@JsonProperty("active_time")
+	private String activeTime;
+	@JsonInclude(JsonInclude.Include.NON_NULL)
+	@JsonProperty("extension_info")
+	private Object extensionInfo;
+}
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
index b99cac8..7fbe580 100644
--- 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
@@ -40,8 +40,5 @@
 	
 	@ApiModelProperty(value = "充电订单id")
 	private Long chargingOrderId;
-	
-	private Long start;
-	private Long end;
 	private BigDecimal chargingCapacity;
 }
diff --git a/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/auth/AuthLogic.java b/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/auth/AuthLogic.java
index e3f0a35..2cde5b4 100644
--- a/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/auth/AuthLogic.java
+++ b/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/auth/AuthLogic.java
@@ -187,9 +187,6 @@
     public void checkPermiOr(String... permissions)
     {
         Set<String> permissionList = getPermiList();
-        if(null == permissionList){
-            return;
-        }
         for (String permission : permissions)
         {
             if (hasPermi(permissionList, permission))
@@ -356,9 +353,8 @@
         try
         {
             LoginUser loginUser = getLoginUser();
-            String userType = loginUser.getUserType();
-            if(null != userType && "applet".equals(userType)){
-                return null;
+            if(null == loginUser.getPermissions()){
+                return new HashSet<>();
             }
             return loginUser.getPermissions();
         }
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 fca9ac4..1d17e96 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
@@ -505,7 +505,7 @@
     }
     
     @RequiresPermissions(value = {"/appUser/select", "/vipList/select"}, logical = Logical.OR)
-    @ApiOperation(value = "用户详情积分明细", tags = {"后台-用户管理-用户列表","小程序-个人中心"})
+    @ApiOperation(value = "用户详情积分明细", tags = {"后台-用户管理-用户列表"})
     @PostMapping(value = "/user/points/page")
     public R<Page<TAppUserIntegralChange>> pointsDetail(@RequestBody PointsQueryDto pointsQueryDto) {
         if (pointsQueryDto.getUserId()==null){
@@ -554,6 +554,59 @@
         return R.ok(page);
 
     }
+    
+    
+    
+    @ApiOperation(value = "用户详情积分明细", tags = {"小程序-个人中心"})
+    @PostMapping(value = "/user/points/page1")
+    public R<Page<TAppUserIntegralChange>> pointsDetail1(@RequestBody PointsQueryDto pointsQueryDto) {
+        if (pointsQueryDto.getUserId()==null){
+            pointsQueryDto.setUserId(tokenService.getLoginUserApplet().getUserId());
+        }
+        List<Integer> types = new ArrayList<>();
+        if (pointsQueryDto.getType()==null){
+            types.add(1);
+            types.add(2);
+            types.add(3);
+            types.add(4);
+            types.add(5);
+            types.add(6);
+        }else if (pointsQueryDto.getType()==1){
+            types.add(1);
+            types.add(2);
+            types.add(3);
+            types.add(4);
+            types.add(5);
+        }else if (pointsQueryDto.getType()==2){
+            types.add(6);
+        }
+        Page<TAppUserIntegralChange> page = integralChangeService.lambdaQuery()
+                .eq(TAppUserIntegralChange::getAppUserId, pointsQueryDto.getUserId())
+                .orderByDesc(TAppUserIntegralChange::getCreateTime)
+                .eq(pointsQueryDto.getChangeType() != null, TAppUserIntegralChange::getChangeType, pointsQueryDto.getChangeType())
+                .in(!types.isEmpty(), TAppUserIntegralChange::getChangeType, types).page(Page.of(pointsQueryDto.getPageCurr(), pointsQueryDto.getPageSize()));
+        
+        for (TAppUserIntegralChange record : page.getRecords()) {
+            record.setDateTime(record.getCreateTime());
+            record.setUid(record.getId().toString());
+            if (record.getChangeType()==2||record.getChangeType()==3){
+                R<TChargingOrder> tChargingOrderR = chargingOrderClient.orderDetail(Long.valueOf(record.getExtension()));
+                if (tChargingOrderR.getData()!=null) {
+                    record.setOrderNum(tChargingOrderR.getData().getCode());
+                }
+            }
+            if (record.getChangeType()==6){
+                R<TExchangeOrder> tExchangeOrderR = exchangeOrderClient.orderDetail(Long.valueOf(record.getExtension()));
+                if (tExchangeOrderR.getData()!=null){
+                    record.setOrderNum(tExchangeOrderR.getData().getCode());
+                }
+            }
+        }
+        
+        return R.ok(page);
+        
+    }
+    
 
     @ApiOperation(value = "积分详情", tags = {"小程序-个人中心"})
     @GetMapping(value = "/user/points/detail")
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java
index 28f3a9a..9afe802 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java
@@ -484,13 +484,17 @@
 		return AjaxResult.success(chargingPileService.getChargingGunList(siteId,type));
 	}
 
-	@ApiOperation(value = "获取站点下充电枪数量统计", tags = {"小程序-站点管理-站点详情","管理后台-数据分析-电站分析"})
+	@ApiOperation(value = "获取站点下充电枪数量统计", tags = {"管理后台-数据分析-电站分析"})
 	@GetMapping("/getChargingGunCount")
 	public AjaxResult<Map<String,ChargingGunCountVO>> getChargingGunCount(@RequestParam(value = "siteId")@ApiParam(value = "站点id", required = true)Integer siteId){
 		return AjaxResult.success(chargingGunService.getChargingGunCount(siteId));
 	}
 	
-	
+	@ApiOperation(value = "获取站点下充电枪数量统计", tags = {"小程序-站点管理-站点详情"})
+	@GetMapping("/getChargingGunCount1")
+	public AjaxResult<Map<String,ChargingGunCountVO>> getChargingGunCount1(@RequestParam(value = "siteId")@ApiParam(value = "站点id", required = true)Integer siteId){
+		return AjaxResult.success(chargingGunService.getChargingGunCount(siteId));
+	}
 	
 	@RequiresPermissions(value = {"/site/add"}, logical = Logical.OR)
 	@ResponseBody
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TAccountingStrategyDetailServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TAccountingStrategyDetailServiceImpl.java
index 82450f6..2216d2a 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TAccountingStrategyDetailServiceImpl.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TAccountingStrategyDetailServiceImpl.java
@@ -176,13 +176,13 @@
         }
         // 查询最高折扣的会员
         TVip monthlyCardDiscount = vipClient.getVipInfoByType(3).getData();
-        strategyPriceVO.setServiceFeeDiscount(monthlyCardDiscount.getMonthlyCardDiscount());
+        strategyPriceVO.setServiceFeeDiscount(null == monthlyCardDiscount ? new BigDecimal(10) : monthlyCardDiscount.getMonthlyCardDiscount());
         // 查询最高优惠的会员
         TVip maximumDeduction = vipClient.getVipInfoByType(1).getData();
-        strategyPriceVO.setMaxDiscountAmount(maximumDeduction.getMaximumDeduction());
+        strategyPriceVO.setMaxDiscountAmount(null == maximumDeduction ? new BigDecimal(10) : maximumDeduction.getMaximumDeduction());
         // 查询最低起步价会员
         TVip monthlyCard = vipClient.getVipInfoByType(2).getData();
-        strategyPriceVO.setVipStartPrice(monthlyCard.getMonthlyCard());
+        strategyPriceVO.setVipStartPrice(null == monthlyCard ? new BigDecimal(10) : monthlyCard.getMonthlyCard());
         // 模板折扣
         strategyPriceVO.setDiscount(accountingStrategy.getDiscount());
         return strategyPriceVO;
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 470d14c..5c6bf3b 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
@@ -30,6 +30,10 @@
 import com.ruoyi.integration.api.feignClient.UploadRealTimeMonitoringDataClient;
 import com.ruoyi.integration.api.model.QrCodeDelivery;
 import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData;
+import com.ruoyi.integration.api.vo.AddDevice;
+import com.ruoyi.integration.api.vo.AddDeviceResp;
+import com.ruoyi.integration.api.vo.DeleteDeviceResp;
+import com.ruoyi.integration.api.vo.ShowDeviceResp;
 import com.ruoyi.order.api.feignClient.ChargingOrderAccountingStrategyClient;
 import com.ruoyi.order.api.feignClient.ChargingOrderClient;
 import com.ruoyi.order.api.model.TChargingOrder;
@@ -173,18 +177,23 @@
 			return AjaxResult.error("设备编号已存在");
 		}
 		//调用华为Iot创建设备
-//		AddDevice addDevice = new AddDevice();
-//		addDevice.setProductId("66da68d21837002b28b34ec0");
-//		addDevice.setNodeId(chargingPile.getCode());
-//		addDevice.setDeviceName(chargingPile.getName());
-//		addDevice.setDescription(chargingPile.getNumber().toString());
-//		AddDeviceResp deviceResp = iotInterfaceClient.addDevice(addDevice).getData();
-//		if(null != deviceResp){
-//			int httpStatusCode = deviceResp.getHttpStatusCode();
-//			if(httpStatusCode == 201){
-//				chargingPile.setIotdDeviceId(deviceResp.getDeviceId());
-//			}
-//		}
+		AddDevice addDevice = new AddDevice();
+		addDevice.setProductId("66da68d21837002b28b34ec0");
+		addDevice.setNodeId(chargingPile.getCode());
+		addDevice.setDeviceName(chargingPile.getName());
+		addDevice.setDescription(chargingPile.getNumber().toString());
+		AddDeviceResp deviceResp = iotInterfaceClient.addDevice(addDevice).getData();
+		if(null != deviceResp){
+			int httpStatusCode = deviceResp.getHttpStatusCode();
+			if(httpStatusCode == 201){
+				chargingPile.setIotdDeviceId(deviceResp.getDeviceId());
+			}else{
+				log.error("华为创建设备失败" + JSON.toJSONString(deviceResp));
+				return AjaxResult.error("华为创建设备失败");
+			}
+		}else{
+			return AjaxResult.error("华为创建设备失败");
+		}
 		this.save(chargingPile);
 		return AjaxResult.success();
 	}
@@ -248,6 +257,34 @@
 		if(null != one && !one.getId().equals(chargingPile.getId())){
 			return AjaxResult.error("设备编号已存在");
 		}
+		TChargingPile tChargingPile = this.getById(chargingPile.getId());
+		ShowDeviceResp showDeviceResp = iotInterfaceClient.showDeviceRequest(tChargingPile.getCode()).getData();
+		if(null != showDeviceResp){
+			DeleteDeviceResp deleteDeviceResp = iotInterfaceClient.deleteDevice(tChargingPile.getCode()).getData();
+			if(null == deleteDeviceResp || (deleteDeviceResp.getHttpStatusCode() != 200 && deleteDeviceResp.getHttpStatusCode() != 201 && deleteDeviceResp.getHttpStatusCode() != 204)){
+				return AjaxResult.error("删除设备异常,请查看华为设备管理");
+			}
+		}
+		
+		
+		//调用华为Iot创建设备
+		AddDevice addDevice = new AddDevice();
+		addDevice.setProductId("66da68d21837002b28b34ec0");
+		addDevice.setNodeId(chargingPile.getCode());
+		addDevice.setDeviceName(chargingPile.getName());
+		addDevice.setDescription(chargingPile.getNumber().toString());
+		AddDeviceResp deviceResp = iotInterfaceClient.addDevice(addDevice).getData();
+		if(null != deviceResp){
+			int httpStatusCode = deviceResp.getHttpStatusCode();
+			if(httpStatusCode == 201){
+				chargingPile.setIotdDeviceId(deviceResp.getDeviceId());
+			}else{
+				log.error("华为创建设备失败" + JSON.toJSONString(deviceResp));
+				return AjaxResult.error("华为创建设备失败");
+			}
+		}else{
+			return AjaxResult.error("华为创建设备失败");
+		}
 		this.updateById(chargingPile);
 		
 		List<TChargingGun> list = chargingGunService.list(new LambdaQueryWrapper<TChargingGun>().eq(TChargingGun::getChargingPileId, chargingPile.getId()).eq(TChargingGun::getDelFlag, 0));
@@ -288,11 +325,17 @@
 		for (Integer id : ids) {
 			TChargingPile chargingPile = this.getById(id);
 			//调用华为Iot删除设备
-//			if(StringUtils.isNotEmpty(chargingPile.getIotdDeviceId())){
-//				DeleteDeviceResp deviceResp = iotInterfaceClient.deleteDevice(chargingPile.getIotdDeviceId()).getData();
-//				if(null != deviceResp && deviceResp.getHttpStatusCode() == 0){
-//				}
-//			}
+			if(StringUtils.isNotEmpty(chargingPile.getIotdDeviceId())){
+				ShowDeviceResp showDeviceResp = iotInterfaceClient.showDeviceRequest(chargingPile.getCode()).getData();
+				if(null != showDeviceResp){
+					DeleteDeviceResp deleteDeviceResp = iotInterfaceClient.deleteDevice(chargingPile.getCode()).getData();
+					if(null == deleteDeviceResp || (deleteDeviceResp.getHttpStatusCode() != 200 && deleteDeviceResp.getHttpStatusCode() != 201 && deleteDeviceResp.getHttpStatusCode() != 204)){
+						return AjaxResult.error("删除设备异常,请查看华为设备管理");
+					}
+					chargingPile.setIotdDeviceId("");
+				}
+				
+			}
 			this.removeById(chargingPile);
 		}
 		return AjaxResult.success();
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/controller/IotInterfaceController.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/controller/IotInterfaceController.java
index e68a21f..19db25a 100644
--- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/controller/IotInterfaceController.java
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/controller/IotInterfaceController.java
@@ -6,6 +6,7 @@
 import com.ruoyi.integration.api.vo.AddDevice;
 import com.ruoyi.integration.api.vo.AddDeviceResp;
 import com.ruoyi.integration.api.vo.DeleteDeviceResp;
+import com.ruoyi.integration.api.vo.ShowDeviceResp;
 import com.ruoyi.integration.iotda.utils.api.IotInterfaceUtil;
 import org.springframework.web.bind.annotation.*;
 
@@ -45,4 +46,15 @@
 	public R<DeleteDeviceResp> deleteDevice(@RequestParam("deviceId") String deviceId){
 		return iotInterfaceUtil.deleteDeviceRequest(deviceId);
 	}
+	
+	
+	/**
+	 * 查询设备
+	 * @param deviceId
+	 * @return
+	 */
+	@PostMapping("/showDeviceRequest")
+	public R<ShowDeviceResp> showDeviceRequest(@RequestParam("deviceId") String deviceId){
+		return iotInterfaceUtil.showDeviceRequest(deviceId);
+	}
 }
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/controller/SendMessageController.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/controller/SendMessageController.java
index bd76411..34414fd 100644
--- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/controller/SendMessageController.java
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/controller/SendMessageController.java
@@ -1,5 +1,6 @@
 package com.ruoyi.integration.iotda.controller;
 
+import com.alibaba.fastjson.JSON;
 import com.ruoyi.integration.api.model.*;
 import com.ruoyi.integration.iotda.enums.ServiceIdMenu;
 import com.ruoyi.integration.iotda.utils.produce.IotMessageProduce;
@@ -116,10 +117,10 @@
      * @param confirmTransactionRecord 实体对象
      * @return
      */
-    @PostMapping("/confirmTransactionRecord")
-    public String confirmTransactionRecord(@RequestBody ConfirmTransactionRecord confirmTransactionRecord){
-        return  iotMessageProduce.sendMessage(confirmTransactionRecord.getTransaction_serial_number(), ServiceIdMenu.CONFIRM_TRANSACTION_RECORD.getKey(),messageUtil.confirmTransactionRecord(confirmTransactionRecord));
-    }
+//    @PostMapping("/confirmTransactionRecord")
+//    public String confirmTransactionRecord(@RequestBody ConfirmTransactionRecord confirmTransactionRecord){
+//        return  iotMessageProduce.sendMessage(confirmTransactionRecord.getTransaction_serial_number(), ServiceIdMenu.CONFIRM_TRANSACTION_RECORD.getKey(),messageUtil.confirmTransactionRecord(confirmTransactionRecord));
+//    }
 
     /**
      * 远程账户余额更新
@@ -235,6 +236,7 @@
      */
     @PostMapping("/qrCodeDelivery")
     public String qrCodeDelivery(@RequestBody QrCodeDelivery qrCodeDelivery){
+        log.info("二维码下发:{}", JSON.toJSONString(qrCodeDelivery));
         return  iotMessageProduce.sendMessage(qrCodeDelivery.getCharging_pile_code(), ServiceIdMenu.QR_CODE_DELIVERY.getKey(),messageUtil.qrCodeDelivery(qrCodeDelivery));
     }
 
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/api/IotInterfaceUtil.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/api/IotInterfaceUtil.java
index 0f2fb02..657165a 100644
--- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/api/IotInterfaceUtil.java
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/api/IotInterfaceUtil.java
@@ -8,6 +8,7 @@
 import com.ruoyi.common.core.utils.CodeGenerateUtils;
 import com.ruoyi.integration.api.vo.AddDeviceResp;
 import com.ruoyi.integration.api.vo.DeleteDeviceResp;
+import com.ruoyi.integration.api.vo.ShowDeviceResp;
 import com.ruoyi.integration.iotda.builder.IotBuilder;
 import com.ruoyi.integration.iotda.config.IotDAConfig;
 import lombok.extern.slf4j.Slf4j;
@@ -256,4 +257,33 @@
         }
         return R.fail();
     }
+    
+    
+    /**
+     * 查询设备
+     * @param deviceId
+     * @return
+     */
+    public R<ShowDeviceResp> showDeviceRequest(String deviceId) {
+        ShowDeviceRequest request = new ShowDeviceRequest();
+        request.withDeviceId(deviceId);
+        try {
+            ShowDeviceResponse response = iotBuilder.buildIot().showDevice(request);
+            log.info("查询设备:{}",response.toString());
+            ShowDeviceResp showDeviceResp = new ShowDeviceResp();
+            BeanUtils.copyProperties(response, showDeviceResp);
+            return R.ok(showDeviceResp);
+        } catch (ConnectionException e) {
+            e.printStackTrace();
+        } catch (RequestTimeoutException e) {
+            e.printStackTrace();
+        } catch (ServiceResponseException e) {
+            e.printStackTrace();
+            System.out.println(e.getHttpStatusCode());
+            System.out.println(e.getRequestId());
+            System.out.println(e.getErrorCode());
+            System.out.println(e.getErrorMsg());
+        }
+        return R.fail();
+    }
 }
\ No newline at end of file
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/listener/IotMessageListener.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/listener/IotMessageListener.java
index 6d7c65e..37d2b4b 100644
--- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/listener/IotMessageListener.java
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/listener/IotMessageListener.java
@@ -235,7 +235,7 @@
                 ConfirmTransactionRecord confirmTransactionRecord = new ConfirmTransactionRecord();
                 confirmTransactionRecord.setTransaction_serial_number(transactionRecordMessage.getTransaction_serial_number());
                 confirmTransactionRecord.setConfirm_result(0);
-                iotMessageProduce.sendMessage(confirmTransactionRecord.getTransaction_serial_number(), ServiceIdMenu.CONFIRM_TRANSACTION_RECORD.getKey(),messageUtil.confirmTransactionRecord(confirmTransactionRecord));
+                iotMessageProduce.sendMessage(transactionRecordMessage.getCharging_pile_code(), ServiceIdMenu.CONFIRM_TRANSACTION_RECORD.getKey(),messageUtil.confirmTransactionRecord(confirmTransactionRecord));
                 sendResult = enhanceProduce.chargingMessage(chargingMessage);
                 break;
             case SendTagConstant.UPDATE_BALANCE_REPLY:
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/produce/IotMessageProduce.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/produce/IotMessageProduce.java
index 009e8f1..6e7aa8d 100644
--- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/produce/IotMessageProduce.java
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/produce/IotMessageProduce.java
@@ -39,14 +39,11 @@
      */
     @PostMapping("/sendMessage")
     public String sendMessage(String code, String name, JSONObject message){
+        log.info("消息下发至设备:code={},name={},message={}", code, name, message);
         CreateMessageRequest request = new CreateMessageRequest();
         System.err.println(code);
         System.err.println(JSONObject.toJSONString(config));
-        if(config.getTest() && code.equals(config.getTestDriverCode())){
-            request.withDeviceId(config.getTestDeviceId());
-        }else{
-            request.withDeviceId(config.getDeviceId());
-        }
+        request.withDeviceId(code);
         DeviceMessageRequest body = new DeviceMessageRequest();
         body.withMessageId(UUID.randomUUID().toString());
         body.withName(name);
diff --git a/ruoyi-service/ruoyi-integration/src/main/resources/bootstrap.yml b/ruoyi-service/ruoyi-integration/src/main/resources/bootstrap.yml
index 60c4fde..1f10454 100644
--- a/ruoyi-service/ruoyi-integration/src/main/resources/bootstrap.yml
+++ b/ruoyi-service/ruoyi-integration/src/main/resources/bootstrap.yml
@@ -24,7 +24,7 @@
     nacos:
       discovery:
         # 服务注册地址
-        server-addr: 192.168.110.169:8848
+        server-addr: 127.0.0.1:8848
         service: ${spring.application.name}
         group: DEFAULT_GROUP
         namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb
@@ -32,7 +32,7 @@
         password: nacos
       config:
         # 配置中心地址
-        server-addr: 192.168.110.169:8848
+        server-addr: 127.0.0.1:8848
         namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb
         group: DEFAULT_GROUP
         name: ${spring.application.name}
@@ -57,7 +57,7 @@
     type: nacos
     nacos:
       # 开发环境
-#      server-addr: 192.168.110.169:8848
+#      server-addr: 127.0.0.1:8848
 #      namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb
 #      group: DEFAULT_GROUP
 #      data-id: seata-server.properties
@@ -75,7 +75,7 @@
     nacos:
       application: seata-server
       # 开发环境
-#      server-addr: 192.168.110.169:8848
+#      server-addr: 127.0.0.1:8848
 #      namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb
 #      group: DEFAULT_GROUP
 #      username: nacos
@@ -90,7 +90,7 @@
     nacos:
       discovery:
         # 开发环境
-#        server-addr: 192.168.110.169:8848 # nacos注册中心地址
+#        server-addr: 127.0.0.1:8848 # nacos注册中心地址
 #        namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb # 命名空间
 #        group: DEFAULT_GROUP
 #        application: seata-server #Nacos 中 Seata 名称
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 4089d09..e450b99 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
@@ -230,7 +230,7 @@
         data.setRecords(res1);
         return R.ok(data);
     }
-public static List<PayOrderDto> testing5(long total, long current, long size, List<PayOrderDto> str){
+    public static List<PayOrderDto> testing5(long total, long current, long size, List<PayOrderDto> str){
     List<PayOrderDto> result = new ArrayList<>();
     //获取初始化分页结构
     com.ruoyi.order.util.Page<PayOrderDto> page = new com.ruoyi.order.util.Page().getPage(total, size, current - 1);
@@ -780,6 +780,13 @@
     }
     
     
+//    @PostMapping("/endChargeBillingCharge1")
+//    public void endChargeBillingCharge1(@RequestBody TransactionRecordMessageVO vo){
+//        log.info("-------------------停止充电返回账单后计算费用及修改业务状态-------------------:" + vo);
+//        chargingOrderService.endChargeBillingCharge1(vo);
+//    }
+    
+    
     
     
     @RequiresPermissions(value = {"/platformRevenueAnalysis"}, logical = Logical.OR)
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TShoppingOrderController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TShoppingOrderController.java
index 4625823..9f1b596 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TShoppingOrderController.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TShoppingOrderController.java
@@ -314,7 +314,7 @@
 	
 	
 	@GetMapping("/getMyShoppingOrderInfo/{id}")
-	@ApiOperation(value = "获取购买订单详情", tags = {"小程序-商城购买订单", "管理后台-支付订单-订单信息"})
+	@ApiOperation(value = "获取购买订单详情", tags = {"管理后台-支付订单-订单信息"})
 	public AjaxResult<MyShoppingOrderInfo> getMyShoppingOrderInfo(@PathVariable String id) {
 		TShoppingOrder shoppingOrder = shoppingOrderService.getById(id);
 		Long userId = tokenService.getLoginUserApplet().getUserId();
@@ -326,6 +326,20 @@
 	}
 	
 	
+	
+	@GetMapping("/getMyShoppingOrderInfo1/{id}")
+	@ApiOperation(value = "获取购买订单详情", tags = {"小程序-商城购买订单"})
+	public AjaxResult<MyShoppingOrderInfo> getMyShoppingOrderInfo1(@PathVariable String id) {
+		TShoppingOrder shoppingOrder = shoppingOrderService.getById(id);
+		Long userId = tokenService.getLoginUserApplet().getUserId();
+		if(!shoppingOrder.getAppUserId().equals(userId)){
+			return AjaxResult.error("权限不足");
+		}
+		MyShoppingOrderInfo info = shoppingOrderService.getMyShoppingOrderInfo(id);
+		return AjaxResult.success(info);
+	}
+	
+	
 	@PutMapping("/confirmReceipt/{id}")
 	@ApiOperation(value = "确认收货操作", tags = {"小程序-商城购买订单"})
 	public AjaxResult confirmReceipt(@PathVariable String id) {
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java
index 3bb4884..097546f 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java
@@ -178,6 +178,12 @@
 	 */
 	void endChargeBillingCharge(TransactionRecordMessageVO vo);
 	
+//	/**
+//	 * 停止充电返回账单后计算费用
+//	 * @param vo
+//	 */
+//	void endChargeBillingCharge1(TransactionRecordMessageVO vo);
+	
 	
 
 	/**
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 e21b823..d7e1276 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
@@ -1928,83 +1928,134 @@
 		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 {
-				AccountingStrategyDetailOrder strategyDetail = accountingStrategyDetailOrderList.get(i);
-				//阶段(1=尖阶段,2=峰阶段,3=平阶段,4=谷阶段)
-				Object invoke = null;
-				switch (strategyDetail.getType()){
-					case 1:
-						//充电度数
-						invoke = clazz.getMethod("getSpike_charge" + (i + 1)).invoke(vo);
+		try {
+			//跨天
+			if(!vo.getStart_time().split(" ")[0].equals(vo.getEnd_time().split(" ")[0])){
+				//当天的
+				//开始通过计费策略遍历解析每个时段的费用明细
+				String start_time = vo.getStart_time();
+				String end_time = vo.getEnd_time();
+				long start = sdfs.parse(start_time).getTime();
+				long end = sdfs.parse(end_time).getTime();
+				Class<? extends TransactionRecordMessageVO> clazz = vo.getClass();
+				/**
+				 * "start_time": "2025-01-03 23:06:43.00",
+				 * 	"end_time": "2025-01-04 00:39:39.00",
+				 */
+				for (int i = accountingStrategyDetailOrderList.size(); i > 0; i--) {
+					AccountingStrategyDetailOrder strategyDetail = accountingStrategyDetailOrderList.get(i - 1);
+					long time = sdfs.parse(start_time.split(" ")[0] + " " + strategyDetail.getEndTime() + ":00").getTime();
+					if(time < start){
 						break;
-					case 2:
-						//充电度数
-						invoke = clazz.getMethod("getPeak_charge" + (i + 1)).invoke(vo);
-						break;
-					case 3:
-						//充电度数
-						invoke = clazz.getMethod("getFlat_charge" + (i + 1)).invoke(vo);
-						break;
-					case 4:
-						//充电度数
-						invoke = clazz.getMethod("getValley_charge" + (i + 1)).invoke(vo);
-						break;
+					}
+					//阶段(1=尖阶段,2=峰阶段,3=平阶段,4=谷阶段)
+					Object invoke = null;
+					switch (strategyDetail.getType()){
+						case 1:
+							//充电度数
+							invoke = clazz.getMethod("getSpike_charge" + (i)).invoke(vo);
+							break;
+						case 2:
+							//充电度数
+							invoke = clazz.getMethod("getPeak_charge" + (i)).invoke(vo);
+							break;
+						case 3:
+							//充电度数
+							invoke = clazz.getMethod("getFlat_charge" + (i)).invoke(vo);
+							break;
+						case 4:
+							//充电度数
+							invoke = clazz.getMethod("getValley_charge" + (i)).invoke(vo);
+							break;
+					}
+					if(null == invoke || Double.valueOf(invoke.toString()) == 0){
+						continue;
+					}
+					BigDecimal sharp_peak_charge = new BigDecimal(invoke.toString());
+					AccountingStrategyDetailOrderVo vo1 = new AccountingStrategyDetailOrderVo();
+					BeanUtils.copyProperties(strategyDetail, vo1);
+					vo1.setChargingCapacity(sharp_peak_charge);
+					lists.add(vo1);
 				}
-				if(null == invoke || Double.valueOf(invoke.toString()) == 0){
-					continue;
+				
+				//第二天的
+				//开始通过计费策略遍历解析每个时段的费用明细
+				for (int i = 0; i < accountingStrategyDetailOrderList.size(); i++) {
+					AccountingStrategyDetailOrder strategyDetail = accountingStrategyDetailOrderList.get(i);
+					long time = sdfs.parse(end_time.split(" ")[0] + " " + strategyDetail.getStartTime() + ":00").getTime();
+					if(time > end){
+						break;
+					}
+					//阶段(1=尖阶段,2=峰阶段,3=平阶段,4=谷阶段)
+					Object invoke = null;
+					switch (strategyDetail.getType()){
+						case 1:
+							//充电度数
+							invoke = clazz.getMethod("getSpike_charge" + (i + 1)).invoke(vo);
+							break;
+						case 2:
+							//充电度数
+							invoke = clazz.getMethod("getPeak_charge" + (i + 1)).invoke(vo);
+							break;
+						case 3:
+							//充电度数
+							invoke = clazz.getMethod("getFlat_charge" + (i + 1)).invoke(vo);
+							break;
+						case 4:
+							//充电度数
+							invoke = clazz.getMethod("getValley_charge" + (i + 1)).invoke(vo);
+							break;
+					}
+					if(null == invoke || Double.valueOf(invoke.toString()) == 0){
+						continue;
+					}
+					BigDecimal sharp_peak_charge = new BigDecimal(invoke.toString());
+					AccountingStrategyDetailOrderVo vo1 = new AccountingStrategyDetailOrderVo();
+					BeanUtils.copyProperties(strategyDetail, vo1);
+					vo1.setChargingCapacity(sharp_peak_charge);
+					lists.add(vo1);
 				}
-				BigDecimal sharp_peak_charge = new BigDecimal(invoke.toString());
-				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.setChargingCapacity(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);
+			}else{
+				for (int i = 0; i < accountingStrategyDetailOrderList.size(); i++) {
+					Class<? extends TransactionRecordMessageVO> clazz = vo.getClass();
+					AccountingStrategyDetailOrder strategyDetail = accountingStrategyDetailOrderList.get(i);
+					//阶段(1=尖阶段,2=峰阶段,3=平阶段,4=谷阶段)
+					Object invoke = null;
+					switch (strategyDetail.getType()){
+						case 1:
+							//充电度数
+							invoke = clazz.getMethod("getSpike_charge" + (i + 1)).invoke(vo);
+							break;
+						case 2:
+							//充电度数
+							invoke = clazz.getMethod("getPeak_charge" + (i + 1)).invoke(vo);
+							break;
+						case 3:
+							//充电度数
+							invoke = clazz.getMethod("getFlat_charge" + (i + 1)).invoke(vo);
+							break;
+						case 4:
+							//充电度数
+							invoke = clazz.getMethod("getValley_charge" + (i + 1)).invoke(vo);
+							break;
+					}
+					if(null == invoke || Double.valueOf(invoke.toString()) == 0){
+						continue;
+					}
+					BigDecimal sharp_peak_charge = new BigDecimal(invoke.toString());
+					AccountingStrategyDetailOrderVo vo1 = new AccountingStrategyDetailOrderVo();
+					BeanUtils.copyProperties(strategyDetail, vo1);
+					vo1.setChargingCapacity(sharp_peak_charge);
+					lists.add(vo1);
+				}
 			}
-		}
-		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);
+		}catch (Exception e){
+			e.printStackTrace();
 		}
 		
 		//开始处理明细
-		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) {
+		for (int i = 0; i < lists.size(); i++) {
+			AccountingStrategyDetailOrderVo strategyDetail = lists.get(i);
 			BigDecimal sharp_peak_charge = strategyDetail.getChargingCapacity();
 			TChargingOrderAccountingStrategy chargingOrderAccountingStrategy = new TChargingOrderAccountingStrategy();
 			chargingOrderAccountingStrategy.setChargingOrderId(chargingOrder.getId());
@@ -2013,16 +2064,17 @@
 			chargingOrderAccountingStrategy.setElectrovalence(strategyDetail.getElectrovalence());
 			chargingOrderAccountingStrategy.setServiceCharge(strategyDetail.getServiceCharge());
 			chargingOrderAccountingStrategy.setCostServiceCharge(strategyDetail.getCostServiceCharge());
-			
-			if(start.getTime() >= strategyDetail.getStart()){
-				chargingOrderAccountingStrategy.setStartTime(sdf2.format(start));
+			if(i == 0){
+				String time = vo.getStart_time().split(" ")[1];
+				chargingOrderAccountingStrategy.setStartTime(time.substring(0, time.lastIndexOf(":")));
 			}else{
 				chargingOrderAccountingStrategy.setStartTime(strategyDetail.getStartTime());
 			}
-			if(end.getTime() >= strategyDetail.getEnd()){
-				chargingOrderAccountingStrategy.setEndTime(strategyDetail.getEndTime());
+			if(i == lists.size() - 1){
+				String time = vo.getEnd_time().split(" ")[1];
+				chargingOrderAccountingStrategy.setEndTime(time.substring(0, time.lastIndexOf(":")));
 			}else{
-				chargingOrderAccountingStrategy.setEndTime(sdf2.format(end));
+				chargingOrderAccountingStrategy.setEndTime(strategyDetail.getEndTime());
 			}
 			
 			//已充电总度数
@@ -2046,8 +2098,8 @@
 			periodElectricPrice_total = periodElectricPrice_total.add(electrovalenc);
 			periodServicePrice_total = periodServicePrice_total.add(originalServicePrice);
 			total = total.add(electrovalenc.add(originalServicePrice));
+			
 		}
-		
 		
 		
 		//原金额
@@ -2283,6 +2335,445 @@
 		}
 	}
 	
+	
+//	/**
+//	 * 停止充电返回账单后计算费用
+//	 * @param vo
+//	 */
+//	@Override
+//	@GlobalTransactional(rollbackFor = Exception.class)
+//	public void endChargeBillingCharge1(TransactionRecordMessageVO vo) {
+//		TChargingOrder chargingOrder = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, vo.getTransaction_serial_number()));
+//		Integer status = chargingOrder.getStatus();
+////		if(status == 5){
+////			return;
+////		}
+//
+//		//如果使用优惠券需要判断优惠券是否满足使用条件
+//		//根据实际的充电金额计算退款金额   退回费用=(原金额/总金额)*(总金额-实际充电金额)
+//		//退款金额=优惠券金额+剩余充电金额
+//		BigDecimal periodElectricPrice_total = BigDecimal.ZERO;
+//		BigDecimal periodServicePrice_total = BigDecimal.ZERO;
+//		BigDecimal total = BigDecimal.ZERO;
+//
+//		//获取订单的计费策略
+//		List<AccountingStrategyDetailOrder> accountingStrategyDetailOrderList = accountingStrategyDetailOrderClient.getAllAccountingStrategyDetailOrder(chargingOrder.getId()).getData();
+//		accountingStrategyDetailOrderList.get(accountingStrategyDetailOrderList.size() - 1).setEndTime("23:59");
+//		//开始处理计费明细数据和优惠数据
+////		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<>();
+//		try {
+//			//跨天
+//			if(!vo.getStart_time().split(" ")[0].equals(vo.getEnd_time().split(" ")[0])){
+//				//当天的
+//				//开始通过计费策略遍历解析每个时段的费用明细
+//				String start_time = vo.getStart_time();
+//				String end_time = vo.getEnd_time();
+//				long start = sdfs.parse(start_time).getTime();
+//				long end = sdfs.parse(end_time).getTime();
+//				Class<? extends TransactionRecordMessageVO> clazz = vo.getClass();
+//				/**
+//				 * "start_time": "2025-01-03 23:06:43.00",
+//				 * 	"end_time": "2025-01-04 00:39:39.00",
+//				 */
+//				for (int i = accountingStrategyDetailOrderList.size(); i > 0; i--) {
+//					AccountingStrategyDetailOrder strategyDetail = accountingStrategyDetailOrderList.get(i - 1);
+//					long time = sdfs.parse(start_time.split(" ")[0] + " " + strategyDetail.getEndTime() + ":00").getTime();
+//					if(time < start){
+//						break;
+//					}
+//					//阶段(1=尖阶段,2=峰阶段,3=平阶段,4=谷阶段)
+//					Object invoke = null;
+//					switch (strategyDetail.getType()){
+//						case 1:
+//							//充电度数
+//							invoke = clazz.getMethod("getSpike_charge" + (i)).invoke(vo);
+//							break;
+//						case 2:
+//							//充电度数
+//							invoke = clazz.getMethod("getPeak_charge" + (i)).invoke(vo);
+//							break;
+//						case 3:
+//							//充电度数
+//							invoke = clazz.getMethod("getFlat_charge" + (i)).invoke(vo);
+//							break;
+//						case 4:
+//							//充电度数
+//							invoke = clazz.getMethod("getValley_charge" + (i)).invoke(vo);
+//							break;
+//					}
+//					if(null == invoke || Double.valueOf(invoke.toString()) == 0){
+//						continue;
+//					}
+//					BigDecimal sharp_peak_charge = new BigDecimal(invoke.toString());
+//					AccountingStrategyDetailOrderVo vo1 = new AccountingStrategyDetailOrderVo();
+//					BeanUtils.copyProperties(strategyDetail, vo1);
+//					vo1.setChargingCapacity(sharp_peak_charge);
+//					lists.add(vo1);
+//				}
+//
+//				//第二天的
+//				//开始通过计费策略遍历解析每个时段的费用明细
+//				for (int i = 0; i < accountingStrategyDetailOrderList.size(); i++) {
+//					AccountingStrategyDetailOrder strategyDetail = accountingStrategyDetailOrderList.get(i);
+//					long time = sdfs.parse(end_time.split(" ")[0] + " " + strategyDetail.getStartTime() + ":00").getTime();
+//					if(time > end){
+//						break;
+//					}
+//					//阶段(1=尖阶段,2=峰阶段,3=平阶段,4=谷阶段)
+//					Object invoke = null;
+//					switch (strategyDetail.getType()){
+//						case 1:
+//							//充电度数
+//							invoke = clazz.getMethod("getSpike_charge" + (i + 1)).invoke(vo);
+//							break;
+//						case 2:
+//							//充电度数
+//							invoke = clazz.getMethod("getPeak_charge" + (i + 1)).invoke(vo);
+//							break;
+//						case 3:
+//							//充电度数
+//							invoke = clazz.getMethod("getFlat_charge" + (i + 1)).invoke(vo);
+//							break;
+//						case 4:
+//							//充电度数
+//							invoke = clazz.getMethod("getValley_charge" + (i + 1)).invoke(vo);
+//							break;
+//					}
+//					if(null == invoke || Double.valueOf(invoke.toString()) == 0){
+//						continue;
+//					}
+//					BigDecimal sharp_peak_charge = new BigDecimal(invoke.toString());
+//					AccountingStrategyDetailOrderVo vo1 = new AccountingStrategyDetailOrderVo();
+//					BeanUtils.copyProperties(strategyDetail, vo1);
+//					vo1.setChargingCapacity(sharp_peak_charge);
+//					lists.add(vo1);
+//				}
+//			}else{
+//				for (int i = 0; i < accountingStrategyDetailOrderList.size(); i++) {
+//					Class<? extends TransactionRecordMessageVO> clazz = vo.getClass();
+//					AccountingStrategyDetailOrder strategyDetail = accountingStrategyDetailOrderList.get(i);
+//					//阶段(1=尖阶段,2=峰阶段,3=平阶段,4=谷阶段)
+//					Object invoke = null;
+//					switch (strategyDetail.getType()){
+//						case 1:
+//							//充电度数
+//							invoke = clazz.getMethod("getSpike_charge" + (i + 1)).invoke(vo);
+//							break;
+//						case 2:
+//							//充电度数
+//							invoke = clazz.getMethod("getPeak_charge" + (i + 1)).invoke(vo);
+//							break;
+//						case 3:
+//							//充电度数
+//							invoke = clazz.getMethod("getFlat_charge" + (i + 1)).invoke(vo);
+//							break;
+//						case 4:
+//							//充电度数
+//							invoke = clazz.getMethod("getValley_charge" + (i + 1)).invoke(vo);
+//							break;
+//					}
+//					if(null == invoke || Double.valueOf(invoke.toString()) == 0){
+//						continue;
+//					}
+//					BigDecimal sharp_peak_charge = new BigDecimal(invoke.toString());
+//					AccountingStrategyDetailOrderVo vo1 = new AccountingStrategyDetailOrderVo();
+//					BeanUtils.copyProperties(strategyDetail, vo1);
+//					vo1.setChargingCapacity(sharp_peak_charge);
+//					lists.add(vo1);
+//				}
+//			}
+//		}catch (Exception e){
+//			e.printStackTrace();
+//		}
+//
+//		//开始处理明细
+//		for (int i = 0; i < lists.size(); i++) {
+//			AccountingStrategyDetailOrderVo strategyDetail = lists.get(i);
+//			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(i == 0){
+//				String time = vo.getStart_time().split(" ")[1];
+//				chargingOrderAccountingStrategy.setStartTime(time.substring(0, time.lastIndexOf(":")));
+//			}else{
+//				chargingOrderAccountingStrategy.setStartTime(strategyDetail.getStartTime());
+//			}
+//			if(i == lists.size() - 1){
+//				String time = vo.getEnd_time().split(" ")[1];
+//				chargingOrderAccountingStrategy.setEndTime(time.substring(0, time.lastIndexOf(":")));
+//			}else{
+//				chargingOrderAccountingStrategy.setEndTime(strategyDetail.getEndTime());
+//			}
+//
+//			//已充电总度数
+//			BigDecimal electrovalenc = strategyDetail.getElectrovalence().multiply(sharp_peak_charge);
+//			BigDecimal originalServicePrice = strategyDetail.getServiceCharge().multiply(sharp_peak_charge);
+//			BigDecimal serviceCharge = originalServicePrice;
+//			BigDecimal vipDiscountAmount = BigDecimal.ZERO;
+//			//计算优惠金额
+//			if(null != chargingOrder.getVipDiscount()){
+//				vipDiscountAmount = serviceCharge.multiply(new BigDecimal(1).subtract(chargingOrder.getVipDiscount()));
+//				serviceCharge = serviceCharge.multiply(chargingOrder.getVipDiscount());
+//			}
+//			chargingOrderAccountingStrategy.setChargingCapacity(sharp_peak_charge);
+//			chargingOrderAccountingStrategy.setPeriodElectricPrice(electrovalenc.setScale(4, RoundingMode.HALF_EVEN));
+//			chargingOrderAccountingStrategy.setPeriodServicePrice(serviceCharge.setScale(4, RoundingMode.HALF_EVEN));
+//			chargingOrderAccountingStrategy.setPeriodOriginalServicePrice(originalServicePrice.setScale(4, RoundingMode.HALF_EVEN));
+//			chargingOrderAccountingStrategy.setVipDiscountAmount(vipDiscountAmount.setScale(4, RoundingMode.HALF_EVEN));
+//			chargingOrderAccountingStrategy.setCreateTime(LocalDateTime.now());
+////			chargingOrderAccountingStrategyService.save(chargingOrderAccountingStrategy);
+//			System.err.println("----------"+JSON.toJSONString(chargingOrderAccountingStrategy));
+//
+//			periodElectricPrice_total = periodElectricPrice_total.add(electrovalenc);
+//			periodServicePrice_total = periodServicePrice_total.add(originalServicePrice);
+//			total = total.add(electrovalenc.add(originalServicePrice));
+//
+//		}
+//
+//
+//		//原金额
+//		BigDecimal rechargeAmount = chargingOrder.getRechargeAmount();
+//		BigDecimal vipDiscountAmount = chargingOrder.getVipDiscountAmount();
+//		//总金额(充值金额+会员折扣金额)
+//		BigDecimal decimal = rechargeAmount.add(vipDiscountAmount);
+//		//退款金额(已经计算了折扣优惠部分)
+//		//如果充电总金额未使用完,则需要退回费用=(原金额/总金额)*(总金额-实际充电金额)
+//		BigDecimal refundAmount = rechargeAmount.divide(decimal, new MathContext(4, RoundingMode.HALF_EVEN)).multiply(decimal.subtract(total));
+//		BigDecimal orderAmount = BigDecimal.valueOf(total.doubleValue());
+//		BigDecimal payAmount = BigDecimal.valueOf(total.doubleValue());
+//		//折扣金额
+//		BigDecimal discountAmount = BigDecimal.ZERO;
+////		if(null != chargingOrder.getVipDiscount()){
+////			TAppUser appUser = appUserClient.getUserById(chargingOrder.getAppUserId()).getData();
+////			//判断会员是否还有充电优惠次数
+////			GetAppUserVipDetail getAppUserVipDetail = new GetAppUserVipDetail();
+////			getAppUserVipDetail.setAppUserId(chargingOrder.getAppUserId());
+////			getAppUserVipDetail.setVipId(appUser.getVipId());
+////			TAppUserVipDetail data = appUserVipDetailClient.getAppUserVipDetail(getAppUserVipDetail).getData();
+////			if(null != data && data.getChargeNum() > 0){
+////				data.setChargeNum(data.getChargeNum() - 1);
+////				appUserVipDetailClient.updateAppUserVipDetail(data);
+////
+////				//服务费折扣
+////				discountAmount = periodServicePrice_total.multiply((new BigDecimal(1).subtract(chargingOrder.getVipDiscount())));
+////				TVip vip = vipClient.getInfo1(appUser.getVipId()).getData();
+////				BigDecimal maximumDeduction = vip.getMaximumDeduction();
+////				//普通会员有最高优惠限制
+////				if(vip.getType() == 1 && discountAmount.compareTo(maximumDeduction) > 0){
+////					discountAmount = maximumDeduction;
+////				}
+////			}
+////		}
+//		//会员折扣金额
+//		discountAmount = discountAmount.setScale(4, RoundingMode.HALF_EVEN);
+//		payAmount = payAmount.subtract(discountAmount);
+//		periodServicePrice_total = periodServicePrice_total.subtract(discountAmount);
+//
+//		TChargingOrder order = new TChargingOrder();
+//		order.setId(chargingOrder.getId());
+//		order.setAppUserId(chargingOrder.getAppUserId());
+//		UploadRealTimeMonitoringData uploadRealTimeMonitoringData = uploadRealTimeMonitoringDataClient.chargingOrderInfo(chargingOrder.getCode()).getData();
+//		if(null != uploadRealTimeMonitoringData && null == chargingOrder.getEndMode()){
+//			Integer soc = uploadRealTimeMonitoringData.getSoc();
+//			order.setEndMode(soc > 98 ? 2 : 3);
+//		}else{
+//			order.setEndMode(1);
+//		}
+//		order.setResidualAmount(rechargeAmount.subtract(total).setScale(2, RoundingMode.HALF_EVEN));
+//		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.setScale(2, RoundingMode.HALF_EVEN));
+//		order.setVipDiscountAmount(discountAmount.setScale(2, RoundingMode.HALF_EVEN));
+//		order.setElectrovalence(periodElectricPrice_total.setScale(2, RoundingMode.HALF_EVEN));
+//		order.setChargingCapacity(vo.getTotal_electricity());
+//		order.setElectricity(vo.getTotal_electricity());
+//
+//		//计算优惠券
+//		BigDecimal couponDiscount = BigDecimal.ZERO;
+////		if(null != chargingOrder.getAppCouponId()){
+////			//判断实际充电金额是否满足优惠券使用条件,如果不满足则不适用优惠券。
+////			TAppCoupon appCoupon = appCouponClient.getAppCouponById(chargingOrder.getAppCouponId()).getData();
+////			String couponJson = appCoupon.getCouponJson();
+////			TCoupon tCoupon = JSON.parseObject(couponJson, TCoupon.class);
+////			Integer preferentialMode = tCoupon.getPreferentialMode();
+////			if(1 == preferentialMode){
+////				//满减
+////				if(payAmount.compareTo(tCoupon.getMeetTheConditions()) >= 0){
+////					BigDecimal couponDiscountAmount = tCoupon.getDiscountAmount();
+////					//如果优惠金额大于服务费金额,以服务费作为最大限制
+////					if(periodServicePrice_total.compareTo(couponDiscountAmount) < 0){
+////						couponDiscount = periodServicePrice_total;
+////						periodServicePrice_total = BigDecimal.ZERO;
+////					}else{
+////						couponDiscount = couponDiscountAmount;
+////					}
+////					appCoupon.setStatus(2);
+//////					appCouponClient.updateAppCoupon(appCoupon);
+////				}else{
+////					order.setAppCouponId(null);
+////					order.setCouponDiscountAmount(BigDecimal.ZERO);
+//////					appCouponClient.refund(chargingOrder.getAppCouponId().toString());
+////				}
+////			}
+////			if(2 == preferentialMode){
+////				//抵扣
+////				if(payAmount.compareTo(tCoupon.getMeetTheConditions()) >= 0){
+////					//折扣金额
+////					BigDecimal divide = payAmount.multiply(new BigDecimal(10).subtract(tCoupon.getDiscount())).divide(new BigDecimal(10));
+////					divide = divide.compareTo(tCoupon.getMaximumDiscountAmount()) > 0 ? tCoupon.getMaximumDiscountAmount() : divide;
+////					//如果优惠金额大于服务费金额,以服务费作为最大限制
+////					if(periodServicePrice_total.compareTo(divide) < 0){
+////						couponDiscount = periodServicePrice_total;
+////						periodServicePrice_total = BigDecimal.ZERO;
+////					}else{
+////						couponDiscount = divide;
+////					}
+////
+////					appCoupon.setStatus(2);
+////					appCouponClient.updateAppCoupon(appCoupon);
+////				}else{
+////					order.setAppCouponId(null);
+////					order.setCouponDiscountAmount(BigDecimal.ZERO);
+////					appCouponClient.refund(chargingOrder.getAppCouponId().toString());
+////				}
+////			}
+////		}
+//		//优惠券优惠金额
+//		couponDiscount = couponDiscount.setScale(4, RoundingMode.HALF_EVEN);
+//		refundAmount = refundAmount.add(couponDiscount);
+//		payAmount = payAmount.subtract(couponDiscount);
+//		if(periodServicePrice_total.compareTo(BigDecimal.ZERO) > 0){
+//			periodServicePrice_total = periodServicePrice_total.subtract(couponDiscount);
+//		}
+//		order.setCouponDiscountAmount(couponDiscount.setScale(2, RoundingMode.HALF_EVEN));
+//		order.setServiceCharge(periodServicePrice_total.setScale(2, RoundingMode.HALF_EVEN));
+//		order.setPaymentAmount(payAmount.setScale(2, RoundingMode.HALF_EVEN));
+//		order.setRefundAmount(refundAmount.setScale(2, RoundingMode.HALF_EVEN));
+//		order.setRefundStatus(1);
+////		this.updateById(order);
+//		System.err.println("----------"+JSON.toJSONString(order));
+////		chargingOrder = this.getById(order.getId());
+////
+////		//开始将优惠券优惠的金额添加到明细中
+////		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(reduce, new MathContext(4, RoundingMode.HALF_EVEN)));
+////				periodServicePrice = periodServicePrice.subtract(multiply);
+////				chargingOrderAccountingStrategy.setPeriodServicePrice(periodServicePrice.setScale(2, RoundingMode.HALF_EVEN));
+////				chargingOrderAccountingStrategy.setCouponDiscountAmount(multiply.setScale(2, RoundingMode.HALF_EVEN));
+////			}
+//////			chargingOrderAccountingStrategyService.updateBatchById(list);
+////		}
+////
+////		// 将枪状态重置为空闲
+////		TChargingGun chargingGun = new TChargingGun();
+////		chargingGun.setId(chargingOrder.getChargingGunId());
+////		chargingGun.setStatus(2);
+////		chargingGun.setChargingPower(BigDecimal.ZERO);
+//////		chargingGunClient.updateChargingGunById(chargingGun);
+////
+////		//添加积分
+////		TIntegralRule integralRule = integralRuleClient.getSet().getData();
+////		if(null != integralRule){
+////			TAppUser appUser = appUserClient.getUserById(chargingOrder.getAppUserId()).getData();
+////			Integer num1 = JSON.parseObject(integralRule.getChargeCredit()).getInteger("num1");
+////			Integer integral = chargingOrder.getServiceCharge().intValue() * num1;
+////			if(null != appUser.getVipId()){
+////				TVip vip = vipClient.getInfo1(appUser.getVipId()).getData();
+////				Integer doubleIntegration = vip.getDoubleIntegration();
+////				//双倍积分
+////				if(1 == doubleIntegration){
+////					integral *= 2;
+////				}
+////			}
+////
+////			if(integral > 0){
+////				TAppUserIntegralChange appUserIntegralChange = new TAppUserIntegralChange();
+////				appUserIntegralChange.setAppUserId(appUser.getId());
+////				appUserIntegralChange.setChangeType(2);
+////				appUserIntegralChange.setHistoricalIntegral(appUser.getPoints());
+////				appUser.setPoints(appUser.getPoints() + integral);
+////				appUserIntegralChange.setCurrentIntegral(appUser.getPoints());
+////				appUserIntegralChange.setCreateTime(LocalDateTime.now());
+////				appUserIntegralChange.setOrderCode(chargingOrder.getCode());
+////				appUserIntegralChange.setExtension(chargingOrder.getId().toString());
+////				appUserClient.updateAppUser(appUser);
+////				appUserIntegralChangeClient.addAppUserIntegralChange(appUserIntegralChange);
+////			}
+////		}
+////
+////		//计算用户标签
+////		editUserTag(chargingOrder);
+////		//用户推荐奖励
+////		referralReward(chargingOrder);
+////
+////		//开始构建退款费用
+////		if(refundAmount.compareTo(BigDecimal.ZERO) > 0){
+////			Integer rechargePaymentType = chargingOrder.getRechargePaymentType();
+////			//构建退款明细
+////			TChargingOrderRefund chargingOrderRefund = new TChargingOrderRefund();
+////			chargingOrderRefund.setChargingOrderId(chargingOrder.getId());
+////			SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
+////			chargingOrderRefund.setRefundCode("CDF" + sdf.format(new Date()) + (Double.valueOf(Math.random() * 1000).intValue()));
+////			chargingOrderRefund.setRefundAmount(refundAmount);
+////			chargingOrderRefund.setRefundStatus(1);
+////			chargingOrderRefund.setPayType(rechargePaymentType);
+////			chargingOrderRefund.setRefundStatus(1);
+////			chargingOrderRefund.setCode(chargingOrder.getCode());
+////			chargingOrderRefund.setRefundTitle("充电完成退款");
+////			chargingOrderRefund.setRefundContent("充电完成退款");
+////			chargingOrderRefund.setRefundReason("充电完成退款");
+////			chargingOrderRefund.setRefundRemark("实际充电消费金额:" + chargingOrder.getPaymentAmount());
+////			chargingOrderRefund.setRefundTotalAmount(refundAmount);
+////			chargingOrderRefund.setPayAmount(rechargeAmount);
+////			if(1 == rechargePaymentType){
+////				WxPaymentRefundModel model = new WxPaymentRefundModel();
+////				model.setOut_trade_no(chargingOrder.getCode());
+////				model.setOut_refund_no(chargingOrderRefund.getRefundCode());
+////				model.setReason("充电完成退款");
+////				model.setNotify_url("/payment/wx/refund/notify");
+////				WxPaymentRefundModel.RefundAmount amount = new WxPaymentRefundModel.RefundAmount();
+////				amount.setRefund(refundAmount.multiply(new BigDecimal(100)).intValue());
+////				amount.setTotal(rechargeAmount.multiply(new BigDecimal(100)).intValue());
+////				amount.setCurrency("CNY");
+////				model.setAmount(amount);
+////				R<String> orderR = wxPaymentClient.refundOrderR(model);
+////				if(200 == orderR.getCode()){
+////					chargingOrderRefundService.save(chargingOrderRefund);
+////				}
+////			}
+////			if(2 == rechargePaymentType){
+////				RefundReq dto = new RefundReq();
+////				dto.setOutTradeNo(chargingOrder.getCode());
+////				dto.setOutRequestNo(chargingOrderRefund.getCode());
+////				dto.setRefundAmount(refundAmount.toString());
+////				dto.setRefundReason("充电完成退款");
+////				RefundResp resp = aliPaymentClient.refund(dto).getData();
+////				if(null != resp){
+////					AjaxResult success = chargingOrderStartupFailureWxRefund(resp.getOutTradeNo(), resp.getTradeNo(), "SUCCESS", null);
+////					if(success.isSuccess()){
+////						chargingOrderRefundService.save(chargingOrderRefund);
+////					}
+////				}
+////			}
+////
+////		}
+//	}
+	
+	
+	
 	@Override
 	public List<Map<String, Object>> getByDate(List<Long> chargingOrderIds) {
 		return this.baseMapper.getByDate(chargingOrderIds);
diff --git a/ruoyi-service/ruoyi-order/src/main/resources/bootstrap.yml b/ruoyi-service/ruoyi-order/src/main/resources/bootstrap.yml
index 24c7d3a..cd3f4cd 100644
--- a/ruoyi-service/ruoyi-order/src/main/resources/bootstrap.yml
+++ b/ruoyi-service/ruoyi-order/src/main/resources/bootstrap.yml
@@ -23,7 +23,7 @@
     nacos:
       discovery:
         # 服务注册地址
-        server-addr: 192.168.110.169:8848
+        server-addr: 127.0.0.1:8848
         service: ${spring.application.name}
         group: DEFAULT_GROUP
         namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb
@@ -31,7 +31,7 @@
         password: nacos
       config:
         # 配置中心地址
-        server-addr: 192.168.110.169:8848
+        server-addr: 127.0.0.1:8848
         namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb
         group: DEFAULT_GROUP
         name: ${spring.application.name}
@@ -56,7 +56,7 @@
     type: nacos
     nacos:
       # 开发环境
-#      server-addr: 192.168.110.169:8848
+#      server-addr: 127.0.0.1:8848
 #      namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb
 #      group: DEFAULT_GROUP
 #      data-id: seata-server.properties
@@ -74,7 +74,7 @@
     nacos:
       application: seata-server
       # 开发环境
-#      server-addr: 192.168.110.169:8848
+#      server-addr: 127.0.0.1:8848
 #      namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb
 #      group: DEFAULT_GROUP
 #      username: nacos
@@ -89,7 +89,7 @@
     nacos:
       discovery:
         # 开发环境
-#        server-addr: 192.168.110.169:8848
+#        server-addr: 127.0.0.1:8848
 #        namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb # 命名空间
 #        group: DEFAULT_GROUP
 #        application: seata-server #Nacos 中 Seata 名称
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TActivityController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TActivityController.java
index 18d04ba..f704b5c 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TActivityController.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TActivityController.java
@@ -67,20 +67,32 @@
     
     @RequiresPermissions(value = {"/activity/select"}, logical = Logical.OR)
     @GetMapping("/getInfo")
-    @ApiOperation(tags = {"管理后台-活动管理","小程序-个人中心-活动列表"},value = "活动查看详情")
+    @ApiOperation(tags = {"管理后台-活动管理"},value = "活动查看详情")
     public AjaxResult<TActivity> getInfo(Integer id) {
         return AjaxResult.ok(activityService.getById(id));
     }
     
     
+    @GetMapping("/getInfo1")
+    @ApiOperation(tags = {"小程序-个人中心-活动列表"},value = "活动查看详情")
+    public AjaxResult<TActivity> getInfo1(Integer id) {
+        return AjaxResult.ok(activityService.getById(id));
+    }
     
-    @ApiOperation(tags = {"管理后台-活动管理","小程序-个人中心-活动列表"},value = "活动列表分页查询")
-
-
+    
+    
+    @ApiOperation(tags = {"管理后台-活动管理"},value = "活动列表分页查询")
     @RequiresPermissions(value = {"/activity/list"}, logical = Logical.OR)
     @PostMapping(value = "/pageList")
     public AjaxResult<PageInfo<TActivity>> pageList(@RequestBody AdvertisingDTO dto) {
         return AjaxResult.ok(activityService.pageList(dto));
     }
+    
+    
+    @ApiOperation(tags = {"小程序-个人中心-活动列表"},value = "活动列表分页查询")
+    @PostMapping(value = "/pageList1")
+    public AjaxResult<PageInfo<TActivity>> pageList1(@RequestBody AdvertisingDTO dto) {
+        return AjaxResult.ok(activityService.pageList(dto));
+    }
 }
 
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TIntegralRuleController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TIntegralRuleController.java
index 08fd0dc..16bdb03 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TIntegralRuleController.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TIntegralRuleController.java
@@ -73,11 +73,14 @@
     
     @RequiresPermissions(value = {"/IntegralSetting"}, logical = Logical.OR)
     @GetMapping("/getSet")
-    @ApiOperation(tags = {"管理后台-积分管理","小程序-个人中心-签到"},value = "获取积分设置")
+    @ApiOperation(tags = {"管理后台-积分管理"},value = "获取积分设置")
     public R<TIntegralRule> getSet() {
         TIntegralRule res = integralRuleService.getOne(new QueryWrapper<>());
         return R.ok(res);
     }
+    
+    
+    
     @GetMapping("/getSet1")
     @ApiOperation(tags = {"小程序-个人中心-签到"},value = "获取积分设置")
     public R<TIntegralRule> getSet1() {
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TSystemConfigurationController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TSystemConfigurationController.java
index 05d4c75..8770c49 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TSystemConfigurationController.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TSystemConfigurationController.java
@@ -37,7 +37,7 @@
      * 查看系统设置
      */
     @RequiresPermissions(value = {"/customerServiceInformation", "/systemContentSetting"}, logical = Logical.OR)
-    @ApiOperation(tags = {"小程序-系统设置","后台-内容设置"},value = "联系客服,查询设置")
+    @ApiOperation(tags = {"后台-内容设置"},value = "联系客服,查询设置")
     @GetMapping(value = "/getDetailById")
     public AjaxResult<TSystemConfiguration> getDetailById(@RequestParam("type")@ApiParam(value = "1=客服信息,2=系统设置") Integer type) {
         return AjaxResult.ok(systemConfigurationService.getOne(Wrappers.lambdaQuery(TSystemConfiguration.class)
@@ -45,6 +45,17 @@
     }
     
     
+    /**
+     * 查看系统设置
+     */
+    @ApiOperation(tags = {"小程序-系统设置"},value = "联系客服,查询设置")
+    @GetMapping(value = "/getDetailById1")
+    public AjaxResult<TSystemConfiguration> getDetailById1(@RequestParam("type")@ApiParam(value = "1=客服信息,2=系统设置") Integer type) {
+        return AjaxResult.ok(systemConfigurationService.getOne(Wrappers.lambdaQuery(TSystemConfiguration.class)
+                .eq(TSystemConfiguration::getType, type)));
+    }
+    
+    
     
     @RequiresPermissions(value = {"/customerServiceInformation", "/systemContentSetting"}, logical = Logical.OR)
     @ApiOperation(tags = {"后台-内容设置"},value = "客户信息,系统内容设置")
diff --git a/ruoyi-service/ruoyi-other/src/main/resources/bootstrap.yml b/ruoyi-service/ruoyi-other/src/main/resources/bootstrap.yml
index 61a6efb..f251945 100644
--- a/ruoyi-service/ruoyi-other/src/main/resources/bootstrap.yml
+++ b/ruoyi-service/ruoyi-other/src/main/resources/bootstrap.yml
@@ -89,7 +89,7 @@
     nacos:
       discovery:
         # 开发环境
-#        server-addr: 127.0.0.1:8848 # nacos注册中心地址
+#        server-addr: 127.0.0.1:8848
 #        namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb # 命名空间
 #        group: DEFAULT_GROUP
 #        application: seata-server #Nacos 中 Seata 名称
diff --git a/ruoyi-service/ruoyi-payment/src/main/resources/bootstrap.yml b/ruoyi-service/ruoyi-payment/src/main/resources/bootstrap.yml
index 37a8ee1..c2315ed 100644
--- a/ruoyi-service/ruoyi-payment/src/main/resources/bootstrap.yml
+++ b/ruoyi-service/ruoyi-payment/src/main/resources/bootstrap.yml
@@ -19,7 +19,7 @@
     nacos:
       discovery:
         # 服务注册地址
-        server-addr: 192.168.110.169:8848
+        server-addr: 127.0.0.1:8848
         service: ${spring.application.name}
         group: DEFAULT_GROUP
         namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb
@@ -27,7 +27,7 @@
         password: nacos
       config:
         # 配置中心地址
-        server-addr: 192.168.110.169:8848
+        server-addr: 127.0.0.1:8848
         namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb
         group: DEFAULT_GROUP
         name: ${spring.application.name}
@@ -54,7 +54,7 @@
     type: nacos
     nacos:
       # 开发环境
-#      server-addr: 192.168.110.169:8848
+#      server-addr: 127.0.0.1:8848
 #      namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb
 #      group: DEFAULT_GROUP
 #      data-id: seata-server.properties
@@ -72,7 +72,7 @@
     nacos:
       application: seata-server
       # 开发环境
-#      server-addr: 192.168.110.169:8848
+#      server-addr: 127.0.0.1:8848
 #      namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb
 #      group: DEFAULT_GROUP
 #      username: nacos
@@ -87,7 +87,7 @@
     nacos:
       discovery:
         # 开发环境
-#        server-addr: 192.168.110.169:8848 # nacos注册中心地址
+#        server-addr: 127.0.0.1:8848 # nacos注册中心地址
 #        namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb # 命名空间
 #        group: DEFAULT_GROUP
 #        application: seata-server #Nacos 中 Seata 名称

--
Gitblit v1.7.1