无关风月
2025-02-17 dfd423f90894d24081e7d7da08d09498898ee9c2
Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/mx_charging_pile
2个文件已添加
17个文件已修改
242 ■■■■ 已修改文件
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ChargingGunClient.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/TCECClientFallbackFactory.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/TCECClient.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/Ping.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/Pong.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/SystemConfigurationClientFallbackFactory.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/SystemConfigurationClient.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-other/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingPileController.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/server/ParkingOrderService.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/TCECController.java 119 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/impl/PingServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/UploadRealTimeMonitoringDataMessageListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/util/TaskUtil.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TSystemConfigurationController.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ChargingGunClient.java
@@ -50,6 +50,7 @@
     */
    @PostMapping("/t-charging-gun/getChargingGunById/{id}")
    R<TChargingGun> getChargingGunById(@PathVariable("id") Integer id);
    /**
     * 通过枪id获取站点、桩、枪的名称VO
ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/TCECClientFallbackFactory.java
@@ -18,7 +18,7 @@
        
        return new TCECClient() {
            @Override
            public R pushChargingGunStatus(Integer id, Integer status) {
            public R pushChargingGunStatus(String getFullNumber, Integer status) {
                return R.fail("接口状态变化后推送给第三方失败:" + cause.getMessage());
            }
            
ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/TCECClient.java
@@ -24,7 +24,7 @@
     * @return
     */
    @PostMapping("/evcs/v1.0/pushChargingGunStatus")
    R pushChargingGunStatus(@RequestParam("id") Integer id, @RequestParam("status") Integer status);
    R pushChargingGunStatus(@RequestParam("fullNumber") String fullNumber, @RequestParam("status") Integer status);
    
    
    
ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/Ping.java
@@ -13,6 +13,8 @@
@Document(collection = "ping") //指定要对应的文档名(表名)
@Accessors(chain = true)
public class Ping extends BaseModel {
    @Id
    private String id;
    private String charging_pile_code;// 桩编码
    private String charging_gun_code;// 抢号
    private Integer charging_gun_status;// 抢状态(0:正常,1:故障)
ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/Pong.java
@@ -13,6 +13,8 @@
@Document(collection = "pong") //指定要对应的文档名(表名)
@Accessors(chain = true)
public class Pong extends BaseModel {
    @Id
    private String id;
    private String charging_pile_code;// 桩编码
    private String charging_gun_code;// 抢号
    private Integer charging_gun_status;// 心跳应答(0)
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/SystemConfigurationClientFallbackFactory.java
New file
@@ -0,0 +1,21 @@
package com.ruoyi.other.api.factory;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.other.api.feignClient.SystemConfigurationClient;
import org.springframework.cloud.openfeign.FallbackFactory;
/**
 * @author zhibing.pu
 * @Date 2025/2/17 9:46
 */
public class SystemConfigurationClientFallbackFactory  implements FallbackFactory<SystemConfigurationClient> {
    @Override
    public SystemConfigurationClient create(Throwable cause) {
        return new SystemConfigurationClient() {
            @Override
            public R<String> getServerPhone() {
                return R.fail("获取客服电话失败:" + cause.getMessage());
            }
        };
    }
}
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/SystemConfigurationClient.java
New file
@@ -0,0 +1,23 @@
package com.ruoyi.other.api.feignClient;
import com.ruoyi.common.core.constant.ServiceNameConstants;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.other.api.factory.SystemConfigurationClientFallbackFactory;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
/**
 * @author zhibing.pu
 * @Date 2025/2/17 9:45
 */
@FeignClient(contextId = "SystemConfigurationClient", value = ServiceNameConstants.OTHER_SERVICE, fallbackFactory = SystemConfigurationClientFallbackFactory.class)
public interface SystemConfigurationClient {
    /**
     * 获取客服电话
     * @return
     */
    @PostMapping(value = "/t-system-configuration/getServerPhone")
    R<String> getServerPhone();
}
ruoyi-api/ruoyi-api-other/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -9,4 +9,5 @@
com.ruoyi.other.api.factory.InvoiceTypeFallbackFactory
com.ruoyi.other.api.factory.WebSocketFallbackFactory
com.ruoyi.other.api.factory.UserTagFallbackFactory
com.ruoyi.other.api.factory.OperatorFallbackFactory
com.ruoyi.other.api.factory.OperatorFallbackFactory
com.ruoyi.other.api.factory.SystemConfigurationClientFallbackFactory
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingPileController.java
@@ -264,7 +264,7 @@
                tChargingGun1.setStatus(2);
                chargingGunService.updateById(tChargingGun1);
                //推送状态给三方平台
                tcecClient.pushChargingGunStatus(tChargingGun.getId(), tChargingGun1.getStatus());
                tcecClient.pushChargingGunStatus(tChargingGun.getFullNumber(), tChargingGun1.getStatus());
                
