From 0911582d2f80e7f3162fb6d0b59ee12e23de133b Mon Sep 17 00:00:00 2001
From: luodangjia <luodangjia>
Date: 星期四, 17 十月 2024 09:39:05 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/WxLoginController.java                         |   10 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java                   |  236 ++++++++++++------
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/InfoCouponDto.java                                |    1 
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/wx/tools/WxAppletTools.java                               |   11 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/TransactionRecord.java                  |   64 +++-
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingRecordController.java        |   28 ++
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java      |  132 +++++----
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderAccountingStrategyServiceImpl.java |   15 
 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/model/TransactionRecordMessage.java        |   64 +++-
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderEvaluateServiceImpl.java                   |   50 ++-
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyController.java   |   17 +
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java                        |    1 
 ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml                                    |   12 
 ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/controller/WxPayController.java                           |   10 
 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TransactionRecordMessageVO.java                        |   64 +++-
 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/listener/IotMessageListener.java      |    5 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java                      |    7 
 17 files changed, 482 insertions(+), 245 deletions(-)

diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/InfoCouponDto.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/InfoCouponDto.java
index 083e79f..bfc5838 100644
--- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/InfoCouponDto.java
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/InfoCouponDto.java
@@ -20,6 +20,7 @@
     @TableField("name")
     private String name;
     private Integer type;
+    private Integer couponId;
     @ApiModelProperty(value = "优惠方式(1=满减,2=抵扣)")
     @TableField("preferential_mode")
     private Integer preferentialMode;
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/TransactionRecord.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/TransactionRecord.java
index b25fd4a..82129ee 100644
--- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/TransactionRecord.java
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/TransactionRecord.java
@@ -20,22 +20,6 @@
     private String charging_gun_code;// 抢号
     private String start_time;// 开始时间
     private String end_time;// 结束时间
-    private BigDecimal sharp_peak_unit_price;// 尖单价
-    private BigDecimal sharp_peak_charge;// 尖电量
-    private BigDecimal loss_sharp_peak_charge;// 计损尖电量
-    private BigDecimal sharp_peak_amount;// 尖金额
-    private BigDecimal peak_unit_price;// 峰单价
-    private BigDecimal peak_charge;// 峰电量
-    private BigDecimal loss_peak_charge;// 计损峰电量
-    private BigDecimal peak_amount;// 峰金额
-    private BigDecimal flat_peak_unit_price;// 平单价
-    private BigDecimal flat_peak_charge;// 平电量
-    private BigDecimal loss_flat_peak_charge;// 计损平电量
-    private BigDecimal flat_peak_amount;// 平金额
-    private BigDecimal low_peak_unit_price;// 谷单价
-    private BigDecimal low_peak_charge;// 谷电量
-    private BigDecimal loss_low_peak_charge;// 计损谷电量
-    private BigDecimal low_peak_amount;// 谷金额
     private BigDecimal total_initial_value;// 电表总起值
     private BigDecimal total_stop_value;// 电表总止值
     private BigDecimal total_electricity;// 总电量
@@ -46,6 +30,54 @@
     private String trade_date;// 交易日期、时间
     private Integer stop_reason;// 停止原因
     private String physical_card_number;// 物理卡号
+    private String time1;// 计费时段
+    private BigDecimal sharp_peak_charge1;// 电量
+    private BigDecimal loss_sharp_peak_charge1;// 计损电量
+    private BigDecimal sharp_peak_amount1;// 金额
+    private String time2;// 计费时段
+    private BigDecimal sharp_peak_charge2;// 电量
+    private BigDecimal loss_sharp_peak_charge2;// 计损电量
+    private BigDecimal sharp_peak_amount2;// 金额
+    private String time3;// 计费时段
+    private BigDecimal sharp_peak_charge3;// 电量
+    private BigDecimal loss_sharp_peak_charge3;// 计损电量
+    private BigDecimal sharp_peak_amount3;// 金额
+    private String time4;// 计费时段
+    private BigDecimal sharp_peak_charge4;// 电量
+    private BigDecimal loss_sharp_peak_charge4;// 计损电量
+    private BigDecimal sharp_peak_amount4;// 金额
+    private String time5;// 计费时段
+    private BigDecimal sharp_peak_charge5;// 电量
+    private BigDecimal loss_sharp_peak_charge5;// 计损电量
+    private BigDecimal sharp_peak_amount5;// 金额
+    private String time6;// 计费时段
+    private BigDecimal sharp_peak_charge6;// 电量
+    private BigDecimal loss_sharp_peak_charge6;// 计损电量
+    private BigDecimal sharp_peak_amount6;// 金额
+    private String time7;// 计费时段
+    private BigDecimal sharp_peak_charge7;// 电量
+    private BigDecimal loss_sharp_peak_charge7;// 计损电量
+    private BigDecimal sharp_peak_amount7;// 金额
+    private String time8;// 计费时段
+    private BigDecimal sharp_peak_charge8;// 电量
+    private BigDecimal loss_sharp_peak_charge8;// 计损电量
+    private BigDecimal sharp_peak_amount8;// 金额
+    private String time9;// 计费时段
+    private BigDecimal sharp_peak_charge9;// 电量
+    private BigDecimal loss_sharp_peak_charge9;// 计损电量
+    private BigDecimal sharp_peak_amount9;// 金额
+    private String time10;// 计费时段
+    private BigDecimal sharp_peak_charge10;// 电量
+    private BigDecimal loss_sharp_peak_charge10;// 计损电量
+    private BigDecimal sharp_peak_amount10;// 金额
+    private String time11;// 计费时段
+    private BigDecimal sharp_peak_charge11;// 电量
+    private BigDecimal loss_sharp_peak_charge11;// 计损电量
+    private BigDecimal sharp_peak_amount11;// 金额
+    private String time12;// 计费时段
+    private BigDecimal sharp_peak_charge12;// 电量
+    private BigDecimal loss_sharp_peak_charge12;// 计损电量
+    private BigDecimal sharp_peak_amount12;// 金额
 
 
 }
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TransactionRecordMessageVO.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TransactionRecordMessageVO.java
index 7a6ce29..60b2b07 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TransactionRecordMessageVO.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TransactionRecordMessageVO.java
@@ -16,22 +16,6 @@
     private String charging_gun_code;// 抢号
     private String start_time;// 开始时间
     private String end_time;// 结束时间
-    private BigDecimal sharp_peak_unit_price;// 尖单价
-    private BigDecimal sharp_peak_charge;// 尖电量
-    private BigDecimal loss_sharp_peak_charge;// 计损尖电量
-    private BigDecimal sharp_peak_amount;// 尖金额
-    private BigDecimal peak_unit_price;// 峰单价
-    private BigDecimal peak_charge;// 峰电量
-    private BigDecimal loss_peak_charge;// 计损峰电量
-    private BigDecimal peak_amount;// 峰金额
-    private BigDecimal flat_peak_unit_price;// 平单价
-    private BigDecimal flat_peak_charge;// 平电量
-    private BigDecimal loss_flat_peak_charge;// 计损平电量
-    private BigDecimal flat_peak_amount;// 平金额
-    private BigDecimal low_peak_unit_price;// 谷单价
-    private BigDecimal low_peak_charge;// 谷电量
-    private BigDecimal loss_low_peak_charge;// 计损谷电量
-    private BigDecimal low_peak_amount;// 谷金额
     private BigDecimal total_initial_value;// 电表总起值
     private BigDecimal total_stop_value;// 电表总止值
     private BigDecimal total_electricity;// 总电量
@@ -42,6 +26,54 @@
     private String trade_date;// 交易日期、时间
     private Integer stop_reason;// 停止原因
     private String physical_card_number;// 物理卡号
