From dca440a3ffc59710656931de97f797c4e13c5f3f Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期三, 09 七月 2025 19:41:29 +0800
Subject: [PATCH] Merge branch 'dev' of http://120.76.84.145:10101/gitblit/r/java/mx_charging_pile

---
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java   |   64 ++++++++--------
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TScreenContentServiceImpl.java   |   10 +
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/util/EnergyRefreshService.java                |    2 
 ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/ali/v2/H5PayUtil.java                     |    3 
 ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/governmentCloud/UploadDataTaskUtil.java |    7 +
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/util/KsolarUtils.java                         |  104 ++++++++++++++++++++++++-
 ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/controller/H5AliPayController.java        |    5 +
 7 files changed, 147 insertions(+), 48 deletions(-)

diff --git a/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/governmentCloud/UploadDataTaskUtil.java b/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/governmentCloud/UploadDataTaskUtil.java
index 3c07f27..9a0a9ad 100644
--- a/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/governmentCloud/UploadDataTaskUtil.java
+++ b/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/governmentCloud/UploadDataTaskUtil.java
@@ -2,6 +2,7 @@
 
 
 import com.alibaba.fastjson.JSONObject;
+import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.utils.DateUtils;
 import com.ruoyi.integration.api.model.*;
 import com.ruoyi.jianguan.mongodb.service.*;
@@ -38,7 +39,7 @@
     /**
      * 每天的9点执行的任务
      */
-    @Scheduled(cron = "0 0 9 * * *")
+    @Scheduled(cron = "0 0 10 * * *")
 //    @Scheduled(fixedRate = 60000)
     public void taskDay(){
         try {
@@ -91,12 +92,12 @@
             customthreadPoolExecutor.execute(() -> {
                 if (uploadRealTimeMonitoringDataList != null && uploadRealTimeMonitoringDataList.size() > 0) {
                     for (UploadRealTimeMonitoringData uploadRealTimeMonitoringData : uploadRealTimeMonitoringDataList) {
-                        log.info("线程:{},办理业务", Thread.currentThread().getName());
                         JSONObject jsonObject = new JSONObject();
                         jsonObject.put("device_code", uploadRealTimeMonitoringData.getCharging_pile_code());
                         jsonObject.put("report_time", System.currentTimeMillis());
                         jsonObject.put("properties", uploadRealTimeMonitoringData);
-                        mqttPushUtil.pushChargePileData(TopicConstants.CHARGE_PILE_CODE.replace("CHARGE_PILE_CODE", uploadRealTimeMonitoringData.getCharging_pile_code()), jsonObject.toJSONString());
+                        R<String> chargePileCode = mqttPushUtil.pushChargePileData(TopicConstants.CHARGE_PILE_CODE.replace("CHARGE_PILE_CODE", uploadRealTimeMonitoringData.getCharging_pile_code()), jsonObject.toJSONString());
+                        log.info("返回结果:{}", chargePileCode.getData());
                         log.info("数据:{}", uploadRealTimeMonitoringData.getCharging_pile_code());
                         log.info("数据:{}", jsonObject.toJSONString());
                     }
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 19cee63..fdab12e 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
@@ -1035,7 +1035,7 @@
 			}
 			if(3 == rechargePaymentType){
 				RefundReq dto = new RefundReq();
-				dto.setOutTradeNo(chargingOrder.getCode());
+				dto.setOutTradeNo(chargingOrder.getRechargeSerialNumber());
 				dto.setOutRequestNo(chargingOrderRefund.getCode());
 				dto.setRefundAmount(rechargeAmount.toString());
 				dto.setRefundReason("充电失败,取消充电订单");
@@ -1132,7 +1132,7 @@
 			}
 			if(3 == rechargePaymentType){
 				RefundReq dto = new RefundReq();
-				dto.setOutTradeNo(chargingOrder.getCode());
+				dto.setOutTradeNo(chargingOrder.getRechargeSerialNumber());
 				dto.setOutRequestNo(chargingOrderRefund.getCode());
 				dto.setRefundAmount(money.toString());
 				dto.setRefundReason("充电完成退款");
@@ -2732,7 +2732,7 @@
 					}
 					if(3 == rechargePaymentType){
 						RefundReq dto = new RefundReq();
-						dto.setOutTradeNo(chargingOrder.getCode());
+						dto.setOutTradeNo(chargingOrder.getRechargeSerialNumber());
 						dto.setOutRequestNo(chargingOrderRefund.getRefundCode());
 						dto.setRefundAmount(refundAmount.toString());
 						dto.setRefundReason("充电完成退款");
@@ -2949,7 +2949,7 @@
 				}
 				if(3 == tChargingOrder.getRechargePaymentType()){
 					RefundReq dto = new RefundReq();
-					dto.setOutTradeNo(tChargingOrder.getCode());
+					dto.setOutTradeNo(tChargingOrder.getRechargeSerialNumber());
 					dto.setOutRequestNo(tChargingOrder.getCode());
 					dto.setRefundAmount(payOrderQueryDto.getRefundAmount().toString());
 					dto.setRefundReason("取消订单");
@@ -3029,20 +3029,20 @@
 						shoppingOrderRefundService.save(chargingOrderRefund);
 					}
 				}
-				if(3 == tChargingOrder.getPaymentType()){
-					RefundReq dto = new RefundReq();
-					dto.setOutTradeNo(tChargingOrder.getCode());
-					dto.setOutRequestNo(tChargingOrder.getCode());
-					dto.setRefundAmount(payOrderQueryDto.getRefundAmount().toString());
-					dto.setRefundReason("取消订单");
-					RefundResp resp = h5AliPaymentClient.refund(dto).getData();
-					if(null != resp){
-						tChargingOrder.setRefundStatus(2);
-						tChargingOrder.setRefundAmount((tChargingOrder.getRefundAmount()==null? BigDecimal.valueOf(0) :tChargingOrder.getRefundAmount()).add(payOrderQueryDto.getRefundAmount()));
-						shoppingOrderService.updateById(tChargingOrder);
-						shoppingOrderRefundService.save(chargingOrderRefund);
-					}
-				}
+//				if(3 == tChargingOrder.getPaymentType()){
+//					RefundReq dto = new RefundReq();
+//					dto.setOutTradeNo(tChargingOrder.getCode());
+//					dto.setOutRequestNo(tChargingOrder.getCode());
+//					dto.setRefundAmount(payOrderQueryDto.getRefundAmount().toString());
+//					dto.setRefundReason("取消订单");
+//					RefundResp resp = h5AliPaymentClient.refund(dto).getData();
+//					if(null != resp){
+//						tChargingOrder.setRefundStatus(2);
+//						tChargingOrder.setRefundAmount((tChargingOrder.getRefundAmount()==null? BigDecimal.valueOf(0) :tChargingOrder.getRefundAmount()).add(payOrderQueryDto.getRefundAmount()));
+//						shoppingOrderService.updateById(tChargingOrder);
+//						shoppingOrderRefundService.save(chargingOrderRefund);
+//					}
+//				}
 
 			}
 
@@ -3108,20 +3108,20 @@
 					vipOrderRefundService.save(chargingOrderRefund);
 				}
 			}