                if(chargingPile.getStatus() != 1){
                    TChargingPile chargingPile1 = new TChargingPile();
@@ -287,7 +287,7 @@
                tChargingGun1.setStatus(7);
                chargingGunService.updateById(tChargingGun1);
                //推送状态给三方平台
                tcecClient.pushChargingGunStatus(tChargingGun.getId(), tChargingGun1.getStatus());
                tcecClient.pushChargingGunStatus(tChargingGun.getFullNumber(), tChargingGun1.getStatus());
                
                //桩处于正常,桩所属的枪都处于非正常,修改桩状态为异常
                List<TChargingGun> list = chargingGunService.list(new LambdaQueryWrapper<TChargingGun>().eq(TChargingGun::getChargingPileId, chargingPile.getId()).eq(TChargingGun::getDelFlag, 0));
@@ -332,14 +332,14 @@
                    chargingGunService.updateById(tChargingGun1);
                    
                    //推送状态给三方平台
                    tcecClient.pushChargingGunStatus(tChargingGun.getId(), tChargingGun1.getStatus());
                    tcecClient.pushChargingGunStatus(tChargingGun.getFullNumber(), tChargingGun1.getStatus());
                }else{
                    TChargingGun tChargingGun1 = new TChargingGun();
                    tChargingGun1.setId(tChargingGun.getId());
                    tChargingGun1.setStatus(3);
                    chargingGunService.updateById(tChargingGun1);
                    //推送状态给三方平台
                    tcecClient.pushChargingGunStatus(tChargingGun.getId(), tChargingGun1.getStatus());
                    tcecClient.pushChargingGunStatus(tChargingGun.getFullNumber(), tChargingGun1.getStatus());
                }
                