+    private String time1;// 计费时段
+    private BigDecimal sharp_peak_charge1;// 电量
+    private BigDecimal loss_sharp_peak_charge1;// 计损电量
+    private BigDecimal sharp_peak_amount1;// 金额
+    private String time2;// 计费时段
+    private BigDecimal sharp_peak_charge2;// 电量
+    private BigDecimal loss_sharp_peak_charge2;// 计损电量
+    private BigDecimal sharp_peak_amount2;// 金额
+    private String time3;// 计费时段
+    private BigDecimal sharp_peak_charge3;// 电量
+    private BigDecimal loss_sharp_peak_charge3;// 计损电量
+    private BigDecimal sharp_peak_amount3;// 金额
+    private String time4;// 计费时段
+    private BigDecimal sharp_peak_charge4;// 电量
+    private BigDecimal loss_sharp_peak_charge4;// 计损电量
+    private BigDecimal sharp_peak_amount4;// 金额
+    private String time5;// 计费时段
+    private BigDecimal sharp_peak_charge5;// 电量
+    private BigDecimal loss_sharp_peak_charge5;// 计损电量
+    private BigDecimal sharp_peak_amount5;// 金额
+    private String time6;// 计费时段
+    private BigDecimal sharp_peak_charge6;// 电量
+    private BigDecimal loss_sharp_peak_charge6;// 计损电量
+    private BigDecimal sharp_peak_amount6;// 金额
+    private String time7;// 计费时段
+    private BigDecimal sharp_peak_charge7;// 电量
+    private BigDecimal loss_sharp_peak_charge7;// 计损电量
+    private BigDecimal sharp_peak_amount7;// 金额
+    private String time8;// 计费时段
+    private BigDecimal sharp_peak_charge8;// 电量
+    private BigDecimal loss_sharp_peak_charge8;// 计损电量
+    private BigDecimal sharp_peak_amount8;// 金额
+    private String time9;// 计费时段
+    private BigDecimal sharp_peak_charge9;// 电量
+    private BigDecimal loss_sharp_peak_charge9;// 计损电量
+    private BigDecimal sharp_peak_amount9;// 金额
+    private String time10;// 计费时段
+    private BigDecimal sharp_peak_charge10;// 电量
+    private BigDecimal loss_sharp_peak_charge10;// 计损电量
+    private BigDecimal sharp_peak_amount10;// 金额
+    private String time11;// 计费时段
+    private BigDecimal sharp_peak_charge11;// 电量
+    private BigDecimal loss_sharp_peak_charge11;// 计损电量
+    private BigDecimal sharp_peak_amount11;// 金额
+    private String time12;// 计费时段
+    private BigDecimal sharp_peak_charge12;// 电量
+    private BigDecimal loss_sharp_peak_charge12;// 计损电量
+    private BigDecimal sharp_peak_amount12;// 金额
 
 
 }
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 839c11a..0225dae 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
@@ -639,6 +639,7 @@
                 InfoCouponDto infoCouponDto = new InfoCouponDto();
                 BeanUtils.copyProperties(coupon, infoCouponDto);
                 infoCouponDto.setId(tAppCoupon.getId().toString());
+                infoCouponDto.setCouponId(coupon.getId());
                 infoCouponDto.setEndTime(tAppCoupon.getEndTime());
                 couponDtos1.add(infoCouponDto);
 
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/WxLoginController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/WxLoginController.java
index 43741a2..4a70696 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/WxLoginController.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/WxLoginController.java
@@ -38,6 +38,7 @@
 import org.springframework.web.client.RestTemplate;
 import org.springframework.web.multipart.MultipartFile;
 
+import javax.annotation.Resource;
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.io.InputStream;
@@ -64,6 +65,9 @@
     private WeixinProperties wxConfig;
     @Autowired
     private RestTemplate wxRestTemplate;
+    @Resource
+    private RedisService redisService;
+
     /**
      * 上传文件存储在本地的根路径
      */
@@ -77,7 +81,7 @@
     @PostMapping("/openIdByJsCode")
     public AjaxResult<Map<String, Object>> openIdByJsCode(@RequestBody AppletUserEncrypteData data) {
         log.info("<<<<<<<<换取openid开始<<<<<<<<:{}", data.getCode());
-        WxAppletTools appletTools = new WxAppletTools(wxRestTemplate, wxConfig);
+        WxAppletTools appletTools = new WxAppletTools(wxRestTemplate, wxConfig, redisService);
         Code2SessionRespBody body = appletTools.getOpenIdByJscode2session(new Code2SessionResqBody().build(data.getCode()));
         String openid = body.getOpenid();
         String sessionKey = body.getSessionKey();
@@ -114,7 +118,7 @@
     public AjaxResult getQRCode() {
         InputStream inputStream = null;
         OutputStream outputStream = null;
-        WxAppletTools appletTools = new WxAppletTools(wxRestTemplate, wxConfig);
+        WxAppletTools appletTools = new WxAppletTools(wxRestTemplate, wxConfig, redisService);
         String accessToken = appletTools.getAccessToken("");
         try {
             String url = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=" + accessToken;
@@ -171,7 +175,7 @@
      */
     @PostMapping("/getWXToken")
     public R<String> getWXToken(){
-        WxAppletTools appletTools = new WxAppletTools(wxRestTemplate, wxConfig);
+        WxAppletTools appletTools = new WxAppletTools(wxRestTemplate, wxConfig, redisService);
         String accessToken = appletTools.getAccessToken("");
         return R.ok(accessToken);
     }
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/wx/tools/WxAppletTools.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/wx/tools/WxAppletTools.java
index 6f19eea..73f4a40 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/wx/tools/WxAppletTools.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/wx/tools/WxAppletTools.java
@@ -4,12 +4,14 @@
 import com.ruoyi.account.wx.body.resp.Code2SessionRespBody;
 import com.ruoyi.account.wx.body.resq.Code2SessionResqBody;
 import com.ruoyi.account.wx.model.WeixinProperties;
+import com.ruoyi.common.redis.service.RedisService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Component;
 import org.springframework.util.StringUtils;
 import org.springframework.web.client.RestTemplate;
 
 import java.text.MessageFormat;
+import java.util.concurrent.TimeUnit;
 
 /**
  * @author xiaochen
@@ -57,11 +59,12 @@
     public static String ACCESS_TOKEN_URL = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}";
     private WeixinProperties wxConfig;
     private RestTemplate wxRestTemplate;
-    private WxCacheTemplate<String> wxCacheTemplate;
+    private RedisService redisService;
 
-    public WxAppletTools(RestTemplate wxRestTemplate, WeixinProperties wxConfig) {
+    public WxAppletTools(RestTemplate wxRestTemplate, WeixinProperties wxConfig, RedisService redisService) {
         this.wxRestTemplate = wxRestTemplate;
         this.wxConfig = wxConfig;
+        this.redisService = redisService;
     }
 
     /**
@@ -101,7 +104,7 @@
      * @return
      */
     public String getAccessToken(String version) {
-        String accessToken = wxCacheTemplate.getKey(ACCESSTOKEN_CACHE_KEY + version);
+        String accessToken = redisService.getCacheObject(ACCESSTOKEN_CACHE_KEY + version);
         if (StringUtils.hasLength(accessToken)) {
             return accessToken;
         }
@@ -113,7 +116,7 @@
             // 抛出错误
             throw new WxException(accessTokenRespBody.getErrorCode() + ":" + accessTokenRespBody.getErrorMsg());
         }
-        wxCacheTemplate.setKey(ACCESSTOKEN_CACHE_KEY + version, accessTokenRespBody.getAccessToken());
+        redisService.setCacheObject(ACCESSTOKEN_CACHE_KEY + version, accessTokenRespBody.getAccessToken(), 7200L, TimeUnit.SECONDS);
         return accessTokenRespBody.getAccessToken();
     }
 
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 0e418d1..94abbc7 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
@@ -114,6 +114,13 @@
         Long userId = SecurityUtils.getLoginUser().getUserid();
         dto.setUserId(userId);
         accountingStrategyService.save(dto);
+        if(null != dto.getSiteId()){
+            //下发硬件数据
+            List<TChargingPile> list = chargingPileService.lambdaQuery().eq(TChargingPile::getSiteId, dto.getSiteId()).list();
+            for (TChargingPile tChargingPile : list) {
+                integrationClient.setupBillingModel1(tChargingPile.getCode());
+            }
+        }
         // 添加明细
         dto.getAccountingStrategyDetails().forEach(detail -> detail.setAccountingStrategyId(dto.getId()));
         accountingStrategyDetailService.saveBatch(dto.getAccountingStrategyDetails());
@@ -165,6 +172,11 @@
                     detail.setId(null);
                 });
                 accountingStrategyDetailService.saveBatch(accountingStrategyDetails);
+            }
+            //下发硬件数据
+            List<TChargingPile> list = chargingPileService.lambdaQuery().eq(TChargingPile::getSiteId, dto.getSiteId()).list();
+            for (TChargingPile tChargingPile : list) {
+                integrationClient.setupBillingModel1(tChargingPile.getCode());
             }
         }else {
             // 删除计费策略明细信息
@@ -342,14 +354,11 @@
                     byId1.setAccountingStrategyId(byId.getId());
                     siteService.updateById(byId1);
                 }
-
                 //硬件
-                 List<TChargingPile> list = chargingPileService.lambdaQuery().eq(TChargingPile::getSiteId, byId.getSiteId()).list();
+                List<TChargingPile> list = chargingPileService.lambdaQuery().eq(TChargingPile::getSiteId, byId.getSiteId()).list();
                 for (TChargingPile tChargingPile : list) {
                     integrationClient.setupBillingModel1(tChargingPile.getCode());
                 }
