Pu Zhibing
2025-11-27 ee90d67775ec0926eb2e6ab4632a10ab0c461b7d
新增加成都监管数据对接
1个文件已删除
1个文件已添加
14个文件已修改
644 ■■■■■ 已修改文件
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/Site.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TChargingPile.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-jianguan/src/main/java/com/ruoyi/integration/api/factory/ChengDuJianGuanClientFallbackFactory.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-jianguan/src/main/java/com/ruoyi/integration/api/feignClient/ChengDuJianGuanClient.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-jianguan/src/main/java/com/ruoyi/integration/api/vo/NotificationConnectorChargeStatusVo.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-jianguan/src/main/java/com/ruoyi/integration/api/vo/NotificationStationFeeVo.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyController.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingPileController.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/SiteServiceImpl.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingGunServiceImpl.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/chengdujianguan/ChengDuJianGuanController.java 311 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/chengdujianguan/ChengDuJianGuanUtil.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/chengdujianguan/model/CDOrderInfo.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/task/TaskUtil.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/Site.java
@@ -459,20 +459,11 @@
    @TableField("isOpenSynchronization")
    @ApiModelProperty(value = "引流平台数据同步(0=否,1=是)")
    private Integer isOpenSynchronization;
//    /**
//     * 换电设备信息
//     */
//    @TableField("swap_equipment_infos")
//    @ApiModelProperty(value = "2.0修改字段-换电设备信息 站点分类为2或3时必填 示例:" +
//            "[{" +
//            "\"SwapMechanicalEquipmentID\": \"A564778B\"," +
//            "\"MechanicalEquipmentPower\": 128.0000" +
//            "}," +
//            "{" +
//            "\"SwapMechanicalEquipmentID\": \"A564778C\"," +
//            "\"MechanicalEquipmentPower\": 150.0000" +
//            "}" +
//            "]")
//    private String swapEquipmentInfos;
    /**
     * 是否有储能设施(0:无,1:有)
     */
    @TableField("isEnergyStorage")
    @ApiModelProperty(value = "是否有储能设施(0:无,1:有)")
    private Integer isEnergyStorage;
}
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TChargingPile.java
@@ -112,4 +112,16 @@
    @ApiModelProperty(value = "充电设备纬度")
    @TableField("equipment_lat")
    private String equipmentLat;
    @ApiModelProperty(value = "设备出厂编码")
    @TableField("equipment_product_code")
    private String equipmentProductCode;
    @ApiModelProperty(value = "设备用途 1:公共,50:个人, 100:公交(专用), 101:环卫(专用),102:物流(专用),103:出租车(专用),104:分时租赁(专用),106:单位(专用),107:移动站点(移动储能设备), 108:居民小区(公共), 109:居民小区(专用)")
    @TableField("equipment_purpose")
    private Integer equipmentPurpose;
    @ApiModelProperty(value = "新国标 0:否,1:是")
    @TableField("new_national_standard")
    private Integer newNationalStandard;
    @ApiModelProperty(value = "是否支持VIN码识别 0:否,1:是")
    @TableField("vin_flag")
    private Integer vinFlag;
}
ruoyi-api/ruoyi-api-jianguan/src/main/java/com/ruoyi/integration/api/factory/ChengDuJianGuanClientFallbackFactory.java
@@ -2,7 +2,7 @@
import com.ruoyi.common.core.domain.R;
import com.ruoyi.integration.api.feignClient.ChengDuJianGuanClient;
import com.ruoyi.integration.api.vo.NotificationStationFeeVo;
import com.ruoyi.integration.api.vo.NotificationConnectorChargeStatusVo;
import org.springframework.cloud.openfeign.FallbackFactory;
public class ChengDuJianGuanClientFallbackFactory implements FallbackFactory<ChengDuJianGuanClient> {
@@ -15,9 +15,25 @@
            }
            @Override
            public R notificationStationFee(NotificationStationFeeVo vo) {
            public R notificationStationFee(Integer chargingPileId) {
                return R.fail("站点费率变化推送失败:" + cause.getMessage());
            }
            @Override
            public R notificationStationStatus(Integer chargingGunId) {
                return R.fail("设备状态变化推送失败:" + cause.getMessage());
            }
            @Override
            public R notificationConnectorChargeStatus(NotificationConnectorChargeStatusVo vo) {
                return R.fail("设备充电中状态变化推送失败:" + cause.getMessage());
            }
            @Override
            public R notificationOrderInfo(NotificationConnectorChargeStatusVo vo) {
                return R.fail("订单信息推送失败:" + cause.getMessage());
            }
        };
    }
}
ruoyi-api/ruoyi-api-jianguan/src/main/java/com/ruoyi/integration/api/feignClient/ChengDuJianGuanClient.java
@@ -4,7 +4,7 @@
import com.ruoyi.common.core.constant.ServiceNameConstants;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.integration.api.factory.ChengDuJianGuanClientFallbackFactory;
import com.ruoyi.integration.api.vo.NotificationStationFeeVo;
import com.ruoyi.integration.api.vo.NotificationConnectorChargeStatusVo;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@@ -25,9 +25,36 @@
    /**
     * 站点费率变化推送
     * @param vo
     * @param chargingPileId
     * @return
     */
    @PostMapping("/chengdu/jianguan/notificationStationFee")
    R notificationStationFee(@RequestBody NotificationStationFeeVo vo);
    R notificationStationFee(@RequestParam("chargingPileId") Integer chargingPileId);
    /**
     * 设备状态变化推送
     * @param chargingGunId
     * @return
     */
    @PostMapping("/chengdu/jianguan/notificationStationStatus")
    R notificationStationStatus(@RequestParam("chargingGunId") Integer chargingGunId);
    /**
     * 设备充电中状态变化推送
     * @param vo
     * @return
     */
    @PostMapping("/chengdu/jianguan/notificationConnectorChargeStatus")
    R notificationConnectorChargeStatus(@RequestBody NotificationConnectorChargeStatusVo vo);
    /**
     * 订单信息推送
     * @param vo
     * @return
     */
    @PostMapping("/chengdu/jianguan/notificationOrderInfo")
    R notificationOrderInfo(@RequestBody NotificationConnectorChargeStatusVo vo);
}
ruoyi-api/ruoyi-api-jianguan/src/main/java/com/ruoyi/integration/api/vo/NotificationConnectorChargeStatusVo.java
New file
@@ -0,0 +1,15 @@
package com.ruoyi.integration.api.vo;
import lombok.Data;
@Data
public class NotificationConnectorChargeStatusVo {
    /**
     * 充电枪id
     */
    private Integer chargingGunId;
    /**
     * 充电订单code
     */
    private String orderCode;
}
ruoyi-api/ruoyi-api-jianguan/src/main/java/com/ruoyi/integration/api/vo/NotificationStationFeeVo.java
File was deleted
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyController.java
@@ -27,6 +27,7 @@
import com.ruoyi.common.security.annotation.RequiresPermissions;
import com.ruoyi.common.security.service.TokenService;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.integration.api.feignClient.ChengDuJianGuanClient;
import com.ruoyi.integration.api.feignClient.IntegrationClient;
import com.ruoyi.integration.api.feignClient.TCECClient;
import com.ruoyi.system.api.domain.SysUser;
@@ -76,6 +77,9 @@
    
    @Resource
    private TCECClient tcecClient;
    @Resource
    private ChengDuJianGuanClient chengDuJianGuanClient;
    @Autowired
