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