-
-
             }
         }else {
             if (byId.getAuditStatus()==1){
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingRecordController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingRecordController.java
index a663380..06fad07 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingRecordController.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingRecordController.java
@@ -318,6 +318,34 @@
         return R.ok(tParkLotRecordCountVo);
 
     }
+    @ResponseBody
+    @PostMapping(value = "/parking/work1")
+    @ApiOperation(value = "停车订单统计", tags = {"管理后台-工作台"})
+    public R<TParkLotRecordCountVo> work1(@RequestBody ParkingRecordQueryDto parkingRecordQueryDto){
+        List<TParkingRecord> list = parkingRecordService.lambdaQuery().eq(parkingRecordQueryDto.getParkingLotId() != null, TParkingRecord::getParkingLotId, parkingRecordQueryDto.getParkingLotId())
+                .between(TParkingRecord::getCreateTime, parkingRecordQueryDto.getStartTime(), parkingRecordQueryDto.getEndTime()).list();
+        int count1 = list.size();
+        //统计出list中chargingOrderId为null的数据个数
+        int count2 = list.stream().filter(item -> item.getChargingOrderId() == null).collect(Collectors.toList()).size();
+        int count3 = count1-count2;
+        //计算出list中parkingDuration的总和
+        int count4 = 0;
+        for (TParkingRecord tParkingRecord : list) {
+            count4 = count4+tParkingRecord.getParkingDuration();
+        }
+        //计算出list中orderAmount的总和
+        BigDecimal count5 = list.stream().map(TParkingRecord::getOrderAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+
+        TParkLotRecordCountVo tParkLotRecordCountVo = new TParkLotRecordCountVo();
+        tParkLotRecordCountVo.setCount1(count1);
+        tParkLotRecordCountVo.setCount2(count2);
+        tParkLotRecordCountVo.setCount3(count3);
+        tParkLotRecordCountVo.setCount4(count4);
+        tParkLotRecordCountVo.setCount5(count5);
+
+        return R.ok(tParkLotRecordCountVo);
+
+    }
 
     @ResponseBody
     @PostMapping(value = "/parking/income")
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 e63b804..cddd92b 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
@@ -262,7 +262,7 @@
 			//调用华为Iot删除设备
 			if(StringUtils.isNotEmpty(chargingPile.getIotdDeviceId())){
 				DeleteDeviceResp deviceResp = iotInterfaceClient.deleteDevice(chargingPile.getIotdDeviceId()).getData();
-				if(null != deviceResp && deviceResp.getHttpStatusCode() == 201){
+				if(null != deviceResp && deviceResp.getHttpStatusCode() == 0){
 					this.removeById(chargingPile);
 				}
 			}
@@ -320,7 +320,7 @@
 	public ChargeMonitoring chargeMonitoring(Integer siteId) {
 		//获取当前登录账户的站点权限数据
 		Set<Integer> siteIds = new HashSet<>();
-		if(null == siteId){
+		if(0 == siteId){
 			SysUser sysUser = sysUserClient.getSysUser(SecurityUtils.getUserId()).getData();
 			Integer roleType = sysUser.getRoleType();
 			Integer objectId = sysUser.getObjectId();
@@ -334,12 +334,20 @@
                     List<Integer> data1 = roleSiteClient.getSiteIds(data2.get(0).getRoleId()).getData();
 					data.addAll(data1);
 					siteIds = new HashSet<>(data);
+				}else{
+					siteIds = null;
 				}
 			}
 		}else{
 			siteIds.add(siteId);
 		}
-		List<Site> sites = siteService.listByIds(siteIds);
+		List<Site> sites = null;
+		if(null == siteIds){
+			sites = siteService.list(new LambdaQueryWrapper<Site>().eq(Site::getDelFlag, 0));
+			siteIds = sites.stream().map(Site::getId).collect(Collectors.toSet());
+		}else{
+			sites = siteService.listByIds(siteIds);
+		}
 		List<TChargingGun> total = chargingGunService.list(new LambdaQueryWrapper<TChargingGun>().in(TChargingGun::getSiteId, siteIds).eq(TChargingGun::getDelFlag, 0));
 		List<TChargingGun> charging = chargingGunService.list(new LambdaQueryWrapper<TChargingGun>().in(TChargingGun::getSiteId, siteIds).eq(TChargingGun::getStatus, 4).eq(TChargingGun::getDelFlag, 0));
 		BigDecimal ratedPower = total.stream().map(TChargingGun::getRatedPower).reduce(BigDecimal.ZERO, BigDecimal::add);
@@ -361,9 +369,9 @@
 		}
 
 		List<String> dates = new ArrayList<>();
-		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MMM-dd");
-		Calendar calendar = Calendar.getInstance();
+		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
 		for (int i = 6; i >= 0; i--) {
+			Calendar calendar = Calendar.getInstance();
 			calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) - i);
 			dates.add(sdf.format(calendar.getTime()));
 		}
@@ -382,7 +390,7 @@
 			if(list.size() == 0){
 				value2.add(0D);
 			}else{
-				Double datum1 = new BigDecimal(datum).divide(new BigDecimal(list.size()).multiply(v).multiply(new BigDecimal(24))).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue();
+				Double datum1 = new BigDecimal(datum).divide(new BigDecimal(list.size()).multiply(v).multiply(new BigDecimal(24)), new MathContext(4, RoundingMode.HALF_EVEN)).multiply(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue();
 				value2.add(datum1);
 			}
 		}