-			if(3 == tChargingOrder.getPaymentType()){
-				RefundReq dto = new RefundReq();
-				dto.setOutTradeNo(tChargingOrder.getCode());
-				dto.setOutRequestNo(tChargingOrder.getCode());
-				dto.setRefundAmount(payOrderQueryDto.getRefundAmount().toString());
-				dto.setRefundReason("取消订单");
-				RefundResp resp = h5AliPaymentClient.refund(dto).getData();
-				if(null != resp){
-					tChargingOrder.setRefundStatus(2);
-					tChargingOrder.setRefundAmount((tChargingOrder.getRefundAmount()==null? BigDecimal.valueOf(0) :tChargingOrder.getRefundAmount()).add(payOrderQueryDto.getRefundAmount()));
-					vipOrderService.updateById(tChargingOrder);
-					vipOrderRefundService.save(chargingOrderRefund);
-				}
-			}
+//			if(3 == tChargingOrder.getPaymentType()){
+//				RefundReq dto = new RefundReq();
+//				dto.setOutTradeNo(tChargingOrder.getCode());
+//				dto.setOutRequestNo(tChargingOrder.getCode());
+//				dto.setRefundAmount(payOrderQueryDto.getRefundAmount().toString());
+//				dto.setRefundReason("取消订单");
+//				RefundResp resp = h5AliPaymentClient.refund(dto).getData();
+//				if(null != resp){
+//					tChargingOrder.setRefundStatus(2);
+//					tChargingOrder.setRefundAmount((tChargingOrder.getRefundAmount()==null? BigDecimal.valueOf(0) :tChargingOrder.getRefundAmount()).add(payOrderQueryDto.getRefundAmount()));
+//					vipOrderService.updateById(tChargingOrder);
+//					vipOrderRefundService.save(chargingOrderRefund);
+//				}
+//			}
 		}
 		return R.ok();
 	}
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TScreenContentServiceImpl.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TScreenContentServiceImpl.java
index caa54aa..569de12 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TScreenContentServiceImpl.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TScreenContentServiceImpl.java
@@ -133,13 +133,17 @@
         List<LocalDate> dates = new ArrayList<>();
         List<Double> values = new ArrayList<>();
         LocalDate today = LocalDate.now();