                List<TFaultMessage> list = faultMessageService.list(new LambdaQueryWrapper<TFaultMessage>().eq(TFaultMessage::getChargingGunId, tChargingGun.getId())
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java
@@ -699,7 +699,7 @@
                chargingGun1.setStatus(1);
                chargingGunService.updateById(chargingGun1);
                //推送状态给三方平台
                tcecClient.pushChargingGunStatus(chargingGun1.getId(), chargingGun1.getStatus());
                tcecClient.pushChargingGunStatus(chargingGun1.getFullNumber(), chargingGun1.getStatus());
                
                //桩处于正常,桩所属的枪都处于非正常,修改桩状态为异常
                TChargingPile chargingPile = this.getById(chargingGun.getChargingPileId());
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/server/ParkingOrderService.java
@@ -86,6 +86,9 @@
        query.setLicensePlate(order.getPlate());
        query.setStatus(1);
        TParkingRecord parkingRecord = parkingRecordClient.getParkingRecord(query).getData();
        if(null == parkingRecord){
            return;
        }
        TParkingLot parkingLot = parkingLotClient.getParkingLotByAppKey(order.getAppkey()).getData();
        LocalDateTime parse = LocalDateTime.parse(order.getLeaveDateTime(), DateTimeFormatter.ISO_DATE_TIME);
        parse = parse.plusHours(8);
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/TCECController.java
@@ -8,10 +8,12 @@
import com.ruoyi.common.core.dto.ChargingPercentProvinceDto;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.core.web.page.PageInfo;
import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData;
import com.ruoyi.integration.drainage.kuaidian.TCECKDUtil;
import com.ruoyi.integration.drainage.kuaidian.model.*;
import com.ruoyi.integration.drainage.model.*;
import com.ruoyi.integration.drainage.model.enu.*;
import com.ruoyi.integration.mongodb.service.UploadRealTimeMonitoringDataService;
import com.ruoyi.order.api.feignClient.ChargingOrderAccountingStrategyClient;
import com.ruoyi.order.api.feignClient.ChargingOrderClient;
import com.ruoyi.order.api.model.AddTripartitePlatformOrder;
@@ -20,6 +22,7 @@
import com.ruoyi.order.api.model.TChargingOrderAccountingStrategy;
import com.ruoyi.other.api.domain.Operator;
import com.ruoyi.other.api.feignClient.OperatorClient;
import com.ruoyi.other.api.feignClient.SystemConfigurationClient;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.web.bind.annotation.*;
@@ -66,6 +69,9 @@
    private ChargingOrderAccountingStrategyClient chargingOrderAccountingStrategyClient;
    
    @Resource
    private UploadRealTimeMonitoringDataService uploadRealTimeMonitoringDataService;
    @Resource
    private TokenUtil tokenUtil;
    @Resource
@@ -73,6 +79,9 @@
    
    @Resource
    private ParkingRecordClient parkingRecordClient;
    @Resource
    private SystemConfigurationClient systemConfigurationClient;
    
    
    
@@ -263,7 +272,7 @@
        List<TChargingPile> tChargingPiles = chargingPileClient.getChargingPileBySiteIds(siteIds).getData();
        List<Integer> collect1 = tChargingPiles.stream().map(TChargingPile::getId).collect(Collectors.toList());
        List<TChargingGun> chargingGunList = chargingGunClient.getChargingGunByChargingPileIds(collect1).getData();
        String serviceTel = systemConfigurationClient.getServerPhone().getData();
        List<StationInfo> StationInfos = new ArrayList<>();
        for (Site datum : sites) {
            StationInfo stationInfo = new StationInfo();
@@ -275,7 +284,7 @@
            stationInfo.setAreaCode(datum.getDistrictsCode());
            stationInfo.setAddress(datum.getAddress());
            stationInfo.setStationTel(datum.getPhone());
            stationInfo.setServiceTel(datum.getServicePhone());
            stationInfo.setServiceTel(serviceTel);
            switch (datum.getSiteType()){
                case 0:
                    stationInfo.setStationType(StationTypeEnum.OTHER.getType());
@@ -410,7 +419,7 @@
        List<TChargingGun> collect = chargingGunList.stream().filter(s -> s.getChargingPileId().equals(chargingPileId)).collect(Collectors.toList());
        for (TChargingGun chargingGun : collect) {
            ConnectorInfo connectorInfo = new ConnectorInfo();
            connectorInfo.setConnectorID(chargingGun.getId().toString());
            connectorInfo.setConnectorID(chargingGun.getFullNumber());
            connectorInfo.setConnectorName(chargingGun.getName());
            switch (chargingGun.getType()){
                case 0:
@@ -450,9 +459,9 @@
     * @return
     */
    @PostMapping("/pushChargingGunStatus")
    public R pushChargingGunStatus(@RequestParam("id") Integer id, @RequestParam("status") Integer status){
    public R pushChargingGunStatus(@RequestParam("fullNumber") String fullNumber, @RequestParam("status") Integer status){
        ConnectorStatusInfo connectorStatusInfo = new ConnectorStatusInfo();
        connectorStatusInfo.setConnectorID(id.toString());
        connectorStatusInfo.setConnectorID(fullNumber);
        switch (status){
            case 1:
                connectorStatusInfo.setStatus(0);
@@ -526,7 +535,7 @@
            List<TChargingGun> collect2 = chargingGunList.stream().filter(s -> s.getSiteId().equals(datum.getId())).collect(Collectors.toList());
            for (TChargingGun chargingGun : collect2) {
                ConnectorStatusInfo info = new ConnectorStatusInfo();
                info.setConnectorID(chargingGun.getId().toString());
                info.setConnectorID(chargingGun.getFullNumber());
                switch (chargingGun.getStatus()){
                    case 1:
                        info.setStatus(0);
@@ -622,8 +631,9 @@
                List<TChargingOrder> tChargingOrders1 = collect2.get(integer1);
                BigDecimal reduce2 = tChargingOrders1.stream().map(TChargingOrder::getChargingCapacity).reduce(BigDecimal.ZERO, BigDecimal::add);
                
                TChargingGun chargingGun = chargingGunClient.getChargingGunById(integer1).getData();
                ConnectorStatsInfo connectorStatsInfo = new ConnectorStatsInfo();
                connectorStatsInfo.setConnectorID(integer1.toString());
                connectorStatsInfo.setConnectorID(chargingGun.getFullNumber());
                connectorStatsInfo.setConnectorElectricity(reduce2);
                ConnectorStatsInfos.add(connectorStatsInfo);
            }
@@ -665,7 +675,7 @@
        log.info("三方平台设备认证请求Data:" + decrypt);
        QueryEquipAuth queryEquipAuth = JSON.parseObject(decrypt, QueryEquipAuth.class);
        String connectorID = queryEquipAuth.getConnectorID();
        TChargingGun tChargingGun = chargingGunClient.getChargingGunById(Integer.valueOf(connectorID)).getData();
        TChargingGun tChargingGun = chargingGunClient.getChargingGunByFullNumber(connectorID).getData();
        if(null == tChargingGun){
            baseResult.setRet(4004);
            baseResult.setMsg("connectorID 参数无效");
@@ -747,7 +757,7 @@
        queryEquipBusinessPolicyResult.setSuccStat(0);
        queryEquipBusinessPolicyResult.setFailReason(0);
        String connectorID = queryEquipBusinessPolicy.getConnectorID();
        TChargingGun tChargingGun = chargingGunClient.getChargingGunById(Integer.valueOf(connectorID)).getData();
        TChargingGun tChargingGun = chargingGunClient.getChargingGunByFullNumber(connectorID).getData();
        if(null == tChargingGun){
            baseResult.setRet(4004);
            baseResult.setMsg("connectorID 参数无效");
@@ -870,7 +880,7 @@
        result.setStartChargeSeq(queryStartCharge.getStartChargeSeq());
        result.setConnectorID(queryStartCharge.getConnectorID());
        String connectorID = queryStartCharge.getConnectorID();
        TChargingGun tChargingGun = chargingGunClient.getChargingGunById(Integer.valueOf(connectorID)).getData();
        TChargingGun tChargingGun = chargingGunClient.getChargingGunByFullNumber(connectorID).getData();
        //设备不存在
        if(null == tChargingGun){
            baseResult.setRet(4004);
@@ -934,6 +944,27 @@
        baseResult.setData(encrypt);
        baseResult.setSig(TCECUtil.ourBuildSign(baseResult));
        log.info("三方平台请求开始充电响应参数:" + JacksonUtils.toJson(baseResult));
        //定义定时任务推送订单状态
        ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
        Runnable task = new Runnable() {
            @Override
            public void run() {
                try {
                    TChargingOrder chargingOrder = chargingOrderClient.getChargingOrderByStartChargeSeq(result.getStartChargeSeq()).getData();
                    if(chargingOrder.getStatus() != 3){
                        scheduler.shutdown();
                        return;
                    }
                    log.info("开始执行三方平台定时推送");
                    notificationEquipChargeStatus(chargingOrder.getStartChargeSeq(), chargingOrder.getOperatorId());
                }catch (Exception e){
                    e.printStackTrace();
                }
            }
        };
        //一分钟执行一次
        scheduler.scheduleAtFixedRate(task, 10, 10, TimeUnit.SECONDS);
        return baseResult;
    }
    
@@ -978,22 +1009,6 @@
                }
            });
        }
        //定义定时任务推送订单状态
        ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
        Runnable task = new Runnable() {
            @Override
            public void run() {
                TChargingOrder chargingOrder = chargingOrderClient.getChargingOrderByStartChargeSeq(result.getStartChargeSeq()).getData();
                if(null == chargingOrder || chargingOrder.getStatus() != 3){
                    scheduler.shutdown();
                    return;
                }
                notificationEquipChargeStatus(result.getStartChargeSeq(), operator.getId());
            }
        };
        //一分钟执行一次
        scheduler.scheduleAtFixedRate(task, 1, 1, TimeUnit.MINUTES);
        return R.ok();
    }
    
@@ -1067,8 +1082,8 @@
                queryEquipChargeStatusResult.setStartChargeSeqStat(4);
                break;
        }
        queryEquipChargeStatusResult.setConnectorID(chargingOrder.getChargingGunId().toString());
        TChargingGun chargingGun = chargingGunClient.getChargingGunById(chargingOrder.getChargingGunId()).getData();
        queryEquipChargeStatusResult.setConnectorID(chargingGun.getFullNumber());
        //1=离线,2=空闲,3=占用(未充电),4=占用(充电中),5=占用(已充满),6=占用(预约锁定),7=故障
        switch (chargingGun.getStatus()){
            case 1:
@@ -1095,19 +1110,29 @@
        }
        queryEquipChargeStatusResult.setCurrentA(chargingOrder.getCurrent());
        queryEquipChargeStatusResult.setVoltageA(chargingOrder.getVoltage());
        queryEquipChargeStatusResult.setSoc(chargingOrder.getTotalElectricity());
        UploadRealTimeMonitoringData timeMonitoringData = uploadRealTimeMonitoringDataService.getLastDataById(chargingOrder.getCode());
        queryEquipChargeStatusResult.setSoc(null == timeMonitoringData ? BigDecimal.ZERO : new BigDecimal(timeMonitoringData.getSoc()));
        queryEquipChargeStatusResult.setStartTime((null == chargingOrder.getStartTime() ? chargingOrder.getCreateTime() : chargingOrder.getStartTime()).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
        queryEquipChargeStatusResult.setEndTime((null == chargingOrder.getEndTime() ? LocalDateTime.now() : chargingOrder.getEndTime()).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
        queryEquipChargeStatusResult.setTotalPower(chargingOrder.getElectricity());
        queryEquipChargeStatusResult.setElecMoney(chargingOrder.getTotalElectricity());
        queryEquipChargeStatusResult.setSeviceMoney(chargingOrder.getServiceCharge());
        queryEquipChargeStatusResult.setTotalMoney(chargingOrder.getTotalElectricity().add(chargingOrder.getServiceCharge()));
        List<TChargingOrderAccountingStrategy> data = chargingOrderAccountingStrategyClient.getChargingOrderAccountingStrategyByOrderId(chargingOrder.getId()).getData();
        if(data.size() > 0){
            BigDecimal totalElectricity = data.stream().map(TChargingOrderAccountingStrategy::getPeriodElectricPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
            BigDecimal serviceCharge = data.stream().map(TChargingOrderAccountingStrategy::getPeriodServicePrice).reduce(BigDecimal.ZERO, BigDecimal::add);
            queryEquipChargeStatusResult.setElecMoney(totalElectricity);
            queryEquipChargeStatusResult.setSeviceMoney(serviceCharge);
            queryEquipChargeStatusResult.setTotalMoney(chargingOrder.getPaymentAmount());
        }else{
            queryEquipChargeStatusResult.setElecMoney(chargingOrder.getRechargeAmount().subtract(chargingOrder.getResidualAmount()));
            queryEquipChargeStatusResult.setSeviceMoney(BigDecimal.ZERO);
            queryEquipChargeStatusResult.setTotalMoney(chargingOrder.getRechargeAmount().subtract(chargingOrder.getResidualAmount()));
        }
        
        //构建充电明细
        List<ChargeDetail> chargeDetails = new ArrayList<>();
        List<TChargingOrderAccountingStrategy> data = chargingOrderAccountingStrategyClient.getChargingOrderAccountingStrategyByOrderId(chargingOrder.getId()).getData();
        
        LocalDateTime startTime = chargingOrder.getStartTime();
        LocalDateTime startTime = null == chargingOrder.getStartTime() ? LocalDateTime.now() : chargingOrder.getStartTime();
        LocalDateTime endTime = null == chargingOrder.getEndTime() ? LocalDateTime.now() : chargingOrder.getEndTime();
        String s_format = startTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
        String e_format = endTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
@@ -1337,14 +1362,26 @@
        if(null == chargingOrder){
            return null;
        }
        notificationChargeOrderInfo.setConnectorID(chargingOrder.getChargingGunId().toString());
        TChargingGun chargingGun = chargingGunClient.getChargingGunById(chargingOrder.getChargingGunId()).getData();
        notificationChargeOrderInfo.setConnectorID(chargingGun.getFullNumber());
        notificationChargeOrderInfo.setStartTime((null == chargingOrder.getStartTime() ? chargingOrder.getCreateTime() : chargingOrder.getStartTime()).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
        notificationChargeOrderInfo.setEndTime((null == chargingOrder.getEndTime() ? LocalDateTime.now() : chargingOrder.getEndTime()).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
        notificationChargeOrderInfo.setTotalPower(chargingOrder.getElectricity());
        notificationChargeOrderInfo.setTotalElecMoney(chargingOrder.getTotalElectricity());
        notificationChargeOrderInfo.setTotalSeviceMoney(chargingOrder.getServiceCharge());
        notificationChargeOrderInfo.setTotalMoney(chargingOrder.getTotalElectricity().add(chargingOrder.getServiceCharge()));
        notificationChargeOrderInfo.setTotalDelayMoney(BigDecimal.ZERO);
        List<TChargingOrderAccountingStrategy> data = chargingOrderAccountingStrategyClient.getChargingOrderAccountingStrategyByOrderId(chargingOrder.getId()).getData();
        if(data.size() > 0){
            BigDecimal totalElectricity = data.stream().map(TChargingOrderAccountingStrategy::getPeriodElectricPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
            BigDecimal serviceCharge = data.stream().map(TChargingOrderAccountingStrategy::getPeriodServicePrice).reduce(BigDecimal.ZERO, BigDecimal::add);
            notificationChargeOrderInfo.setTotalElecMoney(totalElectricity.setScale(2, RoundingMode.HALF_EVEN));
            notificationChargeOrderInfo.setTotalSeviceMoney(serviceCharge.setScale(2, RoundingMode.HALF_EVEN));
            notificationChargeOrderInfo.setTotalMoney(chargingOrder.getPaymentAmount());
        }else{
            notificationChargeOrderInfo.setTotalElecMoney(chargingOrder.getRechargeAmount().subtract(chargingOrder.getResidualAmount()));
            notificationChargeOrderInfo.setTotalSeviceMoney(BigDecimal.ZERO);
            notificationChargeOrderInfo.setTotalMoney(chargingOrder.getRechargeAmount().subtract(chargingOrder.getResidualAmount()));
        }
        TParkingRecord parkingRecord = parkingRecordClient.getParkingRecordByChargingOrderId(chargingOrder.getId()).getData();
        if(null != parkingRecord && parkingRecord.getStatus() == 3){
            notificationChargeOrderInfo.setTotalDelayMoney(parkingRecord.getPayment());
@@ -1368,9 +1405,8 @@
        
        //构建充电明细
        List<ChargeDetail> chargeDetails = new ArrayList<>();
        List<TChargingOrderAccountingStrategy> data = chargingOrderAccountingStrategyClient.getChargingOrderAccountingStrategyByOrderId(chargingOrder.getId()).getData();
        
        LocalDateTime startTime = chargingOrder.getStartTime();
        LocalDateTime startTime = null == chargingOrder.getStartTime() ? LocalDateTime.now() : chargingOrder.getStartTime();
        LocalDateTime endTime = null == chargingOrder.getEndTime() ? LocalDateTime.now() : chargingOrder.getEndTime();
        String s_format = startTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
        String e_format = endTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
@@ -1536,9 +1572,10 @@
            if(null == chargingOrder){
                return null;
            }
            TChargingGun chargingGun = chargingGunClient.getChargingGunById(chargingOrder.getChargingGunId()).getData();
            OrderInfo orderInfo = new OrderInfo();
            orderInfo.setStartChargeSeq(chargingOrder.getStartChargeSeq());
            orderInfo.setConnectorID(chargingOrder.getChargingGunId().toString());
            orderInfo.setConnectorID(chargingGun.getFullNumber());
            orderInfo.setStartTime((null == chargingOrder.getStartTime() ? chargingOrder.getCreateTime() : chargingOrder.getStartTime()).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
            orderInfo.setEndTime((null == chargingOrder.getEndTime() ? LocalDateTime.now() : chargingOrder.getEndTime()).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
            orderInfo.setTotalPower(chargingOrder.getTotalElectricity());
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/impl/PingServiceImpl.java
@@ -37,6 +37,6 @@
    
    @Override
    public void delPing() {
        mongoTemplate.remove(new Query().addCriteria(Criteria.where("create_time").lt(LocalDateTime.now().minusDays(1))));
        mongoTemplate.remove(new Query().addCriteria(Criteria.where("create_time").lt(LocalDateTime.now().minusDays(1))), Ping.class);
    }
}
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/UploadRealTimeMonitoringDataMessageListener.java
@@ -129,7 +129,7 @@
            }
            chargingGunClient.updateChargingGunById(chargingGun);
            //推送状态给三方平台
            tcecClient.pushChargingGunStatus(chargingGun.getId(), chargingGun.getStatus());
            tcecClient.pushChargingGunStatus(chargingGun.getFullNumber(), chargingGun.getStatus());
        }
    }
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/util/TaskUtil.java
@@ -36,9 +36,9 @@
    
    
    
    @Scheduled(cron = "0 0 0 * * ?")
    @Scheduled(cron = "0 0 3 * * ?")
    public void task2() {
        pingService.delPing();
        pongService.delPong();
//        pingService.delPing();
//        pongService.delPong();
    }
}
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
@@ -764,6 +764,18 @@
    
    
    /**
     *
     * @param code
     */
    @ResponseBody
    @PostMapping(value = "/refund")
    public R refund(@RequestParam(value = "code") String code){
        chargingOrderService.refund(code);
        return R.ok();
    }
    /**
     * 远程启动失败后退款回调
     */
    @ResponseBody
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java
@@ -100,8 +100,13 @@
     * @return
     */
    AjaxResult chargingOrderStartupFailureWxRefund(String out_refund_no, String refund_id, String tradeState, String success_time);
    /**
     * 启动失败退款操作
     * @param code
     */
    void refund(String code);
    /**
     * 获取充电中的详情
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -859,7 +859,7 @@
            chargingGun.setStatus(4);
            chargingGunClient.updateChargingGunById(chargingGun);
            //推送状态给三方平台
            tcecClient.pushChargingGunStatus(chargingGun.getId(), chargingGun.getStatus());
            tcecClient.pushChargingGunStatus(chargingGun.getFullNumber(), chargingGun.getStatus());
        }
        redisService.setCacheObject("AQJC_" + order.getChargingGunId(), preChargeCheck1, 24L, TimeUnit.HOURS);
        this.updateById(order);
@@ -2007,6 +2007,9 @@
    @GlobalTransactional(rollbackFor = Exception.class)
    public R endChargeBillingCharge(TransactionRecordMessageVO vo) {
        TChargingOrder chargingOrder = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, vo.getTransaction_serial_number()));
        if(null == chargingOrder){
            return R.ok();
        }
        Integer status = chargingOrder.getStatus();
        if(status == 5){
            return R.ok();
@@ -2358,7 +2361,7 @@
        chargingGunClient.updateChargingGunById(chargingGun);
        //推送状态给三方平台
        if(2 == chargingOrder.getOrderSource()){
            tcecClient.pushChargingGunStatus(chargingGun.getId(), chargingGun.getStatus());
            tcecClient.pushChargingGunStatus(chargingGun.getFullNumber(), chargingGun.getStatus());
        }
        
        //添加积分
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TSystemConfigurationController.java
@@ -1,7 +1,9 @@
package com.ruoyi.other.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.log.annotation.Log;
import com.ruoyi.common.log.enums.BusinessType;
@@ -65,6 +67,20 @@
        systemConfigurationService.saveOrUpdate(systemConfiguration);
        return AjaxResult.success();
    }
    /**
     * 获取客服电话
     * @return
     */
    @PostMapping(value = "/getServerPhone")
    public R<String> getServerPhone(){
        TSystemConfiguration one = systemConfigurationService.getOne(new LambdaQueryWrapper<TSystemConfiguration>().eq(TSystemConfiguration::getType, 1));
        if(null != one){
            return R.ok(one.getContent());
        }
        return R.ok();
    }
}