@@ -404,7 +412,7 @@
 	public ChargingGunCountMonitoring getChargingGunCountMonitoring(Integer siteId) {
 		//获取当前登录账户的站点权限数据
 		Set<Integer> siteIds = new HashSet<>();
-		if(null == siteId){
+		if(0 == siteId){
 			SysUser sysUser = sysUserClient.getSysUser(SecurityUtils.getUserId()).getData();
 			Integer roleType = sysUser.getRoleType();
 			Integer objectId = sysUser.getObjectId();
@@ -418,6 +426,9 @@
                     List<Integer> data1 = roleSiteClient.getSiteIds(data2.get(0).getRoleId()).getData();
 					data.addAll(data1);
 					siteIds = new HashSet<>(data);
+				}else{
+					List<Site> list = siteService.list(new LambdaQueryWrapper<Site>().eq(Site::getDelFlag, 0));
+					siteIds = list.stream().map(Site::getId).collect(Collectors.toSet());
 				}
 			}
 		}else{
@@ -452,7 +463,7 @@
 	public PageInfo<ChargingGunMonitoring> getChargingGunMonitoring(GetChargingGunMonitoring query) {
 		//获取当前登录账户的站点权限数据
 		Set<Integer> siteIds = new HashSet<>();
-		if(null == query.getSiteId()){
+		if(0 == query.getSiteId()){
 			SysUser sysUser = sysUserClient.getSysUser(SecurityUtils.getUserId()).getData();
 			Integer roleType = sysUser.getRoleType();
 			Integer objectId = sysUser.getObjectId();
@@ -466,6 +477,9 @@
                     List<Integer> data1 = roleSiteClient.getSiteIds(data2.get(0).getRoleId()).getData();
 					data.addAll(data1);
 					siteIds = new HashSet<>(data);
+				}else{
+					List<Site> list = siteService.list(new LambdaQueryWrapper<Site>().eq(Site::getDelFlag, 0));
+					siteIds = list.stream().map(Site::getId).collect(Collectors.toSet());
 				}
 			}
 		}else{
@@ -489,62 +503,60 @@
 				Integer id = gunMonitoring.getId();
 				//根据订单数据查询车牌号
 				TChargingOrder chargingOrder = chargingOrderClient.getOrderDetailByGunId(id).getData();
-				Long appUserCarId = chargingOrder.getAppUserCarId();
-				if(null != appUserCarId){
+				if(null != chargingOrder){
+					Long appUserCarId = chargingOrder.getAppUserCarId();
 					TAppUserCar tAppUserCar = appUserCarClient.getCarByIds(Arrays.asList(appUserCarId)).getData().get(0);
 					gunMonitoring.setLicensePlate(tAppUserCar.getLicensePlate());
-				}
-				
-				UploadRealTimeMonitoringData data = uploadRealTimeMonitoringDataClient.chargingOrderInfo(chargingOrder.getCode()).getData();
-				gunMonitoring.setChargingRatio(BigDecimal.valueOf(data.getSoc()));
-				gunMonitoring.setElectricQuantity(data.getCharging_degree().toString());
-				gunMonitoring.setSoc(data.getSoc().toString());
-				gunMonitoring.setElectricCurrent(data.getOutput_current().toString());
-				gunMonitoring.setVoltage(data.getOutput_voltage().toString());
-				switch (data.getHardware_fault()){
-					case 1:
-						gunMonitoring.setFaultCause("急停按钮动作故障");
-						break;
-					case 2:
-						gunMonitoring.setFaultCause("无可用整流模块");
-						break;
-					case 3:
-						gunMonitoring.setFaultCause("出风口温度过高");
-						break;
-					case 4:
-						gunMonitoring.setFaultCause("交流防雷故障");
-						break;
-					case 5:
-						gunMonitoring.setFaultCause("交直流模块 DC20 通信中断");
-						break;
-					case 6:
-						gunMonitoring.setFaultCause("绝缘检测模块 FC08 通信中断");
-						break;
-					case 7:
-						gunMonitoring.setFaultCause("电度表通信中断");
-						break;
-					case 8:
-						gunMonitoring.setFaultCause("读卡器通信中断");
-						break;
-					case 9:
-						gunMonitoring.setFaultCause("RC10 通信中断");
-						break;
-					case 10:
-						gunMonitoring.setFaultCause("风扇调速板故障");
-						break;
-					case 11:
-						gunMonitoring.setFaultCause("直流熔断器故障");
-						break;
-					case 12:
-						gunMonitoring.setFaultCause("高压接触器故障");
-						break;
-					case 13:
-						gunMonitoring.setFaultCause("门打开");
-						break;
+
+					UploadRealTimeMonitoringData data = uploadRealTimeMonitoringDataClient.chargingOrderInfo(chargingOrder.getCode()).getData();
+					gunMonitoring.setChargingRatio(BigDecimal.valueOf(data.getSoc()));
+					gunMonitoring.setElectricQuantity(data.getCharging_degree().toString());
+					gunMonitoring.setSoc(data.getSoc().toString());
+					gunMonitoring.setElectricCurrent(data.getOutput_current().toString());
+					gunMonitoring.setVoltage(data.getOutput_voltage().toString());
+					switch (data.getHardware_fault()){
+						case 1:
+							gunMonitoring.setFaultCause("急停按钮动作故障");
+							break;
+						case 2:
+							gunMonitoring.setFaultCause("无可用整流模块");
+							break;
+						case 3:
+							gunMonitoring.setFaultCause("出风口温度过高");
+							break;
+						case 4:
+							gunMonitoring.setFaultCause("交流防雷故障");
+							break;
+						case 5:
+							gunMonitoring.setFaultCause("交直流模块 DC20 通信中断");
+							break;
+						case 6:
+							gunMonitoring.setFaultCause("绝缘检测模块 FC08 通信中断");
+							break;
+						case 7:
+							gunMonitoring.setFaultCause("电度表通信中断");
+							break;
+						case 8:
+							gunMonitoring.setFaultCause("读卡器通信中断");
+							break;
+						case 9:
+							gunMonitoring.setFaultCause("RC10 通信中断");
+							break;
+						case 10:
+							gunMonitoring.setFaultCause("风扇调速板故障");
+							break;
+						case 11:
+							gunMonitoring.setFaultCause("直流熔断器故障");
+							break;
+						case 12:
+							gunMonitoring.setFaultCause("高压接触器故障");
+							break;
+						case 13:
+							gunMonitoring.setFaultCause("门打开");
+							break;
+					}
 				}
 			}
-			
-			
 		}
 		return pageInfo.setRecords(chargingGunMonitoring);
 	}
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 4648622..bee2a20 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
@@ -381,9 +381,8 @@
     }
 
     @ApiOperation(value = "计费模型设置",tags = {"硬件接口"})
-    @GetMapping(value = "/setupBillingModel")
-    public R setupBillingModel(String deviceId) {
-        // TODO 罗  计费模型设置
+    @PostMapping(value = "/setupBillingModel")
+    public R setupBillingModel(@RequestParam("deviceId") String deviceId) {
         SetupBillingModel setupBillingModel = new SetupBillingModel();
         // 计费模型
         List<TAccountingStrategyDetail> accountingStrategyDetails = accountingStrategyDetailClient.getDetailListByCode(deviceId).getData();
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/model/TransactionRecordMessage.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/model/TransactionRecordMessage.java
index 5d8eb09..011abde 100644
--- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/model/TransactionRecordMessage.java
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/model/TransactionRecordMessage.java
@@ -19,22 +19,6 @@
     private String charging_gun_code;// 抢号
     private String start_time;// 开始时间
     private String end_time;// 结束时间
-    private BigDecimal sharp_peak_unit_price;// 尖单价
-    private BigDecimal sharp_peak_charge;// 尖电量
-    private BigDecimal loss_sharp_peak_charge;// 计损尖电量
-    private BigDecimal sharp_peak_amount;// 尖金额
-    private BigDecimal peak_unit_price;// 峰单价
-    private BigDecimal peak_charge;// 峰电量
-    private BigDecimal loss_peak_charge;// 计损峰电量
-    private BigDecimal peak_amount;// 峰金额
-    private BigDecimal flat_peak_unit_price;// 平单价
-    private BigDecimal flat_peak_charge;// 平电量
-    private BigDecimal loss_flat_peak_charge;// 计损平电量
-    private BigDecimal flat_peak_amount;// 平金额
-    private BigDecimal low_peak_unit_price;// 谷单价
-    private BigDecimal low_peak_charge;// 谷电量
-    private BigDecimal loss_low_peak_charge;// 计损谷电量
-    private BigDecimal low_peak_amount;// 谷金额
     private BigDecimal total_initial_value;// 电表总起值
     private BigDecimal total_stop_value;// 电表总止值
     private BigDecimal total_electricity;// 总电量
@@ -45,6 +29,54 @@
     private String trade_date;// 交易日期、时间
     private Integer stop_reason;// 停止原因
     private String physical_card_number;// 物理卡号
+    private String time1;// 计费时段
+    private BigDecimal sharp_peak_charge1;// 电量
+    private BigDecimal loss_sharp_peak_charge1;// 计损电量
+    private BigDecimal sharp_peak_amount1;// 金额
+    private String time2;// 计费时段
+    private BigDecimal sharp_peak_charge2;// 电量
+    private BigDecimal loss_sharp_peak_charge2;// 计损电量
+    private BigDecimal sharp_peak_amount2;// 金额
+    private String time3;// 计费时段
+    private BigDecimal sharp_peak_charge3;// 电量
+    private BigDecimal loss_sharp_peak_charge3;// 计损电量
+    private BigDecimal sharp_peak_amount3;// 金额
+    private String time4;// 计费时段
+    private BigDecimal sharp_peak_charge4;// 电量
+    private BigDecimal loss_sharp_peak_charge4;// 计损电量
+    private BigDecimal sharp_peak_amount4;// 金额
+    private String time5;// 计费时段
+    private BigDecimal sharp_peak_charge5;// 电量
+    private BigDecimal loss_sharp_peak_charge5;// 计损电量
+    private BigDecimal sharp_peak_amount5;// 金额
+    private String time6;// 计费时段
+    private BigDecimal sharp_peak_charge6;// 电量
+    private BigDecimal loss_sharp_peak_charge6;// 计损电量
+    private BigDecimal sharp_peak_amount6;// 金额
+    private String time7;// 计费时段
+    private BigDecimal sharp_peak_charge7;// 电量
+    private BigDecimal loss_sharp_peak_charge7;// 计损电量
+    private BigDecimal sharp_peak_amount7;// 金额
+    private String time8;// 计费时段
+    private BigDecimal sharp_peak_charge8;// 电量
+    private BigDecimal loss_sharp_peak_charge8;// 计损电量
+    private BigDecimal sharp_peak_amount8;// 金额
+    private String time9;// 计费时段
+    private BigDecimal sharp_peak_charge9;// 电量
+    private BigDecimal loss_sharp_peak_charge9;// 计损电量
+    private BigDecimal sharp_peak_amount9;// 金额
+    private String time10;// 计费时段
+    private BigDecimal sharp_peak_charge10;// 电量
+    private BigDecimal loss_sharp_peak_charge10;// 计损电量
+    private BigDecimal sharp_peak_amount10;// 金额
+    private String time11;// 计费时段
+    private BigDecimal sharp_peak_charge11;// 电量
+    private BigDecimal loss_sharp_peak_charge11;// 计损电量
+    private BigDecimal sharp_peak_amount11;// 金额
+    private String time12;// 计费时段
+    private BigDecimal sharp_peak_charge12;// 电量
+    private BigDecimal loss_sharp_peak_charge12;// 计损电量
+    private BigDecimal sharp_peak_amount12;// 金额
 
 
 }
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 3636697..3b12a92 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
@@ -585,7 +585,7 @@
      */
     @PostMapping("/endChargeBillingCharge")
     public void endChargeBillingCharge(@RequestBody TransactionRecordMessageVO vo){
-        log.error("-------------------停止充电返回账单后计算费用-------------------:" + vo);
+        log.error("-------------------停止充电返回账单后计算费用及修改业务状态-------------------:" + vo);
         chargingOrderService.endChargeBillingCharge(vo);
     }
     
@@ -713,7 +713,10 @@
         for (UploadRealTimeMonitoringData uploadRealTimeMonitoringData : data1) {
             ChargingOrderAndUploadRealTimeMonitoringDataDto dataDto = new ChargingOrderAndUploadRealTimeMonitoringDataDto();
             BeanUtils.copyProperties(uploadRealTimeMonitoringData,dataDto);
-            BeanUtils.copyProperties(map.get(uploadRealTimeMonitoringData.getCharging_pile_code()),dataDto);
+            TChargingOrder tChargingOrder = map.get(uploadRealTimeMonitoringData.getCharging_pile_code());
+            if (tChargingOrder!=null) {
+                BeanUtils.copyProperties(tChargingOrder, dataDto);
+            }
             dtos.add(dataDto);
         }
 
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderAccountingStrategyServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderAccountingStrategyServiceImpl.java
index f242070..cff3804 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderAccountingStrategyServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderAccountingStrategyServiceImpl.java
@@ -13,8 +13,10 @@
 import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
+import java.text.DateFormat;
 import java.text.SimpleDateFormat;
 import java.time.Duration;
+import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.util.stream.Collectors;
 import java.util.stream.LongStream;
@@ -43,19 +45,20 @@
 	@Override
 	public List<List<Map<String, Object>>> getTotalElectricQuantity(Integer days, Set<Integer> siteIds) {
 		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+		DateTimeFormatter sdf1 = DateTimeFormatter.ofPattern("yyyy-MM-dd");
 		Calendar calendar = Calendar.getInstance();
 		calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) - days);
 		String startTime = sdf.format(calendar.getTime()) + " 00:00:00";
 		List<TChargingOrder> list = chargingOrderService.list(new LambdaQueryWrapper<TChargingOrder>().in(TChargingOrder::getSiteId, siteIds).eq(TChargingOrder::getStatus, 5)
-				.eq(TChargingOrder::getDelFlag, 0).last(" and end_time between '" + startTime + "' and DATE_FORMAT('%Y-%m-%d %H:%i:%s', now())"));
+				.eq(TChargingOrder::getDelFlag, 0).last(" and start_time between '" + startTime + "' and DATE_FORMAT(now(), '%Y-%m-%d %H:%i:%s')"));
 		List<Long> orderId = list.stream().map(TChargingOrder::getId).collect(Collectors.toList());
 		List<TChargingOrderAccountingStrategy> list1 = this.list(new LambdaQueryWrapper<TChargingOrderAccountingStrategy>().in(TChargingOrderAccountingStrategy::getChargingOrderId, orderId));
 		
 		List<List<Map<String, Object>>> list2 = new ArrayList<>();