+        ArrayList<Map<String, Object>> monthEnergy = KsolarUtils.getMonthEnergy(today.minusDays(7).toString().substring(0, 7), today.minusDays(1).toString().substring(0, 7));
         // 生成每天数据
         for (int i = 7; i >= 1; i--) {//升序
             LocalDate day = today.minusDays(i);
-            //统计
             dates.add(day);
-            Double value = KsolarUtils.getTodayEnergy(day.toString()); // 100-250
-            values.add(value);
+            Map<String, Object> stringObjectMap = monthEnergy.stream().filter(e -> e.get("time").toString().contains(day.toString())).findFirst().orElse(null);
+            if(stringObjectMap!=null){
+                values.add(Double.valueOf(stringObjectMap.get("value").toString()));
+            }else {
+                values.add(0.0);
+            }
         }
         vo.setDates(dates);
         vo.setValues(values);
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/util/EnergyRefreshService.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/util/EnergyRefreshService.java
index 3ad10be..b5d03b8 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/util/EnergyRefreshService.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/util/EnergyRefreshService.java
@@ -48,7 +48,7 @@
     private BigDecimal currentPhaseDischarge = BigDecimal.ZERO;
 
     // 定时任务方法 - 能量刷新
-    @Scheduled(cron = "0 * * * * ?") // 每分钟执行一次
+//    @Scheduled(cron = "0 * * * * ?") // 每分钟执行一次
     public synchronized void refreshValue() {
         LocalTime now = LocalTime.now();
 
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/util/KsolarUtils.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/util/KsolarUtils.java
index b12eb8a..eb3cf11 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/util/KsolarUtils.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/util/KsolarUtils.java
@@ -19,10 +19,7 @@
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.LocalTime;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Random;
+import java.util.*;
 
 
 /**
@@ -34,9 +31,17 @@
 
     private static String token;
 
+    private static String accessToken;
+
 
     private static List<String> stationIds= Arrays.asList("2025060710462417","2025060711331323","2025060715425437","2025060716010425");
 
+
+    /**
+     * 获取今日总发电量
+     * @param time
+     * @return
+     */
     public static Double getTodayEnergy(String time) {
         try {
             HttpRequest get = HttpUtil.createGet("http://111.230.136.62:8092/station/list/earn");
@@ -60,7 +65,46 @@
             return getTodayEnergy(time);
         }
     }
+    public static ArrayList<Map<String, Object>> getMonthEnergy(String time,String time1) {
+        ArrayList<Map<String, Object>> list = new ArrayList<>();
+        try {
+            HttpRequest get = HttpUtil.createGet("http://111.230.136.62:8092/protocol/user/statistic/elec/chart");
+            get.header("Authorization", "Bearer "+token);
+            get.form("stime", time);
+            get.form("attribId", "201");
+            HttpResponse execute = get.execute();
+            String body = execute.body();
+            if(body.contains("code")){
+                token = token();
+                return getMonthEnergy(time,time1);
+            }
+            JSONArray jsonArray = JSONArray.parseArray(body);
+            for (Object o1 : jsonArray) {
+                HashMap<String, Object> stringObjectHashMap = new HashMap<>();
+                JSONObject jsonObject = JSONObject.parseObject(o1.toString()) ;
+                stringObjectHashMap.put("time", jsonObject.getString("saveTime"));
+                stringObjectHashMap.put("value", jsonObject.getString("attribValue"));
+                list.add(stringObjectHashMap);
+            }
+            // 相同月份
+            if(!time.equals(time1)){
+                list.addAll(getMonthEnergy(time1,time1));
+            }
 
+            return list;
+        } catch (Exception e) {
+            e.printStackTrace();
+            token = token();
+            return getMonthEnergy(time,time1);
+        }
+    }
+
+
+
+    /**
+     * 光伏累计
+     * @return
+     */
     public static Double getAllEnergy(String time) {
         try {
             HttpRequest get = HttpUtil.createGet("http://111.230.136.62:8092/station/list/earn");
@@ -100,11 +144,13 @@
         return divide;
     }
 
+
+
     private static Double getYearAllEnergy(String stationId) {
         try {
             HttpRequest get = HttpUtil.createGet("http://111.230.136.62:8092/protocol/station/statistic/elec/chart");
             get.header("Authorization", "Bearer "+token);
-            get.form("stationId", "2025060710462417");
+            get.form("stationId", stationId);
             get.form("attribId", "202");
             get.form("stime",LocalDate.now().getYear()+"" );
             HttpResponse execute = get.execute();
@@ -118,7 +164,7 @@
         } catch (Exception e) {
             e.printStackTrace();
             token = token();
-            return getYearAllEnergy(LocalDate.now().getYear()+"");
+            return getYearAllEnergy(stationId);
         }
     }
 
@@ -139,6 +185,52 @@
     }
 
 
+    public static String getAccessToken(){
+        HttpRequest post = HttpRequest.post("https://www.zsdcloud.cn:8443/openApi/getAccessToken.action?accessId=87bde117-1f29-4371-8d4d-82324d17ddc3");
+        HttpResponse execute = post.execute();
+        String body = execute.body();
+        JSONObject jsonObject = JSONObject.parseObject(body);
+        return jsonObject.getString("result");
+    }
+
+
+    /**
+     * 消纳数据
+     * @return
+     */
+    public static String getElectricity(){
+        String value = "0";
+        HttpRequest post = HttpRequest.post("https://www.zsdcloud.cn:8443/openApi/equipment/select.action");
+        post.form("token", accessToken);
+        post.form("keyCode", "869916072003947");
+        post.form("version", "V2");
+        HttpResponse execute = post.execute();
+        String body = execute.body();
+        JSONObject jsonObject = JSONObject.parseObject(body);
+        String string = jsonObject.get("statusCode").toString();
+        if(!string.equals("200")){
+           accessToken =  getAccessToken();
+           return getElectricity();
+
+        }
+        String string1 = jsonObject.getString("result");
+        JSONObject jsonObject1 = JSONObject.parseObject(string1);
+        String realInfo = jsonObject1.getString("realInfo");
+        JSONArray jsonArray = JSONArray.parseArray(realInfo);
+        for (Object o : jsonArray) {
+            JSONObject jsonObject2 = JSONObject.parseObject(o.toString());
+            if(jsonObject2.get("Name").toString().equals("累积日充电量")){
+                value=  jsonObject2.get("Value").toString();
+                break;
+            }
+        }
+        return value;
+    }
+    public static void main(String[] args) throws Exception {
+        String electricity = getElectricity();
+        System.out.println(electricity);
+    }
+
 
 
 }
