From 7e73e670d70e860bce6c216c23a75d366982c3c2 Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期二, 08 十月 2024 17:26:03 +0800 Subject: [PATCH] 修改bug --- ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java | 233 ++++++++++++++++++++++++--------- ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TVipOrderServiceImpl.java | 2 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/UploadRealTimeMonitoringDataMessageListener.java | 7 ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/GetChargingGunByCode.java | 13 + ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java | 13 + ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/SecurityDetection.java | 14 ++ ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUserVipDetail.java | 5 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/PlatformStartChargingReplyMessage.java | 16 ++ ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TGoodsController.java | 2 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ChargingOrderFallbackFactory.java | 14 + ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ChargingGunClient.java | 5 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java | 14 ++ ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderEvaluateServiceImpl.java | 2 ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingGunFallbackFactory.java | 3 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderClient.java | 19 ++ ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/PlatformStartChargingReplyMessageListener.java | 11 + ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java | 24 +++ 17 files changed, 313 insertions(+), 84 deletions(-) diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUserVipDetail.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUserVipDetail.java index 046b4b8..31db511 100644 --- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUserVipDetail.java +++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUserVipDetail.java @@ -62,15 +62,16 @@ @ApiModelProperty(value = "会员开始时间") @TableField("start_time") - @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime startTime; @ApiModelProperty(value = "会员结束时间") @TableField("end_time") - @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime endTime; @TableField("create_time") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime createTime; @ApiModelProperty(value = "已赠送的月份") diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingGunFallbackFactory.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingGunFallbackFactory.java index 56d4782..11c4cb6 100644 --- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingGunFallbackFactory.java +++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingGunFallbackFactory.java @@ -5,6 +5,7 @@ import com.ruoyi.chargingPile.api.model.TChargingGun; import com.ruoyi.chargingPile.api.model.TChargingPile; import com.ruoyi.chargingPile.api.model.TFaultMessage; +import com.ruoyi.chargingPile.api.vo.GetChargingGunByCode; import com.ruoyi.chargingPile.api.vo.SiteNameVO; import com.ruoyi.common.core.domain.R; import org.slf4j.Logger; @@ -45,7 +46,7 @@ } @Override - public R<TChargingGun> getChargingGunByCode(String code) { + public R<TChargingGun> getChargingGunByCode(GetChargingGunByCode code) { return R.fail("根据枪编号获取充电枪失败:" + throwable.getMessage()); } diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ChargingGunClient.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ChargingGunClient.java index f27cd5d..77548f2 100644 --- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ChargingGunClient.java +++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ChargingGunClient.java @@ -3,6 +3,7 @@ import com.ruoyi.chargingPile.api.factory.ChargingGunFallbackFactory; import com.ruoyi.chargingPile.api.model.TChargingGun; import com.ruoyi.chargingPile.api.model.TFaultMessage; +import com.ruoyi.chargingPile.api.vo.GetChargingGunByCode; import com.ruoyi.chargingPile.api.vo.SiteNameVO; import com.ruoyi.common.core.constant.ServiceNameConstants; import com.ruoyi.common.core.domain.R; @@ -48,8 +49,8 @@ * @param code * @return */ - @PostMapping("/t-charging-gun/getChargingGunByCode/{code}") - R<TChargingGun> getChargingGunByCode(@PathVariable("code") String code); + @PostMapping("/t-charging-gun/getChargingGunByCode") + R<TChargingGun> getChargingGunByCode(@RequestBody GetChargingGunByCode code); /** * 编辑充电枪 * @param chargingGun diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/GetChargingGunByCode.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/GetChargingGunByCode.java new file mode 100644 index 0000000..82b6e50 --- /dev/null +++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/GetChargingGunByCode.java @@ -0,0 +1,13 @@ +package com.ruoyi.chargingPile.api.vo; + +import lombok.Data; + +/** + * @author zhibing.pu + * @Date 2024/10/8 16:58 + */ +@Data +public class GetChargingGunByCode { + private String charging_pile_code; // 桩编码 + private String charging_gun_code; // 抢号 +} diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ChargingOrderFallbackFactory.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ChargingOrderFallbackFactory.java index f51d11a..15f974f 100644 --- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ChargingOrderFallbackFactory.java +++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ChargingOrderFallbackFactory.java @@ -9,9 +9,7 @@ import com.ruoyi.order.api.model.TSettlementConfirm; import com.ruoyi.order.api.query.TChargingCountQuery; import com.ruoyi.order.api.query.UploadRealTimeMonitoringDataQuery; -import com.ruoyi.order.api.vo.ChargingBillVO; -import com.ruoyi.order.api.vo.GetChargingOrderByLicensePlate; -import com.ruoyi.order.api.vo.SettlementTotalVO; +import com.ruoyi.order.api.vo.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.cloud.openfeign.FallbackFactory; @@ -140,6 +138,16 @@ log.error("购物订单退款回调通知失败:" + throwable.getMessage()); } + + @Override + public void securityDetection(SecurityDetection securityDetection) { + log.error("修改安全检测数据失败:" + throwable.getMessage()); + } + + @Override + public void startChargeSuccessfully(PlatformStartChargingReplyMessage message) { + log.error("远程启动充电应答失败:" + throwable.getMessage()); + } }; } } diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderClient.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderClient.java index 0dc3302..72bc9ac 100644 --- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderClient.java +++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderClient.java @@ -11,12 +11,10 @@ import com.ruoyi.order.api.model.TSettlementConfirm; import com.ruoyi.order.api.query.TChargingCountQuery; import com.ruoyi.order.api.query.UploadRealTimeMonitoringDataQuery; -import com.ruoyi.order.api.vo.ChargingBillVO; -import com.ruoyi.order.api.vo.SettlementTotalVO; +import com.ruoyi.order.api.vo.*; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; -import com.ruoyi.order.api.vo.GetChargingOrderByLicensePlate; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.*; @@ -178,4 +176,19 @@ @RequestParam("out_trade_no") String refund_id, @RequestParam("out_trade_no") String tradeState, @RequestParam("out_trade_no") String success_time); + + /** + * 修改安全检测数据 + * @param securityDetection + */ + @PostMapping("/t-shopping-order/securityDetection") + void securityDetection(@RequestBody SecurityDetection securityDetection); + + + /** + * 远程启动充电应答 + * @param message + */ + @PostMapping("/t-shopping-order/startChargeSuccessfully") + void startChargeSuccessfully(PlatformStartChargingReplyMessage message); } diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/PlatformStartChargingReplyMessage.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/PlatformStartChargingReplyMessage.java new file mode 100644 index 0000000..e074bdd --- /dev/null +++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/PlatformStartChargingReplyMessage.java @@ -0,0 +1,16 @@ +package com.ruoyi.order.api.vo; + +import lombok.Data; + +/** + * @author zhibing.pu + * @Date 2024/10/8 17:16 + */ +@Data +public class PlatformStartChargingReplyMessage { + private String transaction_serial_number; // 交易流水号 + private String charging_pile_code; // 桩编码 + private String charging_gun_code; // 抢号 + private Integer startup_result; // 启动结果(0:失败,1:成功) + private Integer failure_cause; // "失败原因(0:无,1:设备编号不匹配,2:枪已在充电,3:设备故障,4:设备离线,5:未插枪桩在收到启充命令后,检测到未插枪则发送 0x33 报文回复充电失败。若在 60 秒(以收到 0x34 时间开始计算)内检测到枪重新连接,则补送 0x33 成功报文;超时或者离线等其他异常,桩不启充、不补发 0x33 报文)" +} diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/SecurityDetection.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/SecurityDetection.java new file mode 100644 index 0000000..0f24456 --- /dev/null +++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/SecurityDetection.java @@ -0,0 +1,14 @@ +package com.ruoyi.order.api.vo; + +import lombok.Data; + +@Data +public class SecurityDetection { + private String transaction_serial_number; // 交易流水号 + private String charging_pile_code; // 桩编码 + private String charging_gun_code; // 抢号 + private Integer secure_connection; // 车枪连接(0=未连接,1=连接) + private Integer nsulation_detection; // 绝缘检测(0=安全,1=不安全) + private Integer electronic_lock_lock; // 电磁锁状态(0=未锁,1=已锁) + +} diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java index 6855288..446fc59 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java @@ -3,6 +3,7 @@ import cn.hutool.core.img.ImgUtil; import cn.hutool.core.io.FileUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.ruoyi.chargingPile.api.dto.GetSiteListDTO; import com.ruoyi.chargingPile.api.dto.TChargingGunDTO; @@ -11,6 +12,7 @@ import com.ruoyi.chargingPile.api.model.TChargingPile; import com.ruoyi.chargingPile.api.model.TFaultMessage; import com.ruoyi.chargingPile.api.query.TChargingGunQuery; +import com.ruoyi.chargingPile.api.vo.GetChargingGunByCode; import com.ruoyi.chargingPile.api.vo.GunStatusStatisticsVO; import com.ruoyi.chargingPile.api.vo.SiteNameVO; import com.ruoyi.chargingPile.api.vo.TChargingGunVO; @@ -254,11 +256,14 @@ * @param code * @return */ - @PostMapping("/getChargingGunByCode/{code}") - public R<TChargingGun> getChargingGunByCode(@PathVariable("code") String code){ + @PostMapping("/getChargingGunByCode") + public R<TChargingGun> getChargingGunByCode(@RequestBody GetChargingGunByCode code){ + TChargingPile chargingPile = chargingPileService.getOne(new LambdaQueryWrapper<TChargingPile>().eq(TChargingPile::getCode, code.getCharging_pile_code()).eq(TChargingPile::getDelFlag, 0)); return R.ok(chargingGunService.getOne(Wrappers.lambdaQuery(TChargingGun.class) - .eq(TChargingGun::getCode, code) - .last("LIMIT 1"))); + .eq(TChargingGun::getChargingPileId, chargingPile.getId()) + .eq(TChargingGun::getCode, code.getCharging_gun_code()) + .eq(TChargingGun::getDelFlag, 0) + .last("LIMIT 1"))); } /** * 根据枪编号获取充电枪 diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/PlatformStartChargingReplyMessageListener.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/PlatformStartChargingReplyMessageListener.java index d60ef45..5aded73 100644 --- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/PlatformStartChargingReplyMessageListener.java +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/PlatformStartChargingReplyMessageListener.java @@ -5,6 +5,7 @@ import com.ruoyi.integration.mongodb.service.PlatformStartChargingReplyService; import com.ruoyi.integration.rocket.model.PlatformStartChargingReplyMessage; import com.ruoyi.integration.rocket.util.EnhanceMessageHandler; +import com.ruoyi.order.api.feignClient.ChargingOrderClient; import lombok.extern.slf4j.Slf4j; import org.apache.rocketmq.spring.annotation.MessageModel; import org.apache.rocketmq.spring.annotation.RocketMQMessageListener; @@ -12,6 +13,8 @@ import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; + +import javax.annotation.Resource; @Slf4j @Component @@ -26,6 +29,11 @@ @Autowired private PlatformStartChargingReplyService platformStartChargingReplyService; + + @Resource + private ChargingOrderClient chargingOrderClient; + + @Override protected void handleMessage(PlatformStartChargingReplyMessage message) throws Exception { @@ -36,6 +44,9 @@ BeanUtils.copyProperties(message,platformStartChargingReply); platformStartChargingReplyService.create(platformStartChargingReply); // 业务处理 + com.ruoyi.order.api.vo.PlatformStartChargingReplyMessage message1 = new com.ruoyi.order.api.vo.PlatformStartChargingReplyMessage(); + BeanUtils.copyProperties(message, message1); + chargingOrderClient.startChargeSuccessfully(message1); } @Override diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/UploadRealTimeMonitoringDataMessageListener.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/UploadRealTimeMonitoringDataMessageListener.java index ce52b46..a08aeb8 100644 --- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/UploadRealTimeMonitoringDataMessageListener.java +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/UploadRealTimeMonitoringDataMessageListener.java @@ -6,6 +6,7 @@ import com.ruoyi.chargingPile.api.model.TAccountingStrategyDetail; import com.ruoyi.chargingPile.api.model.TChargingGun; import com.ruoyi.chargingPile.api.model.TFaultMessage; +import com.ruoyi.chargingPile.api.vo.GetChargingGunByCode; import com.ruoyi.integration.api.model.Online; import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData; import com.ruoyi.integration.mongodb.service.UploadRealTimeMonitoringDataService; @@ -83,8 +84,10 @@ UploadRealTimeMonitoringDataQuery query = new UploadRealTimeMonitoringDataQuery(); BeanUtils.copyProperties(uploadRealTimeMonitoringData, query); chargingOrderClient.chargeMonitoring(query); - - TChargingGun chargingGun = chargingGunClient.getChargingGunByCode(message.getCharging_gun_code()).getData(); + GetChargingGunByCode code = new GetChargingGunByCode(); + code.setCharging_pile_code(message.getCharging_pile_code()); + code.setCharging_gun_code(message.getCharging_gun_code()); + TChargingGun chargingGun = chargingGunClient.getChargingGunByCode(code).getData(); if(Objects.nonNull(chargingGun)){ // 存储状态信息 TFaultMessage faultMessage = new TFaultMessage(); diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java index 5d956d1..eca723a 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java @@ -457,7 +457,29 @@ @RequestParam("attach") String attach) { AjaxResult ajaxResult = chargingOrderService.chargingOrderCallback(1, out_trade_no, transaction_id, attach); } - + + + /** + * 修改安全检测数据 + * @param securityDetection + */ + @ResponseBody + @PostMapping(value = "/securityDetection") + public void securityDetection(@RequestBody SecurityDetection securityDetection){ + chargingOrderService.securityDetection(securityDetection); + } + + /** + * 远程启动充电应答 + * @param message + */ + @ResponseBody + @PostMapping(value = "/startChargeSuccessfully") + public void startChargeSuccessfully(@RequestBody PlatformStartChargingReplyMessage message){ + chargingOrderService.startChargeSuccessfully(message); + } + + /** * 支付宝支付成功后的回调 diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java index 7ca2197..6b2df64 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java @@ -80,6 +80,20 @@ /** + * 安全检测数据 + * @param securityDetection + */ + void securityDetection(SecurityDetection securityDetection); + + + /** + * 启动充电应发 + * @param message + */ + void startChargeSuccessfully(PlatformStartChargingReplyMessage message); + + + /** * 充电启动失败后的退款回调处理 * @param out_refund_no * @param refund_id 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 19512b4..7efe4e0 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 @@ -13,6 +13,7 @@ import com.ruoyi.account.api.vo.GetInviteUser; import com.ruoyi.chargingPile.api.feignClient.*; import com.ruoyi.chargingPile.api.model.*; +import com.ruoyi.chargingPile.api.vo.GetChargingGunByCode; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.dto.ChargingOrderGroup; import com.ruoyi.common.core.dto.ChargingPercentProvinceDto; @@ -40,6 +41,7 @@ import com.ruoyi.order.api.query.SettlementListQuery; import com.ruoyi.order.api.query.UploadRealTimeMonitoringDataQuery; import com.ruoyi.order.api.vo.*; +import com.ruoyi.order.api.vo.SecurityDetection; import com.ruoyi.order.dto.*; import com.ruoyi.order.mapper.TChargingOrderMapper; import com.ruoyi.order.mapper.TSettlementConfirmMapper; @@ -196,6 +198,9 @@ //计数器 private Map<String, Integer> counter_map = new HashMap<>(); + + //计数器 + private Map<String, Integer> boot_failed_map = new HashMap<>(); @@ -456,7 +461,7 @@ //直营站点才可以享受会员折扣 if(null != appUser.getVipId() && 1 == site.getBusinessCategory()){ - TVip vip = vipClient.getInfo(appUser.getVipId()).getData(); + TVip vip = vipClient.getInfo1(appUser.getVipId()).getData(); BigDecimal discount = null; if(1 == vip.getType()){ //普通会员折扣使用积分策略上的折扣,且有最高优惠金额 @@ -548,7 +553,7 @@ preChargeCheck.setSecureConnectionDetection(false); preChargeCheck.setStartupSuccess(1); String key = "AQJC_" + chargingOrder.getChargingGunId(); - redisService.setCacheObject(key, preChargeCheck); + redisService.setCacheObject(key, preChargeCheck, 24L, TimeUnit.HOURS); //根据当前充值的金额和计费模板算出充电的金额 BigDecimal rechargeAmount = chargingOrder.getRechargeAmount(); @@ -609,7 +614,7 @@ if(discountAmount.compareTo(BigDecimal.ZERO) >= 0){ //计算会员最大优惠金额 if(null != appUser.getVipId()){ - TVip vip = vipClient.getInfo(appUser.getVipId()).getData(); + TVip vip = vipClient.getInfo1(appUser.getVipId()).getData(); BigDecimal maximumDeduction = vip.getMaximumDeduction(); //普通会员有最高优惠限制 if(vip.getType() == 1 && discountAmount.compareTo(maximumDeduction) > 0){ @@ -621,7 +626,7 @@ getAppUserVipDetail.setAppUserId(chargingOrder.getAppUserId()); getAppUserVipDetail.setVipId(appUser.getVipId()); TAppUserVipDetail data = appUserVipDetailClient.getAppUserVipDetail(getAppUserVipDetail).getData(); - if(data.getChargeNum() > 0){ + if(null != data && data.getChargeNum() > 0){ data.setChargeNum(data.getChargeNum() - 1); appUserVipDetailClient.updateAppUserVipDetail(data); //会员有充电优惠次数,直接将优惠金额加入到充电费用中增加充电时长 @@ -649,71 +654,173 @@ sendMessageClient.platformStartCharging(platformStartCharging); //异步线程检测远程启动的应答结果。如果失败,则需要全额退款 - String code = chargingOrder.getCode(); + Long id = chargingOrder.getId(); //执行5分钟的定时任务检测 ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1); scheduler.scheduleAtFixedRate(()->{ - //获取安全校验 - SecurityDetection securityDetection = securityDetectionClient.getSecurityDetection(chargingOrder.getCode()).getData(); - if(null != securityDetection){ - PreChargeCheck preChargeCheck1 = redisService.getCacheObject("AQJC_" + chargingOrder.getChargingGunId()); - if(null != preChargeCheck1){ - preChargeCheck1.setElectronicLockLock(preChargeCheck1.getElectronicLockLock()); - preChargeCheck1.setInsulationTesting(true); - preChargeCheck1.setSecureConnectionDetection(preChargeCheck1.getSecureConnectionDetection()); - preChargeCheck1.setStartupSuccess(1); - redisService.setCacheObject("AQJC_" + chargingOrder.getChargingGunId(), preChargeCheck1); - } - } - - List<PlatformStartChargingReply> data = platformStartChargingReplyClient.getPlatformStartChargingReply(code).getData(); - System.err.println("-------------------开始检查调起充电结果-------------------"); - System.err.println(data.toString()); - if(data.size() != 0){ - PlatformStartChargingReply platformStartChargingReply = data.get(1); - Integer startup_result = platformStartChargingReply.getStartup_result(); - Integer failure_cause = platformStartChargingReply.getFailure_cause(); - Integer counter = counter_map.get(code); - PreChargeCheck preChargeCheck1 = redisService.getCacheObject(key); - //5分钟内还未插枪则取消充电,退回金额。 - if(failure_cause == 5 && (null == counter || counter < 300)){ - counter = (null == counter ? 0 : counter) + 1; - counter_map.put(code, counter); - //启动失败 - preChargeCheck1.setStartupSuccess(3); - preChargeCheck1.setFailureCause(failure_cause); - redisService.setCacheObject(key, preChargeCheck1); - return; - } - - //清除计时器中的无效数据 - counter_map.remove(code); - TChargingOrder order = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, code)); - if(0 == startup_result){ - //启动失败 - preChargeCheck1.setStartupSuccess(3); - preChargeCheck1.setFailureCause(failure_cause); - //启动失败后取消订单,退款操作 - refund(code); - order.setStatus(-1); - order.setEndMode(0); - }else{ - //启动成功 - preChargeCheck1.setStartupSuccess(2); - order.setStatus(3); - order.setStartTime(LocalDateTime.now()); - } - this.updateById(order); - redisService.setCacheObject(key, preChargeCheck1); - //提前结束定时任务 + if(timingDetection(id)){ scheduler.shutdown(); - }else{ - log.error("未上传开启充电结果........"); } }, 5, 1, TimeUnit.SECONDS); return AjaxResult.success(); } + + /** + * 定时检测mongodb数据库数据 + * @param id + * @return + */ + public boolean timingDetection(Long id){ + TChargingOrder chargingOrder = this.getById(id); + if(chargingOrder.getStatus() != 2){ + return true; + } + String code = chargingOrder.getCode(); + String key = "AQJC_" + chargingOrder.getChargingGunId(); + //获取安全校验 + com.ruoyi.integration.api.model.SecurityDetection securityDetection = securityDetectionClient.getSecurityDetection(chargingOrder.getCode()).getData(); + if(null != securityDetection){ + PreChargeCheck preChargeCheck1 = redisService.getCacheObject("AQJC_" + chargingOrder.getChargingGunId()); + if(null != preChargeCheck1){ + preChargeCheck1.setElectronicLockLock(preChargeCheck1.getElectronicLockLock()); + preChargeCheck1.setInsulationTesting(true); + preChargeCheck1.setSecureConnectionDetection(preChargeCheck1.getSecureConnectionDetection()); + preChargeCheck1.setStartupSuccess(1); + redisService.setCacheObject("AQJC_" + chargingOrder.getChargingGunId(), preChargeCheck1, 24L, TimeUnit.HOURS); + } + } + + List<PlatformStartChargingReply> data = platformStartChargingReplyClient.getPlatformStartChargingReply(code).getData(); + System.err.println(code + ":-------------------开始检查调起充电结果-------------------"); + System.err.println(data.toString()); + if(data.size() != 0){ + PlatformStartChargingReply platformStartChargingReply = data.get(1); + Integer startup_result = platformStartChargingReply.getStartup_result(); + Integer failure_cause = platformStartChargingReply.getFailure_cause(); + Integer counter = counter_map.get(code); + PreChargeCheck preChargeCheck1 = redisService.getCacheObject(key); + //5分钟内还未插枪则取消充电,退回金额。 + if(failure_cause == 5 && (null == counter || counter < 300)){ + counter = (null == counter ? 0 : counter) + 1; + counter_map.put(code, counter); + //启动失败 + preChargeCheck1.setStartupSuccess(3); + preChargeCheck1.setFailureCause(failure_cause); + redisService.setCacheObject(key, preChargeCheck1, 24L, TimeUnit.HOURS); + return false; + } + + //清除计时器中的无效数据 + counter_map.remove(code); + TChargingOrder order = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, code)); + if(0 == startup_result){ + //启动失败 + preChargeCheck1.setStartupSuccess(3); + preChargeCheck1.setFailureCause(failure_cause); + //启动失败后取消订单,退款操作 + refund(code); + order.setStatus(-1); + order.setEndMode(0); + }else{ + //启动成功 + preChargeCheck1.setStartupSuccess(2); + order.setStatus(3); + order.setStartTime(LocalDateTime.now()); + } + this.updateById(order); + redisService.setCacheObject(key, preChargeCheck1, 24L, TimeUnit.HOURS); + return true; + }else{ + log.error(code + ":未上传开启充电结果........"); + + Integer counter = boot_failed_map.get(code); + PreChargeCheck preChargeCheck1 = redisService.getCacheObject(key); + //5分钟内未启动成功,退回金额。 + if(null == counter || counter < 300){ + counter = (null == counter ? 0 : counter) + 1; + boot_failed_map.put(code, counter); + //启动失败 + preChargeCheck1.setStartupSuccess(3); + preChargeCheck1.setFailureCause(0); + redisService.setCacheObject(key, preChargeCheck1, 24L, TimeUnit.HOURS); + return false; + } + + //清除计时器中的无效数据 + boot_failed_map.remove(code); + TChargingOrder order = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, code)); + //启动失败 + preChargeCheck1.setStartupSuccess(3); + preChargeCheck1.setFailureCause(0); + //启动失败后取消订单,退款操作 + refund(code); + order.setStatus(-1); + order.setEndMode(0); + this.updateById(order); + redisService.setCacheObject(key, preChargeCheck1, 24L, TimeUnit.HOURS); + return true; + } + } + + + /** + * 修改安全检测数据 + * @param securityDetection + */ + @Override + public void securityDetection(SecurityDetection securityDetection){ + GetChargingGunByCode code = new GetChargingGunByCode(); + code.setCharging_pile_code(securityDetection.getCharging_pile_code()); + code.setCharging_gun_code(securityDetection.getCharging_gun_code()); + TChargingGun chargingGun = chargingGunClient.getChargingGunByCode(code).getData(); + PreChargeCheck preChargeCheck1 = redisService.getCacheObject("AQJC_" + chargingGun.getId()); + if(null != preChargeCheck1){ + preChargeCheck1.setElectronicLockLock(preChargeCheck1.getElectronicLockLock()); + preChargeCheck1.setInsulationTesting(true); + preChargeCheck1.setSecureConnectionDetection(preChargeCheck1.getSecureConnectionDetection()); + preChargeCheck1.setStartupSuccess(1); + redisService.setCacheObject("AQJC_" + chargingGun.getId(), preChargeCheck1, 24L, TimeUnit.HOURS); + } + } + + /** + * 启动充电应发 + * @param message + */ + @Override + public void startChargeSuccessfully(PlatformStartChargingReplyMessage message) { + Integer startup_result = message.getStartup_result(); + Integer failure_cause = message.getFailure_cause(); + TChargingOrder order = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, message.getTransaction_serial_number())); + if(order.getStatus() != 2){ + return; + } + String code = order.getCode(); + PreChargeCheck preChargeCheck1 = redisService.getCacheObject("AQJC_" + order.getChargingGunId()); + if(null != preChargeCheck1){ + preChargeCheck1.setElectronicLockLock(preChargeCheck1.getElectronicLockLock()); + preChargeCheck1.setInsulationTesting(true); + preChargeCheck1.setSecureConnectionDetection(preChargeCheck1.getSecureConnectionDetection()); + preChargeCheck1.setStartupSuccess(1); + redisService.setCacheObject("AQJC_" + order.getChargingGunId(), preChargeCheck1, 24L, TimeUnit.HOURS); + } + if(0 == startup_result){ + //启动失败 + preChargeCheck1.setStartupSuccess(3); + preChargeCheck1.setFailureCause(failure_cause); + //启动失败后取消订单,退款操作 + refund(code); + order.setStatus(-1); + order.setEndMode(0); + }else{ + //启动成功 + preChargeCheck1.setStartupSuccess(2); + order.setStatus(3); + order.setStartTime(LocalDateTime.now()); + } + this.updateById(order); + } /** * 启动失败后的退款,取消订单 @@ -986,7 +1093,7 @@ TAppUser appUser1 = appUserClient.getUserById(appUser.getInviteUserId()).getData(); if(null != appUser1.getVipId()){ - TVip vip = vipClient.getInfo(appUser1.getVipId()).getData(); + TVip vip = vipClient.getInfo1(appUser1.getVipId()).getData(); Integer doubleIntegration = vip.getDoubleIntegration(); //双倍积分 if(1 == doubleIntegration){ @@ -1068,7 +1175,7 @@ Integer num1 = JSON.parseObject(integralRule.getChargeCredit()).getInteger("num1"); Integer integral = payAmount.multiply(new BigDecimal(num1)).intValue(); if(null != appUser.getVipId()){ - TVip vip = vipClient.getInfo(appUser.getVipId()).getData(); + TVip vip = vipClient.getInfo1(appUser.getVipId()).getData(); Integer doubleIntegration = vip.getDoubleIntegration(); //双倍积分 if(1 == doubleIntegration){ @@ -1798,7 +1905,7 @@ TAppUser appUser1 = appUserClient.getUserById(appUser.getInviteUserId()).getData(); if(null != appUser1.getVipId()){ - TVip vip = vipClient.getInfo(appUser1.getVipId()).getData(); + TVip vip = vipClient.getInfo1(appUser1.getVipId()).getData(); Integer doubleIntegration = vip.getDoubleIntegration(); //双倍积分 if(1 == doubleIntegration){ diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderEvaluateServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderEvaluateServiceImpl.java index 221c46f..689b6e2 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderEvaluateServiceImpl.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderEvaluateServiceImpl.java @@ -278,7 +278,7 @@ if(null != num1 && 0 < num1){ TAppUser appUser = appUserClient.getUserById(userid).getData(); if(null != appUser.getVipId()){ - TVip vip = vipClient.getInfo(appUser.getVipId()).getData(); + TVip vip = vipClient.getInfo1(appUser.getVipId()).getData(); Integer doubleIntegration = vip.getDoubleIntegration(); //双倍积分 if(1 == doubleIntegration){ diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TVipOrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TVipOrderServiceImpl.java index 23aeefd..b341dd9 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TVipOrderServiceImpl.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TVipOrderServiceImpl.java @@ -53,7 +53,7 @@ for (TVipOrder tVipOrder : list) { tVipOrder.setUid(tVipOrder.getId().toString()); tVipOrder.setUserUid(tVipOrder.getAppUserId().toString()); - TVip data = vipClient.getInfo(tVipOrder.getVipId()).getData(); + TVip data = vipClient.getInfo1(tVipOrder.getVipId()).getData(); if (data!=null){ tVipOrder.setName(data.getName()); } diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TGoodsController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TGoodsController.java index 1eb1e82..ada569e 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TGoodsController.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TGoodsController.java @@ -219,7 +219,7 @@ if (coupon.getInventoryQuantity() != -1 && count >= coupon.getInventoryQuantity()) { return AjaxResult.error("当前用户已到达兑换"+coupon+"次"); }else { - coupon.setInventoryQuantity(coupon.getInventoryQuantity()-exchangeDto.getNum()); + coupon.setInventoryQuantity(coupon.getInventoryQuantity()-1); } -- Gitblit v1.7.1