-		Calendar nowDateTime = Calendar.getInstance();
 		for (int i = days; i >= 0; i--) {
+			Calendar nowDateTime = Calendar.getInstance();
 			nowDateTime.set(Calendar.DAY_OF_YEAR, nowDateTime.get(Calendar.DAY_OF_YEAR) - i);
-			List<TChargingOrder> collect = list.stream().filter(s -> sdf.format(s.getEndTime()).equals(sdf.format(nowDateTime.getTime()))).collect(Collectors.toList());
+			List<TChargingOrder> collect = list.stream().filter(s -> s.getStartTime().format(sdf1).equals(sdf.format(nowDateTime.getTime()))).collect(Collectors.toList());
 			List<Long> orderIds = collect.stream().map(TChargingOrder::getId).collect(Collectors.toList());
 			
 			
@@ -105,15 +108,15 @@
 		calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) - days);
 		String startTime = sdf.format(calendar.getTime()) + " 00:00:00";
 		List<TChargingOrder> list = chargingOrderService.list(new LambdaQueryWrapper<TChargingOrder>().in(TChargingOrder::getSiteId, siteIds).eq(TChargingOrder::getStatus, 5)
-				.eq(TChargingOrder::getDelFlag, 0).last(" and end_time between '" + startTime + "' and DATE_FORMAT('%Y-%m-%d %H:%i:%s', now())"));
+				.eq(TChargingOrder::getDelFlag, 0).last(" and start_time between '" + startTime + "' and DATE_FORMAT(now(), '%Y-%m-%d %H:%i:%s')"));
 		
 		List<Double> list2 = new ArrayList<>();
-		Calendar nowDateTime = Calendar.getInstance();
 		//遍历获取每天的数值
 		for (int i = days; i >= 0; i--) {
+			Calendar nowDateTime = Calendar.getInstance();
 			nowDateTime.set(Calendar.DAY_OF_YEAR, nowDateTime.get(Calendar.DAY_OF_YEAR) - i);
 			//充电量
-			BigDecimal reduce = list.stream().filter(s -> sdf.format(s.getEndTime()).equals(sdf.format(nowDateTime.getTime())))
+			BigDecimal reduce = list.stream().filter(s -> s.getStartTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")).equals(sdf.format(nowDateTime.getTime())))
 					.map(TChargingOrder::getChargingCapacity).reduce(BigDecimal.ZERO, BigDecimal::add);
 			list2.add(reduce.doubleValue());
 		}
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 be2102b..9e757f3 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
@@ -65,6 +65,7 @@
 import org.springframework.util.StringUtils;
 
 import javax.annotation.Resource;
+import java.lang.reflect.InvocationTargetException;
 import java.math.BigDecimal;
 import java.math.MathContext;
 import java.math.RoundingMode;
@@ -146,9 +147,6 @@
 
 	@Resource
 	private AccountingStrategyDetailOrderClient accountingStrategyDetailOrderClient;
-	
-	@Resource
-	private AccountingStrategyOrderClient accountingStrategyOrderClient;
 
 	@Resource
 	private AccountingStrategyClient accountingStrategyClient;
@@ -434,6 +432,7 @@
 		chargingOrder.setAppUserId(userId);
 		chargingOrder.setAppUserCarId(addChargingOrder.getAppUserCarId());
 		TChargingGun tChargingGun = chargingGunClient.getChargingGunById(addChargingOrder.getId()).getData();
+		TChargingPile chargingPile = chargingPileClient.getChargingPileById(tChargingGun.getChargingPileId()).getData();
 		chargingOrder.setSiteId(tChargingGun.getSiteId());
 		chargingOrder.setChargingPileId(tChargingGun.getChargingPileId());
 		chargingOrder.setChargingGunId(addChargingOrder.getId());
@@ -443,6 +442,8 @@
 		chargingOrder.setAppCouponId(addChargingOrder.getAppUserCouponId());
 		chargingOrder.setVipDiscount(new BigDecimal(10));
 		chargingOrder.setVipDiscountAmount(BigDecimal.ZERO);
+		chargingOrder.setOrderSource(0);
+		chargingOrder.setTitle("【充电桩充电】" + chargingPile.getNumber() + "号桩/" + tChargingGun.getCode() + "号枪");
 		
 		Site site = siteClient.getSiteByIds(Arrays.asList(tChargingGun.getSiteId())).getData().get(0);
 		Integer accountingStrategyId = tChargingGun.getAccountingStrategyId();
@@ -889,13 +890,11 @@
 	 * @return
 	 */
 	public AjaxResult chargingOrderStartupFailureWxRefund(String out_refund_no, String refund_id, String tradeState, String success_time){
-		if("SUCCESS".equals(tradeState)){
-			TChargingOrderRefund one = chargingOrderRefundService.getOne(new LambdaQueryWrapper<TChargingOrderRefund>().eq(TChargingOrderRefund::getRefundCode, out_refund_no));
-			one.setRefundSerialNumber(refund_id);
-			one.setRefundStatus(2);
-			one.setRefundTime(LocalDateTime.now());
-			chargingOrderRefundService.updateById(one);
-		}
+		TChargingOrderRefund one = chargingOrderRefundService.getOne(new LambdaQueryWrapper<TChargingOrderRefund>().eq(TChargingOrderRefund::getRefundCode, out_refund_no));
+		one.setRefundSerialNumber(refund_id);
+		one.setRefundStatus(2);
+		one.setRefundTime(LocalDateTime.now());
+		chargingOrderRefundService.updateById(one);
 		return AjaxResult.success();
 	}
 
@@ -965,7 +964,6 @@
 			return AjaxResult.error("不能重复操作");
 		}
 		chargingOrder.setEndTime(LocalDateTime.now());
-		chargingOrder.setStatus(4);
 		chargingOrder.setEndMode(1);
 		this.updateById(chargingOrder);
 		