@@ -140,6 +144,7 @@
            List<TChargingPile> list = chargingPileService.lambdaQuery().eq(TChargingPile::getSiteId, dto.getSiteId()).eq(TChargingPile::getDelFlag, 0).list();
            for (TChargingPile tChargingPile : list) {
                integrationClient.setupBillingModel1(tChargingPile.getCode(), JSON.toJSONString(dto.getAccountingStrategyDetails()));
                chengDuJianGuanClient.notificationStationFee(tChargingPile.getId());
            }
        }
        return AjaxResult.ok(dto.getId());
@@ -217,6 +222,7 @@
            List<TChargingPile> list = chargingPileService.lambdaQuery().eq(TChargingPile::getSiteId, dto.getSiteId()).eq(TChargingPile::getDelFlag, 0).list();
            for (TChargingPile tChargingPile : list) {
                integrationClient.setupBillingModel1(tChargingPile.getCode(), JSON.toJSONString(dto.getAccountingStrategyDetails()));
                chengDuJianGuanClient.notificationStationFee(tChargingPile.getId());
            }
        }
        return AjaxResult.success();
@@ -407,6 +413,7 @@
                List<TChargingPile> list = chargingPileService.lambdaQuery().eq(TChargingPile::getSiteId, byId.getSiteId()).list();
                for (TChargingPile tChargingPile : list) {
                    integrationClient.setupBillingModel1(tChargingPile.getCode(), JSON.toJSONString(accountingStrategyDetails));
                    chengDuJianGuanClient.notificationStationFee(tChargingPile.getId());
                }
            }
        }else {
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingPileController.java
@@ -33,6 +33,7 @@
import com.ruoyi.common.security.annotation.RequiresPermissions;
import com.ruoyi.integration.api.elutong.model.ConnectorStatusInfo;
import com.ruoyi.integration.api.elutong.model.ConnectorStatusReq;
import com.ruoyi.integration.api.feignClient.ChengDuJianGuanClient;
import com.ruoyi.integration.api.feignClient.ELuTongClient;
import com.ruoyi.integration.api.feignClient.TCECClient;
import com.ruoyi.order.api.feignClient.ChargingOrderClient;
@@ -88,6 +89,9 @@
    @Resource
    private ELuTongClient eLuTongClient;
    @Resource
    private ChengDuJianGuanClient chengDuJianGuanClient;
@@ -424,6 +428,7 @@
            if(200 != r.getCode()){
                log.error(r.getMsg());
            }
            chengDuJianGuanClient.notificationStationStatus(chargingGun.getId());
        }
    }
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/SiteServiceImpl.java
@@ -26,6 +26,7 @@
import com.ruoyi.common.security.service.TokenService;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.integration.api.elutong.model.*;
import com.ruoyi.integration.api.feignClient.ChengDuJianGuanClient;
import com.ruoyi.integration.api.feignClient.ELuTongClient;
import com.ruoyi.integration.api.feignClient.IntegrationClient;
import com.ruoyi.integration.api.feignClient.TCECClient;
@@ -47,6 +48,7 @@
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.concurrent.LinkedBlockingDeque;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
@@ -99,6 +101,9 @@
    private TCECClient tcecClient;
    @Resource ELuTongClient eLuTongClient;
    @Resource
    private ChengDuJianGuanClient chengDuJianGuanClient;
    
    
    /**
@@ -228,6 +233,9 @@
                if(200 != r.getCode()){
                    System.out.println(r.getMsg());
                }
                //推送成都监管
                chengDuJianGuanClient.notificationStationInfo(site.getId());
            });
        }
        return AjaxResult.success();
@@ -437,6 +445,8 @@
                if(200 != r.getCode()){
                    System.out.println(r.getMsg());
                }
                //推送成都监管
                chengDuJianGuanClient.notificationStationInfo(site.getId());
            });
        }
        return AjaxResult.success();
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingGunServiceImpl.java
@@ -23,6 +23,7 @@
import com.ruoyi.common.core.web.page.PageInfo;
import com.ruoyi.common.security.service.TokenService;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.integration.api.feignClient.ChengDuJianGuanClient;
import com.ruoyi.integration.api.feignClient.SendMessageClient;
import com.ruoyi.integration.api.feignClient.TCECClient;
import com.ruoyi.integration.api.model.QrCodeDelivery;
@@ -38,6 +39,10 @@
import javax.annotation.Resource;
import java.util.*;
import java.util.concurrent.LinkedBlockingDeque;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
/**
@@ -121,8 +126,15 @@
        return pageInfo;
    }
@Autowired
private SiteMapper siteMapper;
    @Autowired
    private SiteMapper siteMapper;
    @Resource
    private ChengDuJianGuanClient chengDuJianGuanClient;
    /**
     * 添加充电枪
     * @param dto
@@ -155,8 +167,11 @@
        qrCodeDelivery.setCreate_time(new Date());
        qrCodeDelivery.setLast_time(new Date());
        sendMessageClient.qrCodeDelivery(qrCodeDelivery);
        Site site = siteMapper.selectById(chargingPile.getSiteId());
        // 推送充换电站信息
        ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.SECONDS, new LinkedBlockingDeque<>());
        threadPoolExecutor.execute(()->{
            //推送成都监管
            chengDuJianGuanClient.notificationStationInfo(chargingPile.getSiteId());
        });
        return AjaxResult.success();
    }
    
@@ -198,7 +213,11 @@
        qrCodeDelivery.setLast_time(new Date());
        sendMessageClient.qrCodeDelivery(qrCodeDelivery);
        tcecClient.superviseNotificationStationInfo(one.getSiteId());
        ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.SECONDS, new LinkedBlockingDeque<>());
        threadPoolExecutor.execute(()->{
            //推送成都监管
            chengDuJianGuanClient.notificationStationInfo(chargingPile.getSiteId());
        });
        return AjaxResult.success();
    }
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java
@@ -54,6 +54,9 @@
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.util.*;
import java.util.concurrent.LinkedBlockingDeque;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
/**
@@ -128,6 +131,9 @@
    @Resource
    private AppUserClient appUserClient;
    @Resource
    private ChengDuJianGuanClient chengDuJianGuanClient;
    
    
@@ -211,6 +217,11 @@
            chargingPile.setIotdDeviceId(showDeviceResp.getDeviceId());
        }
        this.save(chargingPile);
        ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.SECONDS, new LinkedBlockingDeque<>());
        threadPoolExecutor.execute(()->{
            //推送成都监管
            chengDuJianGuanClient.notificationStationInfo(chargingPile.getSiteId());
        });
        return AjaxResult.success();
    }
    
@@ -330,6 +341,12 @@
            sendMessageClient.qrCodeDelivery(qrCodeDelivery);
        }
        tcecClient.superviseNotificationStationInfo(chargingPile.getSiteId());
        ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.SECONDS, new LinkedBlockingDeque<>());
        threadPoolExecutor.execute(()->{
            //推送成都监管
            chengDuJianGuanClient.notificationStationInfo(chargingPile.getSiteId());
        });
        return AjaxResult.success();
    }
    
ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/chengdujianguan/ChengDuJianGuanController.java
@@ -12,16 +12,16 @@
import com.ruoyi.chargingPile.api.vo.GetChargingGunByChargingPileIdsVo;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.integration.api.vo.NotificationStationFeeVo;
import com.ruoyi.integration.api.vo.SiteVo;
import com.ruoyi.integration.api.vo.TAccountingStrategyDetailVo;
import com.ruoyi.integration.api.vo.TChargingPileVo;
import com.ruoyi.integration.api.vo.NotificationConnectorChargeStatusVo;
import com.ruoyi.jianguan.chengdujianguan.enu.*;
import com.ruoyi.jianguan.chengdujianguan.model.CDEquipmentInfo;
import com.ruoyi.jianguan.chengdujianguan.model.CDStationInfo;
import com.ruoyi.jianguan.chengdujianguan.model.ChargeFeeDetail;
import com.ruoyi.jianguan.chengdujianguan.model.NotificationStationFee;
import com.ruoyi.jianguan.chengdujianguan.model.*;
import com.ruoyi.jianguan.model.ChargeDetail;
import com.ruoyi.jianguan.model.ConnectorInfo;
import com.ruoyi.jianguan.model.ConnectorStatusInfo;
import com.ruoyi.order.api.feignClient.ChargingOrderAccountingStrategyClient;
import com.ruoyi.order.api.feignClient.ChargingOrderClient;
import com.ruoyi.order.api.model.TChargingOrder;
import com.ruoyi.order.api.model.TChargingOrderAccountingStrategy;
import com.ruoyi.other.api.feignClient.SystemConfigurationClient;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.*;
@@ -29,10 +29,13 @@
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
@RestController
@@ -57,6 +60,14 @@
    @Resource
    private AccountingStrategyDetailClient accountingStrategyDetailClient;
    @Resource
    private ChargingOrderClient chargingOrderClient;
    @Resource
    private ChargingOrderAccountingStrategyClient chargingOrderAccountingStrategyClient;
    //成都、眉山、阿坝
    private List<String> list = Arrays.asList("510100", "511400", "513200");
    /**
     * 充电站信息变化推送
@@ -66,7 +77,9 @@
    @PostMapping("/notificationStationInfo")
    public R notificationStationInfo(@RequestParam("siteId") Integer siteId){
        Site site = siteClient.getSiteByIds(Arrays.asList(siteId)).getData().get(0);
        ChengDuJianGuanUtil.notificationStationInfo(redisTemplate, buildStationInfo(site));
        if(StringUtils.isNotEmpty(site.getCityCode()) && list.contains(site.getCityCode())){
            ChengDuJianGuanUtil.notificationStationInfo(redisTemplate, buildStationInfo(site));
        }
        return R.ok();
    }
@@ -156,7 +169,7 @@
        stationInfo.setParkingLockFlag(site.getParkingLockFlag());
        stationInfo.setIsDemandResponse(1);
        stationInfo.setIsSupportOrderlyCharging(1);
        stationInfo.setIsEnergyStorage();
        stationInfo.setIsEnergyStorage(site.getIsEnergyStorage());
        stationInfo.setElectricityType(site.getElectricityType());
        stationInfo.setRatedPower(site.getRatedPower());
        stationInfo.setPeriodFee(site.getPeriodFee());
@@ -180,7 +193,7 @@
            cdEquipmentInfo.setManufacturerID(tChargingPile.getManufacturerCode());
            cdEquipmentInfo.setManufacturerName(tChargingPile.getManufacturer());
            cdEquipmentInfo.setEquipmentModel(tChargingPile.getEquipmentType());
            cdEquipmentInfo.setEquipmentProductCode();
            cdEquipmentInfo.setEquipmentProductCode(tChargingPile.getEquipmentProductCode());
            cdEquipmentInfo.setEquipmentName(tChargingPile.getName());
            cdEquipmentInfo.setConstructionTime(tChargingPile.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
            if(null != tChargingPile.getProductionDate()){
@@ -220,12 +233,12 @@
                    cdEquipmentInfo.setEquipmentStatus(5);
                    break;
            }
            cdEquipmentInfo.setEquipmentPurpose();
            cdEquipmentInfo.setEquipmentPurpose(tChargingPile.getEquipmentPurpose());
            cdEquipmentInfo.setEquipmentPower(tChargingPile.getRatedPower());
            cdEquipmentInfo.setNewNationalStandard();
            cdEquipmentInfo.setNewNationalStandard(tChargingPile.getNewNationalStandard());
            cdEquipmentInfo.setEquipmentLng(new BigDecimal(tChargingPile.getEquipmentLng()).setScale(6, RoundingMode.HALF_EVEN));
            cdEquipmentInfo.setEquipmentLat(new BigDecimal(tChargingPile.getEquipmentLat()).setScale(6, RoundingMode.HALF_EVEN));
            cdEquipmentInfo.setVinFlag();
            cdEquipmentInfo.setVinFlag(tChargingPile.getVinFlag());
            cdEquipmentInfo.setConnectorInfos(buildConnectorInfo(tChargingPile.getId(), chargingGunList));
            equipmentInfos.add(cdEquipmentInfo);
        }
@@ -277,27 +290,263 @@
    /**
     * 站点费率变化推送
     * @param vo
     * @param chargingPileId
     * @return
     */
    @PostMapping("/notificationStationFee")
    public R notificationStationFee(@RequestBody NotificationStationFeeVo vo){
        NotificationStationFee notificationStationFee = new NotificationStationFee();
        notificationStationFee.setOperatorID("906171535");
        notificationStationFee.setStationID(vo.getSiteCode());
        List<ChargeFeeDetail> chargeFeeDetail = new ArrayList<>();
        List<TAccountingStrategyDetail> strategyDetails = accountingStrategyDetailClient.getDetailListByCode(vo.getChargingPileCode()).getData();
        for (TAccountingStrategyDetail accountingStrategyDetail : strategyDetails) {
            ChargeFeeDetail chargeFeeDetail1 = new ChargeFeeDetail();
            chargeFeeDetail1.setEquipmentType(vo.getEquipmentType());
            chargeFeeDetail1.setStartTime(accountingStrategyDetail.getStartTime());
            chargeFeeDetail1.setEndTime(accountingStrategyDetail.getEndTime());
            chargeFeeDetail1.setElectricityFee(accountingStrategyDetail.getElectrovalence());
            chargeFeeDetail1.setServiceFee(accountingStrategyDetail.getServiceCharge());
            chargeFeeDetail.add(chargeFeeDetail1);
            notificationStationFee.setChargeFeeDetail(chargeFeeDetail);
    public R notificationStationFee(@RequestParam("chargingPileId") Integer chargingPileId){
        TChargingPile chargingPile = chargingPileClient.getChargingPileById(chargingPileId).getData();
        Site site = siteClient.getSiteByIds(Arrays.asList(chargingPile.getSiteId())).getData().get(0);
        if(StringUtils.isNotEmpty(site.getCityCode()) && list.contains(site.getCityCode())){
            NotificationStationFee notificationStationFee = new NotificationStationFee();
            notificationStationFee.setOperatorID("906171535");
            notificationStationFee.setStationID(site.getCode());
            List<ChargeFeeDetail> chargeFeeDetail = new ArrayList<>();
            List<TAccountingStrategyDetail> strategyDetails = accountingStrategyDetailClient.getDetailListByCode(chargingPile.getCode()).getData();
            for (TAccountingStrategyDetail accountingStrategyDetail : strategyDetails) {
                ChargeFeeDetail chargeFeeDetail1 = new ChargeFeeDetail();
                chargeFeeDetail1.setEquipmentType(chargingPile.getType());
                chargeFeeDetail1.setStartTime(accountingStrategyDetail.getStartTime());
                chargeFeeDetail1.setEndTime(accountingStrategyDetail.getEndTime());
                chargeFeeDetail1.setElectricityFee(accountingStrategyDetail.getElectrovalence());
                chargeFeeDetail1.setServiceFee(accountingStrategyDetail.getServiceCharge());
                chargeFeeDetail.add(chargeFeeDetail1);
                notificationStationFee.setChargeFeeDetail(chargeFeeDetail);
            }
            ChengDuJianGuanUtil.notificationStationFee(redisTemplate, notificationStationFee);
        }
        ChengDuJianGuanUtil.notificationStationFee(redisTemplate, notificationStationFee);
        return R.ok();
    }
    /**
     * 设备状态变化推送
     * @param chargingGunId
     * @return
     */
    @PostMapping("/notificationStationStatus")
    public R notificationStationStatus(@RequestParam("chargingGunId") Integer chargingGunId){
        TChargingGun chargingGun = chargingGunClient.getChargingGunById(chargingGunId).getData();
        TChargingPile chargingPile = chargingPileClient.getChargingPileById(chargingGun.getChargingPileId()).getData();
        Site site = siteClient.getSiteByIds(Arrays.asList(chargingPile.getSiteId())).getData().get(0);
        if(StringUtils.isNotEmpty(site.getCityCode()) && list.contains(site.getCityCode())){
            ConnectorStatusInfo connectorStatusInfo = new ConnectorStatusInfo();
            connectorStatusInfo.setOperatorID("906171535");
            connectorStatusInfo.setEquipmentOwnerID("906171535");
            connectorStatusInfo.setStationID(site.getCode());
            connectorStatusInfo.setEquipmentID(chargingPile.getCode());
            connectorStatusInfo.setEquipmentClassification(1);
            connectorStatusInfo.setConnectorID(chargingGun.getFullNumber());
            switch (chargingGun.getStatus()){
                case 1:
                    connectorStatusInfo.setStatus(0);
                    break;
                case 2:
                    connectorStatusInfo.setStatus(1);
                    break;
                case 3:
                    connectorStatusInfo.setStatus(2);
                    break;
                case 4:
                    connectorStatusInfo.setStatus(3);
                    break;
                case 5:
                    connectorStatusInfo.setStatus(3);
                    break;
                case 6:
                    connectorStatusInfo.setStatus(4);
                    break;
                case 7:
                    connectorStatusInfo.setStatus(7);
                    break;
            }
            connectorStatusInfo.setParkStatus(0);
            connectorStatusInfo.setLookStatus(0);
            ChengDuJianGuanUtil.notificationStationStatus(redisTemplate, connectorStatusInfo);
        }
        return R.ok();
    }
    /**
     * 设备充电中状态变化推送
     * @param vo
     * @return
     */
    @PostMapping("/notificationConnectorChargeStatus")
    public R notificationConnectorChargeStatus(@RequestBody NotificationConnectorChargeStatusVo vo){
        TChargingGun chargingGun = chargingGunClient.getChargingGunById(vo.getChargingGunId()).getData();
        TChargingPile chargingPile = chargingPileClient.getChargingPileById(chargingGun.getChargingPileId()).getData();
        Site site = siteClient.getSiteByIds(Arrays.asList(chargingPile.getSiteId())).getData().get(0);
        if(StringUtils.isNotEmpty(site.getCityCode()) && list.contains(site.getCityCode())){
            TChargingOrder chargingOrder = chargingOrderClient.getOrderByCode(vo.getOrderCode()).getData();
            ConnectorChargeStatusInfo connectorChargeStatusInfo = new ConnectorChargeStatusInfo();
            connectorChargeStatusInfo.setOperatorID("906171535");
            connectorChargeStatusInfo.setEquipmentOwnerID("906171535");
            connectorChargeStatusInfo.setStationID(site.getCode());
            connectorChargeStatusInfo.setEquipmentID(chargingPile.getCode());
            connectorChargeStatusInfo.setConnectorID(chargingGun.getFullNumber());
            connectorChargeStatusInfo.setStartChargeSeq(chargingOrder.getCode());
            switch (chargingGun.getStatus()){
                case 1:
                    connectorChargeStatusInfo.setConnectorStatus(1);
                    break;
                case 2:
                    connectorChargeStatusInfo.setConnectorStatus(1);
                    break;
                case 3:
                    connectorChargeStatusInfo.setConnectorStatus(2);
                    break;
                case 4:
                    connectorChargeStatusInfo.setConnectorStatus(3);
                    break;
                case 5:
                    connectorChargeStatusInfo.setConnectorStatus(2);
                    break;
                case 6:
                    connectorChargeStatusInfo.setConnectorStatus(4);
                    break;
                case 7:
                    connectorChargeStatusInfo.setConnectorStatus(255);
                    break;
            }
            switch (chargingOrder.getStatus()){
                case -1:
                    connectorChargeStatusInfo.setOrderStatus(7);
                    break;
                case 0:
                    connectorChargeStatusInfo.setOrderStatus(7);
                    break;
                case 1:
                    connectorChargeStatusInfo.setOrderStatus(1);
                    break;
                case 2:
                    connectorChargeStatusInfo.setOrderStatus(1);
                    break;
                case 3:
                    connectorChargeStatusInfo.setOrderStatus(2);
                    break;
                case 4:
                    connectorChargeStatusInfo.setOrderStatus(3);
                    break;
                case 5:
                    connectorChargeStatusInfo.setOrderStatus(4);
                    break;
            }
            connectorChargeStatusInfo.setCurrentA(chargingOrder.getCurrent());
            connectorChargeStatusInfo.setVoltageA(chargingOrder.getVoltage());
            connectorChargeStatusInfo.setSoc(chargingOrder.getTotalElectricity());
            connectorChargeStatusInfo.setStartTime((null != chargingOrder.getStartTime() ? chargingOrder.getStartTime() : LocalDateTime.now()).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
            connectorChargeStatusInfo.setEndTime((null != chargingOrder.getEndTime() ? chargingOrder.getEndTime() : LocalDateTime.now()).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
            connectorChargeStatusInfo.setPushTime(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
            String key = "CHENGDU_JIANGUAN:" + chargingOrder.getCode();
            Object o = redisTemplate.opsForValue().get(key);
            String lastPushTime = null;
            if(null == o){
                lastPushTime = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
            }else{
                lastPushTime = o.toString();
            }
            connectorChargeStatusInfo.setLastPushTime(lastPushTime);
            connectorChargeStatusInfo.setTotalPower(chargingOrder.getElectricity());
            connectorChargeStatusInfo.setElecMoney(chargingOrder.getElectrovalence());
            connectorChargeStatusInfo.setSeviceMoney(chargingOrder.getServiceCharge());
            connectorChargeStatusInfo.setTotalMoney(chargingOrder.getPaymentAmount());
            connectorChargeStatusInfo.setSoc1(chargingOrder.getTotalElectricity());
            ChengDuJianGuanUtil.notificationConnectorChargeStatus(redisTemplate, connectorChargeStatusInfo);
            redisTemplate.opsForValue().set(key, connectorChargeStatusInfo.getPushTime(), 5, TimeUnit.DAYS);
        }
        return R.ok();
    }
    /**
     * 订单信息推送
     * @param vo
     * @return
     */
    @PostMapping("/notificationOrderInfo")
    public R notificationOrderInfo(@RequestBody NotificationConnectorChargeStatusVo vo){
        TChargingGun chargingGun = chargingGunClient.getChargingGunById(vo.getChargingGunId()).getData();
        TChargingPile chargingPile = chargingPileClient.getChargingPileById(chargingGun.getChargingPileId()).getData();
        Site site = siteClient.getSiteByIds(Arrays.asList(chargingPile.getSiteId())).getData().get(0);
        if(StringUtils.isNotEmpty(site.getCityCode()) && list.contains(site.getCityCode())){
            TChargingOrder chargingOrder = chargingOrderClient.getOrderByCode(vo.getOrderCode()).getData();
            CDOrderInfo orderInfo = new CDOrderInfo();
            orderInfo.setOperatorID("906171535");
            orderInfo.setEquipmentOwnerID("906171535");
            orderInfo.setStationID(site.getCode());
            orderInfo.setEquipmentID(chargingPile.getCode());
            orderInfo.setConnectorID(chargingGun.getFullNumber());
            orderInfo.setEquipmentClassification(1);
            orderInfo.setStartChargeSeq(chargingOrder.getCode());
            orderInfo.setUserChargeType(1);
            orderInfo.setMoney(chargingOrder.getPaymentAmount());
            orderInfo.setElectMoney(chargingOrder.getElectrovalence());
            orderInfo.setServiceMoney(chargingOrder.getServiceCharge());
            orderInfo.setElect(chargingOrder.getElectricity());
            orderInfo.setStartTime((null != chargingOrder.getStartTime() ? chargingOrder.getStartTime() : LocalDateTime.now()).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
            orderInfo.setEndTime((null != chargingOrder.getEndTime() ? chargingOrder.getEndTime() : LocalDateTime.now()).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
            orderInfo.setPaymentAmount(chargingOrder.getPaymentAmount());
            orderInfo.setPayChannel(chargingOrder.getRechargePaymentType() == 2 ? 1 : 2);
            switch (chargingOrder.getEndMode()){
                case 0:
                    orderInfo.setStopReason(3);
                    break;
                case 1:
                    orderInfo.setStopReason(0);
                    break;
                case 2:
                    orderInfo.setStopReason(2);
                    break;
                case 3:
                    orderInfo.setStopReason(1);
                    break;
            }
            orderInfo.setPower(chargingOrder.getPower());
            if(null == chargingOrder.getStartTime()){
                orderInfo.setChargeLast(0L);
            }else{
                Long time = chargingOrder.getEndTime().toEpochSecond(ZoneOffset.UTC) - chargingOrder.getStartTime().toEpochSecond(ZoneOffset.UTC);
                orderInfo.setChargeLast(time);
            }
            orderInfo.setMeterValueStart(new BigDecimal(0));
            orderInfo.setMeterValueEnd(new BigDecimal(0));
            orderInfo.setPushTimeStamp(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
            List<TChargingOrderAccountingStrategy> data = chargingOrderAccountingStrategyClient.getChargingOrderAccountingStrategyByOrderId(chargingOrder.getId()).getData();
            List<ChargeDetail> chargeDetails = new ArrayList<>();
            LocalDateTime startTime = 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"));
            for (TChargingOrderAccountingStrategy datum : data) {
                ChargeDetail chargeDetail = new ChargeDetail();
                if(s_format.equals(e_format)){
                    chargeDetail.setDetailStartTime(s_format + " " + datum.getStartTime() + ":00");
                    chargeDetail.setDetailEndTime(s_format + " " + datum.getEndTime() + ":59");
                }else{
                    String substring = datum.getEndTime().substring(0, datum.getEndTime().indexOf(":"));
                    if(Integer.valueOf(substring) > 12){
                        chargeDetail.setDetailStartTime(s_format + " " + datum.getStartTime() + ":00");
                        chargeDetail.setDetailEndTime(s_format + " " + datum.getEndTime() + ":59");
                    }else{
                        chargeDetail.setDetailStartTime(e_format + " " + datum.getStartTime() + ":00");
                        chargeDetail.setDetailEndTime(e_format + " " + datum.getEndTime() + ":59");
                    }
                }
                chargeDetail.setElecPrice(datum.getElectrovalence());
                chargeDetail.setSevicePrice(datum.getServiceCharge());
                chargeDetail.setDetailPower(datum.getChargingCapacity().setScale(2, BigDecimal.ROUND_HALF_EVEN));
                chargeDetail.setDetailElecMoney(datum.getPeriodElectricPrice());
                chargeDetail.setDetailSeviceMoney(datum.getPeriodServicePrice());
                chargeDetails.add(chargeDetail);
            }
            orderInfo.setChargeDetails(chargeDetails);
            ChengDuJianGuanUtil.notificationOrderInfo(redisTemplate, orderInfo);
        }
        return R.ok();
    }
}
ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/chengdujianguan/ChengDuJianGuanUtil.java
@@ -18,6 +18,7 @@
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*;
import java.util.concurrent.TimeUnit;
@Slf4j
public class ChengDuJianGuanUtil {
@@ -132,21 +133,21 @@
    public static void main(String[] args) {
        NotificationStationFee notificationStationFee = new NotificationStationFee();
        notificationStationFee.setOperatorID(OperatorID);
        notificationStationFee.setStationID("241231001");
        List<ChargeFeeDetail> chargeFeeDetail = new ArrayList<>();
        ChargeFeeDetail chargeFeeDetail1 = new ChargeFeeDetail();
        chargeFeeDetail1.setEquipmentType(1);
        chargeFeeDetail1.setStartTime("00:00");
        chargeFeeDetail1.setEndTime("23:59");
        chargeFeeDetail1.setElectricityFee(new BigDecimal(0.49));
        chargeFeeDetail1.setServiceFee(new BigDecimal(0.51));
        chargeFeeDetail.add(chargeFeeDetail1);
        notificationStationFee.setChargeFeeDetail(chargeFeeDetail);
        ChengDuJianGuanUtil.notificationStationFee(null, notificationStationFee);
    }
//    public static void main(String[] args) {
//        NotificationStationFee notificationStationFee = new NotificationStationFee();
//        notificationStationFee.setOperatorID(OperatorID);
//        notificationStationFee.setStationID("241231001");
//        List<ChargeFeeDetail> chargeFeeDetail = new ArrayList<>();
//        ChargeFeeDetail chargeFeeDetail1 = new ChargeFeeDetail();
//        chargeFeeDetail1.setEquipmentType(1);
//        chargeFeeDetail1.setStartTime("00:00");
//        chargeFeeDetail1.setEndTime("23:59");
//        chargeFeeDetail1.setElectricityFee(new BigDecimal(0.49));
//        chargeFeeDetail1.setServiceFee(new BigDecimal(0.51));
//        chargeFeeDetail.add(chargeFeeDetail1);
//        notificationStationFee.setChargeFeeDetail(chargeFeeDetail);
//        ChengDuJianGuanUtil.notificationStationFee(null, notificationStationFee);
//    }
//    public static void main(String[] args) {
@@ -237,10 +238,10 @@
     */
    public static String getToken(RedisTemplate redisTemplate) {
        try {
//            Object o = redisTemplate.opsForValue().get("LLTOKEN");
//            if(null != o){
//                return o.toString();
//            }
            Object o = redisTemplate.opsForValue().get("LLTOKEN");
            if(null != o){
                return o.toString();
            }
            // 请求data
            Map<String, String> data = new HashMap<>();
            data.put("OperatorID", OperatorID);
@@ -278,7 +279,7 @@
                Map<String, String> resultMap = (Map<String, String>) JSON.parse(dataStr);
                String accessToken = jsonObject.getString("AccessToken");
                Long tokenAvailableTime = jsonObject.getLong("TokenAvailableTime");
//                redisTemplate.opsForValue().set("LLTOKEN", accessToken, Long.valueOf(tokenAvailableTime), TimeUnit.SECONDS);
                redisTemplate.opsForValue().set("LLTOKEN", accessToken, Long.valueOf(tokenAvailableTime), TimeUnit.SECONDS);
                return accessToken;
            }
        } catch (Exception e) {
ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/chengdujianguan/model/CDOrderInfo.java
@@ -97,7 +97,7 @@
     * 充电时长 秒
     */
    @JsonProperty("ChargeLast")
    private Integer chargeLast;
    private Long chargeLast;
    /**
     * 电表总起值
     */
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -34,6 +34,7 @@
import com.ruoyi.integration.api.model.*;
import com.ruoyi.integration.api.vo.ChargingOrderVo;
import com.ruoyi.integration.api.vo.GetPlatformStopChargingReply;
import com.ruoyi.integration.api.vo.NotificationConnectorChargeStatusVo;
import com.ruoyi.integration.api.vo.StartChargeResult;
import com.ruoyi.order.api.dto.SettlementConfirmAdd;
import com.ruoyi.order.api.feignClient.AccountingStrategyDetailOrderClient;
@@ -232,6 +233,9 @@
    
    @Resource
    private ChargingMessageClient chargingMessageClient;
    @Resource
    private ChengDuJianGuanClient chengDuJianGuanClient;
    
    
    /**
@@ -769,6 +773,17 @@
        
        log.info(chargingOrder.getCode() + ":-------------------远程调起开始充电请求-------------------" + platformStartCharging.toString());
        sendMessageClient.platformStartCharging(platformStartCharging);
        ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.SECONDS, new LinkedBlockingDeque<>());
        threadPoolExecutor.execute(()->{
            //推送成都监管
            NotificationConnectorChargeStatusVo vo = new NotificationConnectorChargeStatusVo();
            vo.setOrderCode(chargingOrder.getCode());
            vo.setChargingGunId(chargingOrder.getChargingGunId());
            chengDuJianGuanClient.notificationConnectorChargeStatus(vo);
        });
//        //异步线程检测远程启动的应答结果。如果失败,则需要全额退款
//        Long id = chargingOrder.getId();
//        //执行5分钟的定时任务检测
@@ -832,6 +847,7 @@
                chargingOrder.setStartTime(LocalDateTime.now());
            }
            this.updateById(chargingOrder);
            if (chargingOrder.getStatus() == 3) {
                //推送监管平台订单状态
                new Thread(() -> {
@@ -846,6 +862,14 @@
            if (2 == chargingOrder.getOrderSource() && 1 == site.getIsOpenSynchronization()) {
                tcecClient.notificationEquipChargeStatus(chargingOrder.getStartChargeSeq(), chargingOrder.getOperatorId());
            }
            ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.SECONDS, new LinkedBlockingDeque<>());
            threadPoolExecutor.execute(()->{
                //推送成都监管
                NotificationConnectorChargeStatusVo vo = new NotificationConnectorChargeStatusVo();
                vo.setOrderCode(chargingOrder.getCode());
                vo.setChargingGunId(chargingOrder.getChargingGunId());
                chengDuJianGuanClient.notificationConnectorChargeStatus(vo);
            });
            return true;
        } else {
            Integer counter = boot_failed_map.get(code);
@@ -880,6 +904,14 @@
            if (2 == chargingOrder.getOrderSource() && 1 == site.getIsOpenSynchronization()) {
                tcecClient.notificationEquipChargeStatus(chargingOrder.getStartChargeSeq(), chargingOrder.getOperatorId());
            }
            ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.SECONDS, new LinkedBlockingDeque<>());
            threadPoolExecutor.execute(()->{
                //推送成都监管
                NotificationConnectorChargeStatusVo vo = new NotificationConnectorChargeStatusVo();
                vo.setOrderCode(chargingOrder.getCode());
                vo.setChargingGunId(chargingOrder.getChargingGunId());
                chengDuJianGuanClient.notificationConnectorChargeStatus(vo);
            });
            return true;
        }
    }
@@ -1305,7 +1337,14 @@
        if (2 == order.getOrderSource() && 1 == site.getIsOpenSynchronization()) {
            tcecClient.notificationEquipChargeStatus(order.getStartChargeSeq(), order.getOperatorId());
        }
        ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.SECONDS, new LinkedBlockingDeque<>());
        threadPoolExecutor.execute(()->{
            //推送成都监管
            NotificationConnectorChargeStatusVo vo = new NotificationConnectorChargeStatusVo();
            vo.setOrderCode(order.getCode());
            vo.setChargingGunId(order.getChargingGunId());
            chengDuJianGuanClient.notificationConnectorChargeStatus(vo);
        });
        return AjaxResult.success();
    }
    
@@ -2611,6 +2650,16 @@
                    }
                }).start();
            }
            ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.SECONDS, new LinkedBlockingDeque<>());
            TChargingOrder finalChargingOrder1 = chargingOrder;
            threadPoolExecutor.execute(()->{
                //推送成都监管
                NotificationConnectorChargeStatusVo statusVo = new NotificationConnectorChargeStatusVo();
                statusVo.setOrderCode(finalChargingOrder1.getCode());
                statusVo.setChargingGunId(finalChargingOrder1.getChargingGunId());
                chengDuJianGuanClient.notificationConnectorChargeStatus(statusVo);
                chengDuJianGuanClient.notificationOrderInfo(statusVo);
            });
            
            //开始将优惠券优惠的金额添加到明细中
            BigDecimal couponDiscountAmount = chargingOrder.getCouponDiscountAmount();
@@ -2982,6 +3031,18 @@
                    chargingOrderRefundService.save(chargingOrderRefund);
                    
                }
            }
            if(5 == tChargingOrder.getStatus()){
                ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.SECONDS, new LinkedBlockingDeque<>());
                threadPoolExecutor.execute(()->{
                    //推送成都监管
                    NotificationConnectorChargeStatusVo statusVo = new NotificationConnectorChargeStatusVo();
                    statusVo.setOrderCode(tChargingOrder.getCode());
                    statusVo.setChargingGunId(tChargingOrder.getChargingGunId());
                    chengDuJianGuanClient.notificationConnectorChargeStatus(statusVo);
                    chengDuJianGuanClient.notificationOrderInfo(statusVo);
                });
            }
        }
        if (payOrderQueryDto.getType() == 2) {
@@ -4137,6 +4198,14 @@
            //推送三方平台订单状态
            tcecClient.notificationEquipChargeStatus(chargingOrder.getStartChargeSeq(), chargingOrder.getOperatorId());
        }
        ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.SECONDS, new LinkedBlockingDeque<>());
        threadPoolExecutor.execute(()->{
            //推送成都监管
            NotificationConnectorChargeStatusVo statusVo = new NotificationConnectorChargeStatusVo();
            statusVo.setOrderCode(chargingOrder.getCode());
            statusVo.setChargingGunId(chargingOrder.getChargingGunId());
            chengDuJianGuanClient.notificationConnectorChargeStatus(statusVo);
        });
        return R.ok();
    }
    
@@ -4186,6 +4255,14 @@
            log.info("【" + code1 + "】三方平台请求停止充电发起消息结束");
            log.info(platformStopCharging.toString());
        });
        ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.SECONDS, new LinkedBlockingDeque<>());
        threadPoolExecutor.execute(()->{
            //推送成都监管
            NotificationConnectorChargeStatusVo statusVo = new NotificationConnectorChargeStatusVo();
            statusVo.setOrderCode(chargingOrder.getCode());
            statusVo.setChargingGunId(chargingOrder.getChargingGunId());
            chengDuJianGuanClient.notificationConnectorChargeStatus(statusVo);
        });
        return R.ok();
    }
    
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/task/TaskUtil.java
@@ -20,11 +20,13 @@
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.redis.service.RedisService;
import com.ruoyi.integration.api.feignClient.ChargingMessageClient;
import com.ruoyi.integration.api.feignClient.ChengDuJianGuanClient;
import com.ruoyi.integration.api.feignClient.TCECClient;
import com.ruoyi.integration.api.feignClient.UploadRealTimeMonitoringDataClient;
import com.ruoyi.integration.api.model.TransactionRecord;
import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData;
import com.ruoyi.integration.api.vo.ChargingOrderVo;
import com.ruoyi.integration.api.vo.NotificationConnectorChargeStatusVo;
import com.ruoyi.order.api.model.*;
import com.ruoyi.order.api.vo.AccountingStrategyDetailOrderVo;
import com.ruoyi.order.api.vo.TransactionRecordMessageVO;
@@ -63,6 +65,9 @@
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.*;
import java.util.concurrent.LinkedBlockingDeque;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
/**
@@ -129,6 +134,9 @@
    @Resource
    private ITChargingOrderSummaryDataService chargingOrderSummaryDataService;
    @Resource
    private ChengDuJianGuanClient chengDuJianGuanClient;
    //十分钟循环执行的定时任务
@@ -620,6 +628,17 @@
            if (2 == order.getOrderSource() && 1 == site.getIsOpenSynchronization()) {
                tcecClient.pushChargingGunStatus(chargingGun.getFullNumber(), 2);
            }
            ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.SECONDS, new LinkedBlockingDeque<>());
            TChargingOrder finalOrder = order;
            threadPoolExecutor.execute(()->{
                //推送成都监管
                NotificationConnectorChargeStatusVo statusVo = new NotificationConnectorChargeStatusVo();
                statusVo.setOrderCode(finalOrder.getCode());
                statusVo.setChargingGunId(finalOrder.getChargingGunId());
                chengDuJianGuanClient.notificationConnectorChargeStatus(statusVo);
                chengDuJianGuanClient.notificationOrderInfo(statusVo);
            });
            //添加积分
            if (1 == order.getOrderSource()) {