ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/SiteInfoVO.java
@@ -27,7 +27,7 @@ @ApiModelProperty(value = "开通会员预计可省") private BigDecimal money; @ApiModelProperty(value = "额外赠送优惠券X张") private Integer couponCount; private Integer couponCount = 0; @ApiModelProperty(value = "超时占位费说明") private String spaceChargeExplain; @ApiModelProperty(value = "添加车辆最高可得积分 车辆信息为空 展示提示语") 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-other/src/main/java/com/ruoyi/other/api/factory/VipFallbackFactory.java
@@ -10,6 +10,8 @@ import org.springframework.cloud.openfeign.FallbackFactory; import org.springframework.stereotype.Component; import java.util.List; /** * 会员服务降级处理 * @@ -41,6 +43,11 @@ } @Override public R<List<TVip>> getVipList() { return R.fail("查询会员集合失败:" + throwable.getMessage()); } @Override public R<TVip> getInfo1(Integer id) { return R.fail("根据会员id 获取会员信息:" + throwable.getMessage()); } ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/VipClient.java
@@ -12,6 +12,8 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; import java.util.List; /** * 会员服务 * @author ruoyi @@ -41,4 +43,7 @@ @PostMapping(value = "/t-app-user/user/give/vip") R giveVip(@RequestBody GiveVipDto giveVipDto); @GetMapping(value = "/vip/getVipList") R<List<TVip>> getVipList(); } ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysRole.java
@@ -70,7 +70,11 @@ @ApiModelProperty(value = "站点名称") @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-account/src/main/java/com/ruoyi/account/service/impl/TAppUserServiceImpl.java
@@ -46,17 +46,18 @@ TAppUser appUser = this.getOne(Wrappers.lambdaQuery(TAppUser.class) .eq(TAppUser::getPhone, appletUserDecodeData.getPhoneNumber()) .isNull(TAppUser::getWxOpenid) .eq(TAppUser::getStatus,1) .last("LIMIT 1")); if(Objects.isNull(appUser)){ // 先使用openId和当前手机号进行查询 appUser = this.getOne(Wrappers.lambdaQuery(TAppUser.class) .eq(TAppUser::getWxOpenid, appletUserDecodeData.getOpenId()) .eq(TAppUser::getPhone, appletUserDecodeData.getPhoneNumber()) .eq(TAppUser::getStatus,1) .last("LIMIT 1")); if(Objects.isNull(appUser)){ appUser = new TAppUser(); appUser.setPhone(appletUserDecodeData.getPhoneNumber()); appUser.setInviteUserId(inviteUserId); } } if(Objects.nonNull(appUser.getStatus())){ @@ -71,7 +72,9 @@ break; } } if(Objects.nonNull(inviteUserId)){ appUser.setInviteUserId(inviteUserId); } appUser.setAvatar(StringUtils.hasLength(appUser.getAvatar())?appUser.getAvatar():"http://221.182.45.100:8090/2024-10-26/logo.png"); appUser.setName(StringUtils.hasLength(appUser.getName())?appUser.getName():RptUtils.around(appletUserDecodeData.getPhoneNumber(),3,4)); appUser.setCity(appletUserDecodeData.getCity()); @@ -90,17 +93,18 @@ TAppUser appUser = this.getOne(Wrappers.lambdaQuery(TAppUser.class) .eq(TAppUser::getPhone, phone) .isNull(TAppUser::getAliOpenid) .eq(TAppUser::getStatus,1) .last("LIMIT 1")); if(Objects.isNull(appUser)){ // 先使用openId和当前手机号进行查询 appUser = this.getOne(Wrappers.lambdaQuery(TAppUser.class) .eq(TAppUser::getAliOpenid, response.getOpenId()) .eq(TAppUser::getPhone, phone) .eq(TAppUser::getStatus,1) .last("LIMIT 1")); if(Objects.isNull(appUser)){ appUser = new TAppUser(); appUser.setPhone(phone); appUser.setInviteUserId(inviteUserId); } } if(Objects.nonNull(appUser.getStatus())){ @@ -115,6 +119,9 @@ break; } } if(Objects.nonNull(inviteUserId)){ appUser.setInviteUserId(inviteUserId); } appUser.setAliOpenid(response.getOpenId()); appUser.setAvatar(StringUtils.hasLength(appUser.getAvatar())?appUser.getAvatar():"http://221.182.45.100:8090/2024-10-26/logo.png"); appUser.setName(StringUtils.hasLength(appUser.getName())?appUser.getName():RptUtils.around(phone,3,4)); ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java
@@ -1,10 +1,16 @@ package com.ruoyi.chargingPile.controller; import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.ruoyi.account.api.feignClient.AppUserClient; import com.ruoyi.account.api.feignClient.AppUserVipDetailClient; import com.ruoyi.account.api.model.TAppUser; import com.ruoyi.account.api.model.TAppUserVipDetail; import com.ruoyi.account.api.vo.GetAppUserVipDetail; import com.ruoyi.chargingPile.api.dto.GetSiteListDTO; import com.ruoyi.chargingPile.api.feignClient.ParkingLotClient; import com.ruoyi.chargingPile.api.model.*; @@ -41,6 +47,7 @@ import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.CollectionUtils; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -100,7 +107,8 @@ private TokenService tokenService; @Resource private AppUserClient appUserClient; @Resource private AppUserVipDetailClient vipDetailClient; /** * 根据站点id 查询所有充电桩 @@ -132,23 +140,26 @@ if(DateUtils.string2LocalTime(tAccountingStrategyDetail.getStartTime() + ":00").compareTo(LocalTime.now()) <= 0 && DateUtils.string2LocalTime(tAccountingStrategyDetail.getEndTime() + ("23:59:59".equals(tAccountingStrategyDetail.getEndTime())?"":":00")).compareTo(LocalTime.now()) > 0){ siteInfoVO.setElectrovalence(tAccountingStrategyDetail.getElectrovalence().add(tAccountingStrategyDetail.getServiceCharge()).setScale(4, BigDecimal.ROUND_HALF_UP)); if(null != byId1.getDiscount()){ siteInfoVO.setVipElectrovalence((tAccountingStrategyDetail.getServiceCharge().multiply(byId1.getDiscount()).add(tAccountingStrategyDetail.getElectrovalence())).setScale(4, BigDecimal.ROUND_HALF_UP)); }else{ // 获取当前登录用户id Long userId = tokenService.getLoginUserApplet().getUserId(); // 根据id查询用户信息 TAppUser appUser = appUserClient.getUserById(userId).getData(); if(Objects.nonNull(appUser)){ TVip vip = vipClient.getInfo1(appUser.getVipId()).getData(); if(Objects.nonNull(vip) && vip.getType() == 2){ siteInfoVO.setVipElectrovalence(vip.getDiscount().divide(new BigDecimal(10)).multiply(tAccountingStrategyDetail.getServiceCharge()).add(tAccountingStrategyDetail.getElectrovalence())); }else { siteInfoVO.setVipElectrovalence(tAccountingStrategyDetail.getElectrovalence()); } // 获取当前登录用户id Long userId = tokenService.getLoginUserApplet().getUserId(); // 根据id查询用户信息 TAppUser appUser = appUserClient.getUserById(userId).getData(); if(Objects.nonNull(appUser)){ // TVip vip = vipClient.getInfo1(appUser.getVipId()).getData(); GetAppUserVipDetail getAppUserVipDetail = new GetAppUserVipDetail(); getAppUserVipDetail.setAppUserId(userId); getAppUserVipDetail.setVipId(appUser.getVipId()); R<TAppUserVipDetail> appUserVipDetail = vipDetailClient.getAppUserVipDetail(getAppUserVipDetail); TAppUserVipDetail data1 = appUserVipDetail.getData(); String vipJson = data1.getVipJson(); TVip vip = JSON.parseObject(vipJson, TVip.class); if(Objects.nonNull(vip) && vip.getType() == 2){ siteInfoVO.setVipElectrovalence(vip.getDiscount().divide(new BigDecimal(10)).multiply(tAccountingStrategyDetail.getServiceCharge()).add(tAccountingStrategyDetail.getElectrovalence())); }else { siteInfoVO.setVipElectrovalence(tAccountingStrategyDetail.getElectrovalence()); siteInfoVO.setVipElectrovalence((tAccountingStrategyDetail.getServiceCharge().multiply(byId1.getDiscount()).add(tAccountingStrategyDetail.getElectrovalence())).setScale(4, BigDecimal.ROUND_HALF_UP)); } }else { siteInfoVO.setVipElectrovalence(tAccountingStrategyDetail.getElectrovalence().add(tAccountingStrategyDetail.getServiceCharge()).setScale(4, BigDecimal.ROUND_HALF_UP)); } } } @@ -177,26 +188,41 @@ if(DateUtils.string2LocalTime(tAccountingStrategyDetail.getStartTime() + ":00").compareTo(LocalTime.now()) <= 0 && DateUtils.string2LocalTime(tAccountingStrategyDetail.getEndTime() + ("23:59:59".equals(tAccountingStrategyDetail.getEndTime())?"":":00")).compareTo(LocalTime.now()) > 0){ siteInfoVO.setElectrovalence(tAccountingStrategyDetail.getElectrovalence().add(tAccountingStrategyDetail.getServiceCharge()).setScale(4, BigDecimal.ROUND_HALF_UP)); if(null != byId1.getDiscount()){ siteInfoVO.setVipElectrovalence((tAccountingStrategyDetail.getServiceCharge().multiply(byId1.getDiscount()).add(tAccountingStrategyDetail.getElectrovalence())).setScale(4, BigDecimal.ROUND_HALF_UP)); }else{ // 获取当前登录用户id Long userId = tokenService.getLoginUserApplet().getUserId(); // 根据id查询用户信息 TAppUser appUser = appUserClient.getUserById(userId).getData(); if(Objects.nonNull(appUser)){ TVip vip = vipClient.getInfo1(appUser.getVipId()).getData(); if(Objects.nonNull(vip) && vip.getType() == 2){ siteInfoVO.setVipElectrovalence(vip.getDiscount().divide(new BigDecimal(10)).multiply(tAccountingStrategyDetail.getServiceCharge()).add(tAccountingStrategyDetail.getElectrovalence())); }else { siteInfoVO.setVipElectrovalence(tAccountingStrategyDetail.getElectrovalence()); } }else { siteInfoVO.setVipElectrovalence(tAccountingStrategyDetail.getElectrovalence()); // 获取当前登录用户id Long userId = tokenService.getLoginUserApplet().getUserId(); // 根据id查询用户信息 TAppUser appUser = appUserClient.getUserById(userId).getData(); if(Objects.nonNull(appUser)){ // TVip vip = vipClient.getInfo1(appUser.getVipId()).getData(); GetAppUserVipDetail getAppUserVipDetail = new GetAppUserVipDetail(); getAppUserVipDetail.setAppUserId(userId); getAppUserVipDetail.setVipId(appUser.getVipId()); R<TAppUserVipDetail> appUserVipDetail = vipDetailClient.getAppUserVipDetail(getAppUserVipDetail); TAppUserVipDetail data1 = appUserVipDetail.getData(); String vipJson = data1.getVipJson(); TVip vip = JSON.parseObject(vipJson, TVip.class); if(Objects.nonNull(vip) && vip.getType() == 2){ siteInfoVO.setVipElectrovalence(vip.getDiscount().divide(new BigDecimal(10)).multiply(tAccountingStrategyDetail.getServiceCharge()).add(tAccountingStrategyDetail.getElectrovalence())); }else{ siteInfoVO.setVipElectrovalence((tAccountingStrategyDetail.getServiceCharge().multiply(byId1.getDiscount()).add(tAccountingStrategyDetail.getElectrovalence())).setScale(4, BigDecimal.ROUND_HALF_UP)); } }else { siteInfoVO.setVipElectrovalence(tAccountingStrategyDetail.getElectrovalence().add(tAccountingStrategyDetail.getServiceCharge()).setScale(4, BigDecimal.ROUND_HALF_UP)); } } } List<TVip> vips = vipClient.getVipList().getData(); if(!CollectionUtils.isEmpty(vips)){ TVip tVip = vips.get(0); JSONArray objects = JSONArray.parseArray(tVip.getCoupon()); Integer num = 0; for (Object object : objects) { JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(object)); Integer number1 = jsonObject.getInteger("number"); num += number1; } siteInfoVO.setCouponCount(num); } siteInfoVO.setChargingPileId(one.getId()); siteInfoVO.setName(byId.getName()); siteInfoVO.setNumber(one.getNumber().toString()); ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TAccountingStrategyDetailServiceImpl.java
@@ -1,9 +1,13 @@ package com.ruoyi.chargingPile.service.impl; import com.alibaba.fastjson2.JSON; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.account.api.feignClient.AppUserClient; import com.ruoyi.account.api.feignClient.AppUserVipDetailClient; import com.ruoyi.account.api.model.TAppUser; import com.ruoyi.account.api.model.TAppUserVipDetail; import com.ruoyi.account.api.vo.GetAppUserVipDetail; import com.ruoyi.chargingPile.api.model.Site; import com.ruoyi.chargingPile.api.model.TAccountingStrategy; import com.ruoyi.chargingPile.api.model.TAccountingStrategyDetail; @@ -15,6 +19,7 @@ import com.ruoyi.chargingPile.service.ISiteService; import com.ruoyi.chargingPile.service.TAccountingStrategyDetailService; import com.ruoyi.chargingPile.service.TChargingGunService; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.exception.ServiceException; import com.ruoyi.common.core.utils.DateUtils; import com.ruoyi.common.security.service.TokenService; @@ -52,6 +57,8 @@ private TChargingGunService chargingGunService; @Autowired private AppUserClient appUserClient; @Resource private AppUserVipDetailClient vipDetailClient; @Override public List<TAccountingStrategyDetailVO> queryAccountingStrategyDetailByStrategyId(Integer strategyId) { return this.baseMapper.queryAccountingStrategyDetailByStrategyId(strategyId); @@ -72,7 +79,16 @@ TAppUser appUser = appUserClient.getUserById(userId).getData(); if(Objects.nonNull(appUser)){ // 查询会员信息 TVip vip = vipClient.getInfo1(appUser.getVipId()).getData(); // TVip vip = vipClient.getInfo1(appUser.getVipId()).getData(); GetAppUserVipDetail getAppUserVipDetail = new GetAppUserVipDetail(); getAppUserVipDetail.setAppUserId(userId); getAppUserVipDetail.setVipId(appUser.getVipId()); R<TAppUserVipDetail> appUserVipDetail = vipDetailClient.getAppUserVipDetail(getAppUserVipDetail); TAppUserVipDetail data1 = appUserVipDetail.getData(); String vipJson = data1.getVipJson(); TVip vip = JSON.parseObject(vipJson, TVip.class); TAccountingStrategyDetailVO accountingStrategyDetailVO; TAccountingStrategyDetailVO accountingStrategyDetailNext; // 获取当前时间段的计费策略明细 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java
@@ -518,7 +518,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
@@ -187,6 +187,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); @@ -1739,6 +1742,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); } } @@ -1904,16 +1911,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))); } @@ -1963,13 +1970,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()); @@ -2035,8 +2042,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()); @@ -2050,8 +2057,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); } @@ -2247,7 +2254,7 @@ if (tChargingOrder.getPaymentAmount().compareTo(payOrderQueryDto.getRefundAmount())==-1){ return R.fail("退款金额需小于支付金额"); } if ((tChargingOrder.getRechargeAmount().subtract(payOrderQueryDto.getRefundAmount()).compareTo(tChargingOrder.getPaymentAmount()))==0){ if ((tChargingOrder.getRechargeAmount().subtract(tChargingOrder.getRefundAmount()).compareTo(payOrderQueryDto.getRefundAmount()))==0){ tChargingOrder.setStatus(5); } @@ -2316,7 +2323,7 @@ if (tChargingOrder.getPaymentAmount().compareTo(payOrderQueryDto.getRefundAmount())==-1){ return R.fail("退款金额需小于支付金额"); } if ((tChargingOrder.getPaymentAmount().subtract(payOrderQueryDto.getRefundAmount()).compareTo(tChargingOrder.getPaymentAmount()))==0){ if ((tChargingOrder.getPaymentAmount().subtract(tChargingOrder.getRefundAmount()).compareTo(payOrderQueryDto.getRefundAmount()))==0){ tChargingOrder.setStatus(5); } ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TVipController.java
@@ -93,6 +93,11 @@ return R.ok(vipService.getById(id)); } @GetMapping(value = "/getVipList") public R<List<TVip>> getVipList(){ return R.ok(vipService.lambdaQuery().eq(TVip::getReveal, 1).list()); } /** * 远程调用 * @param id