@@ -987,6 +985,7 @@
 			for (int i = 0; i < 60; i++) {
 				TChargingOrder chargingOrder1 = this.getById(id);
 				if(chargingOrder1.getStatus() != 3){
+					stop_status = true;
 					break;
 				}
 				GetPlatformStopChargingReply query = new GetPlatformStopChargingReply();
@@ -1028,24 +1027,15 @@
 					} catch (InterruptedException e) {
 						throw new RuntimeException(e);
 					}
-					continue;
 				}else{
 					log.error(code1 + ":-------------------远程停止充电请求成功-------------------");
 					stop_status = true;
+					break;
 				}
-				break;
 			}
 			if(stop_status){
-				chargingOrder.setStatus(5);
+				chargingOrder.setEndMode(1);
 				this.updateById(chargingOrder);
-				
-				//计算用户标签
-				editUserTag(chargingOrder);
-				//用户推荐奖励
-				referralReward(chargingOrder);
-				// 将枪状态重置为空闲
-				chargingGun.setStatus(2);
-				chargingGunClient.updateChargingGunById(chargingGun);
 			}else{
 				log.error(code1 + ":-------------------远程停止充电应答最终失败-------------------");
 			}
@@ -1211,17 +1201,11 @@
 			}
 			log.error(code1 + ":停机失败:订单号:{},失败原因:{}", order.getCode(), failure_cause);
 		}else{
-			order.setEndTime(LocalDateTime.now());
-			order.setStatus(5);
-			order.setEndMode(1);
-			this.updateById(order);
-			//计算用户标签
-			editUserTag(order);
-			//用户推荐奖励
-			referralReward(order);
-			// 将枪状态重置为空闲
-			chargingGun.setStatus(2);
-			chargingGunClient.updateChargingGunById(chargingGun);
+			TChargingOrder chargingOrder = new TChargingOrder();
+			chargingOrder.setId(order.getId());
+			chargingOrder.setAppUserId(order.getAppUserId());
+			chargingOrder.setEndMode(1);
+			this.updateById(chargingOrder);
 		}
 	}
 	
@@ -1708,6 +1692,7 @@
 	 * @param query
 	 */
 	@Override
+	@GlobalTransactional(rollbackFor = Exception.class)
 	public void chargeMonitoring(UploadRealTimeMonitoringDataQuery query) {
 		if(com.ruoyi.common.core.utils.StringUtils.isNotEmpty(query.getTransaction_serial_number())){
 			//获取当前的计费策略
@@ -1744,13 +1729,21 @@
 				if(chargingOrderAccountingStrategy.getAccountingStrategyDetailId().equals(strategyDetail.getId())){
 					//已充电总度数
 					BigDecimal charging_degree = query.getCharging_degree();
-					BigDecimal electrovalenc = strategyDetail.getElectrovalence().multiply(charging_degree);
-					BigDecimal originalServicePrice = strategyDetail.getServiceCharge().multiply(charging_degree);
+					BigDecimal chargingCapacity = chargingOrderAccountingStrategy.getChargingCapacity();
+					//计算本阶段充电度数
+					BigDecimal subtract = charging_degree.subtract(chargingCapacity);
+					//计算本阶段费用
+					BigDecimal electrovalenc = strategyDetail.getElectrovalence().multiply(subtract);
+					BigDecimal originalServicePrice = strategyDetail.getServiceCharge().multiply(subtract);
 					BigDecimal serviceCharge = originalServicePrice;
 					//计算优惠金额
 					if(null != chargingOrder.getVipDiscount()){
 						serviceCharge = serviceCharge.multiply(chargingOrder.getVipDiscount().divide(new BigDecimal(10)));
 					}
+					//将本阶段的费用增加到总费用中
+					electrovalenc = electrovalenc.add(chargingOrderAccountingStrategy.getPeriodElectricPrice());
+					originalServicePrice = originalServicePrice.add(chargingOrderAccountingStrategy.getPeriodOriginalServicePrice());
+					serviceCharge = serviceCharge.add(chargingOrderAccountingStrategy.getPeriodServicePrice());
 					chargingOrderAccountingStrategy.setChargingCapacity(charging_degree);
 					chargingOrderAccountingStrategy.setPeriodElectricPrice(electrovalenc);
 					chargingOrderAccountingStrategy.setPeriodServicePrice(serviceCharge);
@@ -1794,8 +1787,21 @@
 			}
 			BigDecimal residualAmount = chargingOrder.getRechargeAmount().subtract(t).setScale(4, RoundingMode.HALF_EVEN);
 			chargingOrder.setResidualAmount(residualAmount);
-			BigDecimal divide = query.getOutput_current().multiply(query.getOutput_voltage()).divide(new BigDecimal(1000));
-			chargingOrder.setChargingPower(divide);
+			if(query.getOutput_current().compareTo(BigDecimal.ZERO) != 0){
+				BigDecimal divide = (query.getOutput_current().multiply(query.getOutput_voltage())).divide(new BigDecimal(1000));
+				chargingOrder.setChargingPower(divide);
+				chargingOrder.setCurrent(query.getOutput_current());
+				chargingOrder.setVoltage(query.getOutput_voltage());
+				chargingOrder.setPower(query.getOutput_current().multiply(query.getOutput_voltage()));
+				chargingOrder.setNeedElec(query.getOutput_current());
+				
+				TChargingGun chargingGun = chargingGunClient.getChargingGunById(chargingOrder.getChargingGunId()).getData();
+				chargingGun.setChargingPower(divide);
+				chargingGun.setSoc(query.getSoc());
+				chargingGunClient.updateChargingGunById(chargingGun);
+			}
+			chargingOrder.setElectricity(query.getCharging_degree());
+			chargingOrder.setTotalElectricity(new BigDecimal(100 - query.getSoc()));
 			this.updateById(chargingOrder);
 		}
 	}
@@ -1808,24 +1814,12 @@
 	@Override
 	@GlobalTransactional(rollbackFor = Exception.class)
 	public void endCharge(String orderCode, Integer endMode) {
-		TChargingOrder chargingOrder = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, orderCode));
-		Integer status = chargingOrder.getStatus();
-		if(status == 4 || status == 5){
-			return;
-		}
-		chargingOrder.setStatus(5);
+		TChargingOrder order = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, orderCode));
+		TChargingOrder chargingOrder = new TChargingOrder();
+		chargingOrder.setId(order.getId());
+		chargingOrder.setAppUserId(order.getAppUserId());
 		chargingOrder.setEndMode(endMode);
-		chargingOrder.setEndTime(LocalDateTime.now());
 		this.updateById(chargingOrder);
