ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/BmsDemandAndChargerExportationFallbackFactory.java
New file @@ -0,0 +1,37 @@ package com.ruoyi.integration.api.factory; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.dto.MongoChargingOrderQuery; import com.ruoyi.integration.api.feignClient.BmsDemandAndChargerExportationClient; import com.ruoyi.integration.api.feignClient.UploadRealTimeMonitoringDataClient; import com.ruoyi.integration.api.model.BmsDemandAndChargerExportation; import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData; import com.ruoyi.integration.api.model.UploadRealTimeMonitoringPageData; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; import java.util.List; /** * 充电桩服务降级处理 * * @author ruoyi */ @Component public class BmsDemandAndChargerExportationFallbackFactory implements org.springframework.cloud.openfeign.FallbackFactory<BmsDemandAndChargerExportationClient> { private static final Logger log = LoggerFactory.getLogger(BmsDemandAndChargerExportationFallbackFactory.class); @Override public BmsDemandAndChargerExportationClient create(Throwable throwable) { log.error("调用充电桩实时监测数据失败:{}", throwable.getMessage()); return new BmsDemandAndChargerExportationClient() { @Override public R<BmsDemandAndChargerExportation> getBmsDemandAndChargerExportation(String orderCode) { return R.fail("获取充电中bms数据失败:" + throwable.getMessage()); } }; } } ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/BmsDemandAndChargerExportationClient.java
New file @@ -0,0 +1,27 @@ package com.ruoyi.integration.api.feignClient; import com.ruoyi.common.core.constant.ServiceNameConstants; import com.ruoyi.common.core.domain.R; import com.ruoyi.integration.api.factory.BmsDemandAndChargerExportationFallbackFactory; import com.ruoyi.integration.api.model.BmsDemandAndChargerExportation; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestParam; /** * @author zhibing.pu * @Date 2024/11/1 16:06 */ @FeignClient(contextId = "BmsDemandAndChargerExportationClient", value = ServiceNameConstants.INTEGRATION_SERVICE, fallbackFactory = BmsDemandAndChargerExportationFallbackFactory.class) public interface BmsDemandAndChargerExportationClient { /** * 获取充电中bms数据 * @param orderCode * @return */ @PostMapping("/bmsDemandAndChargerExportation/getBmsDemandAndChargerExportation") R<BmsDemandAndChargerExportation> getBmsDemandAndChargerExportation(@RequestParam("orderCode") String orderCode); } ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysRole.java
@@ -71,6 +71,10 @@ @TableField(exist = false) private List<String> siteNames; @TableField(exist = false) private Long number; public SysRole() { @@ -203,6 +207,14 @@ this.siteNames = siteNames; } public Long getNumber() { return number; } public void setNumber(Long number) { this.number = number; } @Override public String toString() { return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysRoleController.java
@@ -112,6 +112,8 @@ List<String> collect = sites.stream().map(Site::getName).collect(Collectors.toList()); record.setSiteNames(collect); } long count = sysUserRoleService.count(new LambdaQueryWrapper<SysUserRole>().eq(SysUserRole::getRoleId, record.getRoleId())); record.setNumber(count); } return AjaxResult.success(page); } ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java
@@ -517,7 +517,7 @@ if(status == 5 || status == 6){ gunMonitoring.setStatus(3); } if(status == 4){ if(status == 4 || status == 7){ Integer id = gunMonitoring.getId(); TChargingOrder chargingOrder = chargingOrderClient.getOrderDetailByGunId(id).getData(); if(null != chargingOrder){ ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/server/ParkingOrderService.java
@@ -53,7 +53,9 @@ TParkingLot data = parkingLotClient.getParkingLotByAppKey(order.getAppkey()).getData(); parkingRecord.setName(data.getName()); parkingRecord.setParkingLotId(data.getId()); parkingRecord.setInParkingTime(LocalDateTime.parse(order.getEnterDateTime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); LocalDateTime parse = LocalDateTime.parse(order.getEnterDateTime(), DateTimeFormatter.ofPattern("yyyy-MM-ddTHH:mm:ss.SSSZ")); parse.plusDays(8); parkingRecord.setInParkingTime(parse); parkingRecord.setStatus(1); parkingRecord.setCreateTime(LocalDateTime.now()); parkingRecord.setSerialnumber(order.getId()); @@ -70,7 +72,9 @@ query.setLicensePlate(order.getPlate()); query.setStatus(1); TParkingRecord parkingRecord = parkingRecordClient.getParkingRecord(query).getData(); parkingRecord.setOutParkingTime(LocalDateTime.parse(order.getLeaveDateTime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); LocalDateTime parse = LocalDateTime.parse(order.getLeaveDateTime(), DateTimeFormatter.ofPattern("yyyy-MM-ddTHH:mm:ss.SSSZ")); parse.plusDays(8); parkingRecord.setOutParkingTime(parse); parkingRecord.setParkingDuration(Integer.valueOf(order.getLongTime())); parkingRecord.setOrderAmount(new BigDecimal(order.getReceivable())); parkingRecord.setPayment(new BigDecimal(order.getPayment())); @@ -104,7 +108,9 @@ TParkingLot data = parkingLotClient.getParkingLotByAppKey(order.getAppkey()).getData(); parkingRecord.setName(data.getName()); parkingRecord.setParkingLotId(data.getId()); parkingRecord.setInParkingTime(LocalDateTime.parse(order.getEntertime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); LocalDateTime parse = LocalDateTime.parse(order.getEntertime(), DateTimeFormatter.ofPattern("yyyy-MM-ddTHH:mm:ss.SSSZ")); parse.plusDays(8); parkingRecord.setInParkingTime(parse); parkingRecord.setStatus(1); parkingRecord.setCreateTime(LocalDateTime.now()); parkingRecord.setSerialnumber(order.getId()); @@ -121,7 +127,9 @@ query.setLicensePlate(order.getPlatenumber()); query.setStatus(1); TParkingRecord parkingRecord = parkingRecordClient.getParkingRecord(query).getData(); parkingRecord.setOutParkingTime(LocalDateTime.parse(order.getLeavetime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); LocalDateTime parse = LocalDateTime.parse(order.getLeavetime(), DateTimeFormatter.ofPattern("yyyy-MM-ddTHH:mm:ss.SSSZ")); parse.plusDays(8); parkingRecord.setOutParkingTime(parse); parkingRecord.setParkingDuration(Integer.valueOf(order.getLongTime())); parkingRecord.setOrderAmount(new BigDecimal(order.getMoney())); parkingRecord.setPayment(new BigDecimal(order.getMoney())); ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/controller/BmsDemandAndChargerExportationController.java
New file @@ -0,0 +1,46 @@ package com.ruoyi.integration.controller; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.integration.api.model.BmsDemandAndChargerExportation; import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData; import com.ruoyi.integration.mongodb.service.BmsDemandAndChargerExportationService; import org.springframework.data.domain.Sort; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import java.util.List; /** * @author zhibing.pu * @Date 2024/11/1 15:52 */ @RestController @RequestMapping("/bmsDemandAndChargerExportation") public class BmsDemandAndChargerExportationController { @Resource private BmsDemandAndChargerExportationService bmsDemandAndChargerExportationService; /** * 获取充电中bms数据 * @param orderCode * @return */ @PostMapping("/getBmsDemandAndChargerExportation") public R<BmsDemandAndChargerExportation> getBmsDemandAndChargerExportation(@RequestParam("orderCode") String orderCode){ List<BmsDemandAndChargerExportation> bmsDemandAndChargerExportation = bmsDemandAndChargerExportationService.getBmsDemandAndChargerExportation(orderCode); if(bmsDemandAndChargerExportation.size() > 0){ BmsDemandAndChargerExportation uploadRealTimeMonitoringData = bmsDemandAndChargerExportation.get(0); return R.ok(uploadRealTimeMonitoringData); } return R.ok(); } } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/BmsDemandAndChargerExportationService.java
@@ -2,6 +2,18 @@ import com.ruoyi.integration.api.model.BmsDemandAndChargerExportation; import com.ruoyi.integration.mongodb.base.BaseService; import org.springframework.web.bind.annotation.RequestParam; import java.util.List; public interface BmsDemandAndChargerExportationService extends BaseService<BmsDemandAndChargerExportation> { /** * 获取bms数据 * @param orderCode * @return */ List<BmsDemandAndChargerExportation> getBmsDemandAndChargerExportation(String orderCode); } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/impl/BmsDemandAndChargerExportationServiceImpl.java
@@ -1,10 +1,14 @@ package com.ruoyi.integration.mongodb.service.impl; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.integration.iotda.constant.IotConstant; import com.ruoyi.integration.api.model.BmsDemandAndChargerExportation; import com.ruoyi.integration.mongodb.service.BmsDemandAndChargerExportationService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Sort; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.stereotype.Service; import java.util.List; @@ -28,4 +32,17 @@ public List<BmsDemandAndChargerExportation> findAll() { return mongoTemplate.findAll(BmsDemandAndChargerExportation.class); } @Override public List<BmsDemandAndChargerExportation> getBmsDemandAndChargerExportation(String orderCode) { Query query = new Query(); if(StringUtils.isNotEmpty(orderCode)){ query.addCriteria(Criteria.where("transaction_serial_number").is(orderCode)); } List<BmsDemandAndChargerExportation> uploadRealTimeMonitoringData = mongoTemplate.find( query.with(Sort.by(Sort.Order.desc("create_time"))) , BmsDemandAndChargerExportation.class); return uploadRealTimeMonitoringData; } } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -188,6 +188,9 @@ @Resource private SecurityDetectionClient securityDetectionClient; @Resource private BmsDemandAndChargerExportationClient bmsDemandAndChargerExportationClient; //计数器 private Map<String, Integer> counter_map = new HashMap<>(); @@ -1108,7 +1111,7 @@ appUserIntegralChange.setCurrentIntegral(appUser1.getPoints() + num1); appUserIntegralChange.setCreateTime(LocalDateTime.now()); appUserIntegralChange.setOrderCode(chargingOrder.getCode()); appUserIntegralChange.setExtension(chargingOrder.getId().toString()); appUserIntegralChange.setExtension(appUser.getId().toString()); appUserIntegralChangeClient.addAppUserIntegralChange(appUserIntegralChange); appUser1.setPoints(appUser1.getPoints() + num1); @@ -1734,6 +1737,10 @@ chargingOrder.setChargingCapacity(query.getCharging_degree()); chargingOrder.setElectricity(query.getCharging_degree()); chargingOrder.setTotalElectricity(new BigDecimal(100 - query.getSoc())); BmsDemandAndChargerExportation data = bmsDemandAndChargerExportationClient.getBmsDemandAndChargerExportation(chargingOrder.getCode()).getData(); if(null != data){ chargingOrder.setNeedElec(data.getBms_current_requirements()); } this.updateById(chargingOrder); } } @@ -1899,16 +1906,16 @@ serviceCharge = serviceCharge.multiply(chargingOrder.getVipDiscount()).setScale(2, RoundingMode.DOWN); } chargingOrderAccountingStrategy.setChargingCapacity(sharp_peak_charge); chargingOrderAccountingStrategy.setPeriodElectricPrice(electrovalenc); chargingOrderAccountingStrategy.setPeriodServicePrice(serviceCharge); chargingOrderAccountingStrategy.setPeriodOriginalServicePrice(originalServicePrice); chargingOrderAccountingStrategy.setVipDiscountAmount(vipDiscountAmount); chargingOrderAccountingStrategy.setPeriodElectricPrice(electrovalenc.setScale(2, RoundingMode.DOWN)); chargingOrderAccountingStrategy.setPeriodServicePrice(serviceCharge.setScale(2, RoundingMode.DOWN)); chargingOrderAccountingStrategy.setPeriodOriginalServicePrice(originalServicePrice.setScale(2, RoundingMode.DOWN)); chargingOrderAccountingStrategy.setVipDiscountAmount(vipDiscountAmount.setScale(2, RoundingMode.DOWN)); chargingOrderAccountingStrategy.setCreateTime(LocalDateTime.now()); chargingOrderAccountingStrategyService.save(chargingOrderAccountingStrategy); periodElectricPrice_total = periodElectricPrice_total.add(electrovalenc); periodServicePrice_total = periodServicePrice_total.add(originalServicePrice); total = total.add(electrovalenc.add(originalServicePrice)); periodElectricPrice_total = periodElectricPrice_total.add(electrovalenc.setScale(2, RoundingMode.DOWN)); periodServicePrice_total = periodServicePrice_total.add(originalServicePrice.setScale(2, RoundingMode.DOWN)); total = total.add(electrovalenc.add(originalServicePrice.setScale(2, RoundingMode.DOWN))); } @@ -1958,13 +1965,13 @@ if(null == chargingOrder.getEndMode()){ order.setEndMode(1); } order.setResidualAmount(rechargeAmount.subtract(total)); order.setResidualAmount(rechargeAmount.subtract(total).setScale(2, RoundingMode.DOWN)); order.setStartTime(LocalDateTime.parse(vo.getStart_time(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SS"))); order.setEndTime(LocalDateTime.parse(vo.getEnd_time(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SS"))); order.setStatus(5); order.setOrderAmount(orderAmount); order.setVipDiscountAmount(discountAmount); order.setElectrovalence(periodElectricPrice_total); order.setOrderAmount(orderAmount.setScale(2, RoundingMode.DOWN)); order.setVipDiscountAmount(discountAmount.setScale(2, RoundingMode.DOWN)); order.setElectrovalence(periodElectricPrice_total.setScale(2, RoundingMode.DOWN)); order.setChargingCapacity(vo.getTotal_electricity()); order.setElectricity(vo.getTotal_electricity()); @@ -2030,8 +2037,8 @@ } order.setServiceCharge(periodServicePrice_total.setScale(2, RoundingMode.DOWN)); order.setPaymentAmount(payAmount); order.setRefundAmount(refundAmount); order.setPaymentAmount(payAmount.setScale(2, RoundingMode.DOWN)); order.setRefundAmount(refundAmount.setScale(2, RoundingMode.DOWN)); order.setRefundStatus(1); this.updateById(order); chargingOrder = this.getById(order.getId()); @@ -2045,8 +2052,8 @@ BigDecimal periodServicePrice = chargingOrderAccountingStrategy.getPeriodServicePrice(); BigDecimal multiply = couponDiscountAmount.multiply(periodServicePrice.divide(reduce, new MathContext(4, RoundingMode.HALF_EVEN))); periodServicePrice = periodServicePrice.subtract(multiply); chargingOrderAccountingStrategy.setPeriodServicePrice(periodServicePrice); chargingOrderAccountingStrategy.setCouponDiscountAmount(multiply); chargingOrderAccountingStrategy.setPeriodServicePrice(periodServicePrice.setScale(2, RoundingMode.DOWN)); chargingOrderAccountingStrategy.setCouponDiscountAmount(multiply.setScale(2, RoundingMode.DOWN)); } chargingOrderAccountingStrategyService.updateBatchById(list); }