\ No newline at end of file
diff --git a/ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/ali/v2/H5PayUtil.java b/ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/ali/v2/H5PayUtil.java
index c68bc4e..ad4a16e 100644
--- a/ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/ali/v2/H5PayUtil.java
+++ b/ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/ali/v2/H5PayUtil.java
@@ -146,7 +146,7 @@
         //切记alipaypublickey是支付宝的公钥,请去open.alipay.com对应应用下查看。
         //boolean AlipaySignature.rsaCheckV1(Map<String, String> params, String publicKey, String charset, String sign_type)
         Map<String, String> map = new HashMap<>();
-        System.err.println("返回码"+params);
+        System.err.println("H5返回码"+params);
         if (params.get("trade_status").equals("TRADE_SUCCESS")){
             String out_trade_no = params.get("out_trade_no");
             String subject = params.get("subject");
@@ -158,7 +158,6 @@
             map.put("total_amount", total_amount);
             map.put("trade_no", trade_no);//支付宝交易号
             map.put("passback_params", passback_params);//回传参数
-            System.err.println("回调map");
             return map;
         }else{
             return null;
diff --git a/ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/controller/H5AliPayController.java b/ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/controller/H5AliPayController.java
index 33b7ed7..10cf628 100644
--- a/ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/controller/H5AliPayController.java
+++ b/ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/controller/H5AliPayController.java
@@ -9,6 +9,7 @@
 import com.ruoyi.payment.api.model.RefundResp;
 import com.ruoyi.payment.api.vo.AliPaymentReq;
 import com.ruoyi.payment.api.vo.AliQueryOrder;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
 import org.springframework.web.bind.annotation.*;
 
@@ -22,6 +23,7 @@
  * @author zhibing.pu
  * @Date 2024/8/24 14:29
  */
+@Slf4j
 @RestController
 @RequestMapping("/aliH5")
 public class H5AliPayController {
@@ -92,6 +94,7 @@
 	public void chargingOrderALICallback(HttpServletRequest request, HttpServletResponse response) {
 		try {
 			Map<String, String> callback = h5PayUtil.alipayCallback(request);
+			log.info("H5支付回调:{}", callback);
 			if(null != callback){
 				String out_trade_no = callback.get("out_trade_no");
 				String attach = callback.get("subject");
@@ -101,7 +104,7 @@
 				switch (substring){
 					case "CD":
 						chargingOrderClient.chargingOrderALIH5Callback(out_trade_no, transaction_id, attach);
-						System.err.println("----充电支付回调");
+						System.err.println("----H5充电支付回调");
 						break;
 				}
 				PrintWriter writer = response.getWriter();

--
Gitblit v1.7.1