-		// 将枪状态重置为空闲
-		TChargingGun chargingGun = chargingGunClient.getChargingGunById(chargingOrder.getChargingGunId()).getData();
-		chargingGun.setStatus(2);
-		chargingGunClient.updateChargingGunById(chargingGun);
-		
-		//计算用户标签
-		editUserTag(chargingOrder);
-		//用户推荐奖励
-		referralReward(chargingOrder);
 	}
 
 	/**
@@ -1845,21 +1839,85 @@
 	@Override
 	@GlobalTransactional(rollbackFor = Exception.class)
 	public void endChargeBillingCharge(TransactionRecordMessageVO vo) {
+		TChargingOrder chargingOrder = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, vo.getTransaction_serial_number()));
+		Integer status = chargingOrder.getStatus();
+		if(status == 4 || status == 5){
+			return;
+		}
+		
+		//计算用户标签
+		editUserTag(chargingOrder);
+		//用户推荐奖励
+		referralReward(chargingOrder);
+		
 		//如果使用优惠券需要判断优惠券是否满足使用条件
 		//根据实际的充电金额计算退款金额   退回费用=(原金额/总金额)*(总金额-实际充电金额)
 		//退款金额=优惠券金额+剩余充电金额
-		TChargingOrder chargingOrder = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, vo.getTransaction_serial_number()));
-		List<TChargingOrderAccountingStrategy> list = chargingOrderAccountingStrategyService.list(new LambdaQueryWrapper<TChargingOrderAccountingStrategy>().eq(TChargingOrderAccountingStrategy::getChargingOrderId, chargingOrder.getId()));
 		BigDecimal periodElectricPrice_total = BigDecimal.ZERO;
 		BigDecimal periodServicePrice_total = BigDecimal.ZERO;
 		BigDecimal total = BigDecimal.ZERO;
-		for (TChargingOrderAccountingStrategy chargingOrderAccountingStrategy : list) {
-			BigDecimal periodElectricPrice = chargingOrderAccountingStrategy.getPeriodElectricPrice();
-			BigDecimal periodServicePrice = chargingOrderAccountingStrategy.getPeriodOriginalServicePrice();
-			periodElectricPrice_total = periodElectricPrice_total.add(periodElectricPrice);
-			periodServicePrice_total = periodServicePrice_total.add(periodServicePrice);
-			total = total.add(periodElectricPrice).add(periodServicePrice);
+		
+		//获取订单的计费策略
+		List<AccountingStrategyDetailOrder> accountingStrategyDetailOrderList = accountingStrategyDetailOrderClient.getAllAccountingStrategyDetailOrder(chargingOrder.getId()).getData();
+		chargingOrderAccountingStrategyService.remove(new LambdaQueryWrapper<TChargingOrderAccountingStrategy>().eq(TChargingOrderAccountingStrategy::getChargingOrderId, chargingOrder.getId()));
+		for (int i = 0; i < 12; i++) {
+			Class<? extends TransactionRecordMessageVO> clazz = vo.getClass();
+			try {
+				String time = (String) clazz.getMethod("getTime" + (i + 1)).invoke(vo);
+				if(StringUtils.hasLength(time)){
+					//充电度数
+					Object invoke = clazz.getMethod("getSharp_peak_charge" + (i + 1)).invoke(vo);
+					if(null == invoke || invoke.toString().equals("0")){
+						continue;
+					}
+					BigDecimal Sharp_peak_charge = new BigDecimal(invoke.toString());
+					//充电金额
+					Object invoke1 = clazz.getMethod("getSharp_peak_amount" + (i + 1)).invoke(vo);
+					BigDecimal sharp_peak_amount = new BigDecimal(invoke1.toString());
+					
+					String[] split = time.split("-");
+					AccountingStrategyDetailOrder strategyDetail = accountingStrategyDetailOrderList.stream().filter(s -> s.getStartTime().equals(split[0]) && s.getEndTime().equals(split[1])).findFirst().get();
+					
+					TChargingOrderAccountingStrategy chargingOrderAccountingStrategy = new TChargingOrderAccountingStrategy();
+					chargingOrderAccountingStrategy.setChargingOrderId(chargingOrder.getId());
+					chargingOrderAccountingStrategy.setAccountingStrategyDetailId(strategyDetail.getId());
+					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);
+					BigDecimal originalServicePrice = strategyDetail.getServiceCharge().multiply(Sharp_peak_charge);
+					BigDecimal serviceCharge = originalServicePrice;
+					//计算优惠金额
+					if(null != chargingOrder.getVipDiscount()){
+						serviceCharge = serviceCharge.multiply(chargingOrder.getVipDiscount().divide(new BigDecimal(10)));
+					}
+					chargingOrderAccountingStrategy.setChargingCapacity(Sharp_peak_charge);
+					chargingOrderAccountingStrategy.setPeriodElectricPrice(electrovalenc);
+					chargingOrderAccountingStrategy.setPeriodServicePrice(serviceCharge);
+					chargingOrderAccountingStrategy.setPeriodOriginalServicePrice(originalServicePrice);
+					chargingOrderAccountingStrategy.setCreateTime(LocalDateTime.now());
+					chargingOrderAccountingStrategyService.save(chargingOrderAccountingStrategy);
+					
+					BigDecimal periodElectricPrice = chargingOrderAccountingStrategy.getPeriodElectricPrice();
+					BigDecimal periodServicePrice = chargingOrderAccountingStrategy.getPeriodOriginalServicePrice();
+					periodElectricPrice_total = periodElectricPrice_total.add(periodElectricPrice);
+					periodServicePrice_total = periodServicePrice_total.add(periodServicePrice);
+					total = total.add(periodElectricPrice).add(periodServicePrice);
+				}
+			} catch (IllegalAccessException e) {
+				throw new RuntimeException(e);
+			} catch (InvocationTargetException e) {
+				throw new RuntimeException(e);
+			} catch (NoSuchMethodException e) {
+				throw new RuntimeException(e);
+			}
 		}
+		
+		
 		//原金额
 		BigDecimal rechargeAmount = chargingOrder.getRechargeAmount();
 		BigDecimal vipDiscountAmount = chargingOrder.getVipDiscountAmount();
@@ -1897,12 +1955,24 @@
 			payAmount = payAmount.subtract(discountAmount);
 		}
 		
-		if(chargingOrder.getEndMode() == 2){
-			chargingOrder.setEndMode(refundAmount.compareTo(BigDecimal.ZERO) > 0 ? 2 : 3);
+		TChargingOrder order = new TChargingOrder();
+		order.setId(chargingOrder.getId());
+		order.setAppUserId(chargingOrder.getAppUserId());
+		if(null != chargingOrder.getEndMode() && chargingOrder.getEndMode() == 2){
+			order.setEndMode(refundAmount.compareTo(BigDecimal.ZERO) > 0 ? 2 : 3);
 		}
-		chargingOrder.setStatus(5);
-		chargingOrder.setOrderAmount(orderAmount);
-		chargingOrder.setVipDiscountAmount(discountAmount);
+		if(null == chargingOrder.getEndMode()){
+			order.setEndMode(1);
+		}
+		order.setResidualAmount(rechargeAmount.subtract(total));
+		order.setStartTime(LocalDateTime.parse(vo.getStart_time(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SS")));
+		order.setEndTime(LocalDateTime.parse(vo.getEnd_time(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SS")));
+		order.setStatus(5);
+		order.setOrderAmount(orderAmount);
+		order.setVipDiscountAmount(discountAmount);
+		order.setServiceCharge(periodServicePrice_total);
+		order.setElectrovalence(periodElectricPrice_total);
+		order.setChargingCapacity(vo.getTotal_electricity());
 		
 		//计算优惠券
 		if(null != chargingOrder.getAppCouponId()){
@@ -1915,11 +1985,11 @@
 				//满减
 				if(payAmount.compareTo(tCoupon.getMeetTheConditions()) >= 0){
 					refundAmount = refundAmount.add(tCoupon.getDiscountAmount());
-					chargingOrder.setCouponDiscountAmount(tCoupon.getDiscountAmount());
+					order.setCouponDiscountAmount(tCoupon.getDiscountAmount());
 					payAmount = payAmount.subtract(tCoupon.getDiscountAmount());
 				}else{
-					chargingOrder.setAppCouponId(null);
-					chargingOrder.setCouponDiscountAmount(BigDecimal.ZERO);
+					order.setAppCouponId(null);
+					order.setCouponDiscountAmount(BigDecimal.ZERO);
 					appCouponClient.refund(chargingOrder.getAppCouponId().toString());
 				}
 			}
@@ -1930,17 +2000,27 @@
 					BigDecimal divide = payAmount.multiply(new BigDecimal(10).subtract(tCoupon.getDiscount())).divide(new BigDecimal(10));
 					divide = divide.compareTo(tCoupon.getMaximumDiscountAmount()) > 0 ? tCoupon.getMaximumDiscountAmount() : divide;
 					refundAmount = refundAmount.add(divide);
-					chargingOrder.setCouponDiscountAmount(divide);
+					order.setCouponDiscountAmount(divide);
 					payAmount = payAmount.subtract(divide);
 				}else{
-					chargingOrder.setAppCouponId(null);
-					chargingOrder.setCouponDiscountAmount(BigDecimal.ZERO);
+					order.setAppCouponId(null);
+					order.setCouponDiscountAmount(BigDecimal.ZERO);
 					appCouponClient.refund(chargingOrder.getAppCouponId().toString());
 				}
 			}
 		}
-		chargingOrder.setPaymentAmount(payAmount);
-		this.updateById(chargingOrder);
+		order.setPaymentAmount(payAmount);
+		order.setRefundAmount(refundAmount);
+		order.setRefundStatus(1);
+		this.updateById(order);
+		chargingOrder = this.getById(order.getId());
+		
+		// 将枪状态重置为空闲
+		TChargingGun chargingGun = chargingGunClient.getChargingGunById(chargingOrder.getChargingGunId()).getData();
+		chargingGun.setStatus(2);
+		chargingGun.setChargingPower(BigDecimal.ZERO);
+		chargingGun.setSoc(0);
+		chargingGunClient.updateChargingGunById(chargingGun);
 		
 		//添加积分
 		TIntegralRule integralRule = integralRuleClient.getSet().getData();
@@ -2009,7 +2089,7 @@
 				RefundReq dto = new RefundReq();
 				dto.setOutTradeNo(chargingOrder.getCode());
 				dto.setOutRequestNo(chargingOrderRefund.getCode());
-				dto.setRefundAmount(rechargeAmount.toString());
+				dto.setRefundAmount(refundAmount.toString());
 				dto.setRefundReason("充电完成退款");
 				RefundResp resp = aliPaymentClient.refund(dto).getData();
 				if(null != resp){
@@ -2154,10 +2234,10 @@
 					RefundResp resp = aliPaymentClient.refund(dto).getData();
 					if(null != resp){
 						SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-DDTHH:mm:ss+TIMEZONE");
-						tChargingOrder.setRefundStatus(2);
-						tChargingOrder.setRefundAmount((tChargingOrder.getRefundAmount()==null? BigDecimal.valueOf(0) :tChargingOrder.getRefundAmount()).add(payOrderQueryDto.getRefundAmount()));
+						chargingOrderRefund.setRefundStatus(2);
+						chargingOrderRefund.setRefundAmount((tChargingOrder.getRefundAmount()==null? BigDecimal.valueOf(0) :tChargingOrder.getRefundAmount()).add(payOrderQueryDto.getRefundAmount()));
 						this.baseMapper.updateById(tChargingOrder);
-							chargingOrderRefundService.save(chargingOrderRefund);
+						chargingOrderRefundService.save(chargingOrderRefund);
 
 					}
 				}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderEvaluateServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderEvaluateServiceImpl.java
index 6823260..6c39482 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderEvaluateServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderEvaluateServiceImpl.java
@@ -190,7 +190,7 @@
             siteDetailEvaluateVO.setOrderEvaluateVOS(tChargingOrders);
             // 统计好评率
             long goodCount = tChargingOrders.stream().filter(orderEvaluateVO -> orderEvaluateVO.getMark()>=4).count();
-            BigDecimal reviewRate = new BigDecimal(goodCount).divide(new BigDecimal(tChargingOrders.size())).setScale(2, BigDecimal.ROUND_HALF_UP);
+            BigDecimal reviewRate = new BigDecimal(goodCount).divide(new BigDecimal(tChargingOrders.size()),2, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP);
             siteDetailEvaluateVO.setReviewRate(reviewRate);
             siteDetailEvaluateVO.setEvaluateCount(tChargingOrders.size());
             siteDetailEvaluateVO.setOrderEvaluateVOS(tChargingOrders.stream().limit(3).collect(Collectors.toList()));
@@ -274,29 +274,31 @@
     
         //检测敏感词
         String content = orderEvaluate.getContent();
-        String token = appUserClient.getWXToken().getData();
-        JSONObject jsonObject = new JSONObject();
-        jsonObject.put("content", content);
-        jsonObject.put("version", 2);
-        jsonObject.put("scene", 2);
-        jsonObject.put("openid", appUser.getWxOpenid());
-        String post = HttpUtils.post("https://api.weixin.qq.com/wxa/msg_sec_check?access_token=" + token, jsonObject.toString());
-        JSONObject object = JSONObject.parseObject(post);
-        Integer errcode = object.getInteger("errcode");
-        if(0 != errcode){
-            throw new RuntimeException(object.getString("errmsg"));
-        }
-        JSONArray detail = object.getJSONArray("detail");
-        for (int i = 0; i < detail.size(); i++) {
-            JSONObject jsonObject1 = detail.getJSONObject(i);
-            Integer errcode1 = jsonObject1.getInteger("errcode");
-            if(0 == errcode1){
-                String suggest = jsonObject1.getString("suggest");
-                Integer label = jsonObject1.getInteger("label");
-                String keyword = jsonObject1.getString("keyword");
-                Integer prob = jsonObject1.getInteger("prob");
-                if(("risky".equals(suggest) || "review".equals(suggest)) && 100 != label && StringUtils.isNotEmpty(keyword) && 80 <= prob){
-                    content = content.replaceAll(keyword, "***");
+        if(StringUtils.isNotEmpty(content)){
+            String token = appUserClient.getWXToken().getData();
+            JSONObject jsonObject = new JSONObject();
+            jsonObject.put("content", content);
+            jsonObject.put("version", 2);
+            jsonObject.put("scene", 2);
+            jsonObject.put("openid", appUser.getWxOpenid());
+            String post = HttpUtils.post("https://api.weixin.qq.com/wxa/msg_sec_check?access_token=" + token, jsonObject.toString());
+            JSONObject object = JSONObject.parseObject(post);
+            Integer errcode = object.getInteger("errcode");
+            if(0 != errcode){
+                throw new RuntimeException(object.getString("errmsg"));
+            }
+            JSONArray detail = object.getJSONArray("detail");
+            for (int i = 0; i < detail.size(); i++) {
+                JSONObject jsonObject1 = detail.getJSONObject(i);
+                Integer errcode1 = jsonObject1.getInteger("errcode");
+                if(0 == errcode1){
+                    String suggest = jsonObject1.getString("suggest");
+                    Integer label = jsonObject1.getInteger("label");
+                    String keyword = jsonObject1.getString("keyword");
+                    Integer prob = jsonObject1.getInteger("prob");
+                    if(("risky".equals(suggest) || "review".equals(suggest)) && 100 != label && StringUtils.isNotEmpty(keyword) && 80 <= prob){
+                        return AjaxResult.error("评价包含违规内容,请重新评价!");
+                    }
                 }
             }
         }
diff --git a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml
index 74ee227..47ab9fd 100644
--- a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml
+++ b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml
@@ -62,7 +62,7 @@
         </if>
     </select>
     <select id="getNoInvoicedOrder" resultMap="BaseResultMap">
-        select * from t_charging_order where del_flag = 0 and status = 5 and recharge_payment_status = 2 and payment_amount is null and app_user_id = #{appUserId}
+        select * from t_charging_order where del_flag = 0 and status = 5 and recharge_payment_status = 2 and payment_amount is not null and app_user_id = #{appUserId}
         <if test="null != month and '' != month">
             and DATE_FORMAT(end_time, '%Y-%m') = #{month}
         </if>
@@ -641,19 +641,19 @@
             charging_pile_account.t_app_user
         WHERE
             del_flag = 0
-        <if test="statisticsQueryDto.dayType =1 ">
+        <if test="statisticsQueryDto.dayType ==1 ">
             AND DATE(create_time) = CURDATE()
         </if>
-        <if test="statisticsQueryDto.dayType =2 ">
+        <if test="statisticsQueryDto.dayType == 2 ">
             AND WEEKOFYEAR(create_time) = WEEKOFYEAR(CURDATE())
         </if>
-        <if test="statisticsQueryDto.dayType =3 ">
+        <if test="statisticsQueryDto.dayType == 3 ">
             AND MONTH(create_time) = MONTH(CURDATE())
         </if>
-        <if test="statisticsQueryDto.dayType =4">
+        <if test="statisticsQueryDto.dayType == 4">
             AND YEAR(create_time) = YEAR(CURDATE())
         </if>
-        <if test="statisticsQueryDto.dayType =5">
+        <if test="statisticsQueryDto.dayType == 5">
             <if test="statisticsQueryDto.startTime != null">
                 AND create_time >= #{statisticsQueryDto.startTime}
             </if>
diff --git a/ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/controller/WxPayController.java b/ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/controller/WxPayController.java
index 04048b4..546a0b7 100644
--- a/ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/controller/WxPayController.java
+++ b/ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/controller/WxPayController.java
@@ -123,7 +123,7 @@
      */
     @PostMapping("pay/notify")
     @ApiOperation("订单回调")
-    public R<Map<String, Object>> payNotify(HttpServletRequest request) throws Exception {
+    public void payNotify(HttpServletRequest request) throws Exception {
         try {
             Map<String, Object> params = wxV3Pay.verifyNotify(request, new TypeReference<Map<String, Object>>() {});
             log.info("支付回调:{}", params);
@@ -147,13 +147,10 @@
                     break;
             }
             wxV3Pay.ack();
-            return R.ok(params);
         } catch (Exception e) {
             log.error("支付回调异常:{}", e, e);
             wxV3Pay.ack(false, e.getMessage());
-            return R.fail("回调异常");
         }
-
     }
     
     /**
@@ -175,7 +172,7 @@
      * 退款回调
      */
     @PostMapping("refund/notify")
-    public R<WxRefundNotifyResp> refundNotify(HttpServletRequest request) throws IOException {
+    public void refundNotify(HttpServletRequest request) throws IOException {
         try {
             Map<String, Object> params = wxV3Pay.verifyNotify(request, new TypeReference<Map<String, Object>>() {
             });
@@ -219,14 +216,13 @@
                 resp.setRefund_id(refund_id);
                 resp.setSuccess_time(success_time);
                 wxV3Pay.ack();
-                return R.ok(resp);
             } else {
                 wxV3Pay.ack(false, "不是成功的退款状态");
             }
         } catch (Exception e) {
+            e.printStackTrace();
             wxV3Pay.ack(false, e.getMessage());
         }
-        return R.fail();
     }
     
     /**

--
Gitblit v1.7.1