ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/AcquisitionBillingModeReply.java
@@ -27,6 +27,7 @@ private BigDecimal low_peak_electricity_rate;// 谷电费费率(精确到五位小数) private BigDecimal low_peak_service_rate;// 谷服务费费率(精确到五位小数) private BigDecimal loss_ratio;// 计损比例 // private DayTimeBase day_time_base; private Integer time1;// 0:00~0:30 时段费率号(0:尖费率,1:峰费率,2:平费率,3:谷费率) private Integer time2;// 0:30~1:00 时段费率号(0:尖费率,1:峰费率,2:平费率,3:谷费率) private Integer time3;// 0:30~1:00 时段费率号(0:尖费率,1:峰费率,2:平费率,3:谷费率) ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java
@@ -252,7 +252,7 @@ return AjaxResult.success(siteService.getSiteListGun()); } @PostMapping("/getSiteListParkLot") @GetMapping("/getSiteListParkLot") @ApiOperation(value = "获取站点列表不分页", tags = {"管理后台-停车场绑定"}) public AjaxResult<List<Site>> getSiteListParkLot(){ return AjaxResult.success(siteService.getSiteListParkLot()); ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyController.java
@@ -160,8 +160,8 @@ Long userId = SecurityUtils.getLoginUser().getUserid(); dto.setUserId(userId); dto.setAuditStatus(1); dto.setId(null); dto.setParentId(dto.getId()); dto.setId(null); accountingStrategyService.save(dto); // 添加明细 List<TAccountingStrategyDetail> accountingStrategyDetails = dto.getAccountingStrategyDetails(); @@ -228,6 +228,10 @@ String twoUserName = sysUserClient.getSysUser(children.getTwoUserId()).getData().getNickName(); accountingStrategyVO.setTwoUserName(twoUserName); } if(null != children.getUserId()){ String userName = sysUserClient.getSysUser(children.getUserId()).getData().getNickName(); accountingStrategyVO.setUserName(userName); } accountingStrategyVO.setAccountingStrategyDetailList(accountingStrategyDetailService.list(Wrappers.lambdaQuery(TAccountingStrategyDetail.class) .eq(TAccountingStrategyDetail::getAccountingStrategyId, children.getId()))); }else { @@ -242,6 +246,10 @@ String twoUserName = sysUserClient.getSysUser(accountingStrategy.getTwoUserId()).getData().getNickName(); accountingStrategyVO.setTwoUserName(twoUserName); } if(null != children.getUserId()){ String userName = sysUserClient.getSysUser(children.getUserId()).getData().getNickName(); accountingStrategyVO.setUserName(userName); } accountingStrategyVO.setAccountingStrategyDetailList(accountingStrategyDetailService.list(Wrappers.lambdaQuery(TAccountingStrategyDetail.class) .eq(TAccountingStrategyDetail::getAccountingStrategyId, id))); } ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/SiteServiceImpl.java
@@ -8,6 +8,7 @@ import com.ruoyi.chargingPile.api.model.Site; import com.ruoyi.chargingPile.api.model.TChargingGun; import com.ruoyi.chargingPile.api.model.TChargingPile; import com.ruoyi.chargingPile.api.model.TParkingLot; import com.ruoyi.chargingPile.api.query.GetSiteList; import com.ruoyi.chargingPile.api.query.SiteQuery; import com.ruoyi.chargingPile.api.vo.SiteDetailVO; @@ -15,10 +16,7 @@ import com.ruoyi.chargingPile.api.vo.TAccountingStrategyVO; import com.ruoyi.chargingPile.domain.SiteMenu; import com.ruoyi.chargingPile.mapper.SiteMapper; import com.ruoyi.chargingPile.service.IPartnerService; import com.ruoyi.chargingPile.service.ISiteService; import com.ruoyi.chargingPile.service.TChargingGunService; import com.ruoyi.chargingPile.service.TChargingPileService; import com.ruoyi.chargingPile.service.*; import com.ruoyi.common.core.utils.ServletUtils; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.web.domain.AjaxResult; @@ -36,9 +34,11 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; import java.util.*; import java.util.stream.Collectors; /** * @author zhibing.pu @@ -72,6 +72,8 @@ private VipClient vipClient; @Resource private SysUserRoleClient sysUserRoleClient; @Resource private TParkingLotService parkingLotService; @@ -317,6 +319,12 @@ ids = new HashSet<>(data); } } // 查询所有的停车场的站点id List<TParkingLot> list = parkingLotService.list(); List<Integer> siteIds = list.stream().map(TParkingLot::getSiteId).collect(Collectors.toList()); if(!CollectionUtils.isEmpty(ids) && !CollectionUtils.isEmpty(siteIds)){ ids.addAll(siteIds); } return this.baseMapper.getSiteListParkLot(ids); } ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TAccountingStrategyDetailServiceImpl.java
@@ -147,17 +147,24 @@ @Override public Boolean isStrategyPriceConsistent(List<TAccountingStrategyDetail> accountingStrategyDetails) { Map<Integer, BigDecimal> phaseToServiceFee = new HashMap<>(); Map<Integer, BigDecimal> phaseToCostServiceFee = new HashMap<>(); for (TAccountingStrategyDetail detail : accountingStrategyDetails) { Integer type = detail.getType(); BigDecimal serviceFee = detail.getServiceCharge(); BigDecimal costServiceCharge = detail.getCostServiceCharge(); if (phaseToServiceFee.containsKey(type)) { BigDecimal existingFee = phaseToServiceFee.get(type); if (!existingFee.equals(serviceFee)) { BigDecimal existingCostServiceCharge = phaseToCostServiceFee.get(type); if (existingFee.compareTo(serviceFee) != 0) { return false; // 发现不一致的服务费 } if (existingCostServiceCharge.compareTo(costServiceCharge) != 0) { return false; // 发现不一致的原价服务费 } } else { phaseToServiceFee.put(type, serviceFee); phaseToCostServiceFee.put(type, costServiceCharge); } } return true; // 所有相同阶段的服务费一致 ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/SiteMapper.xml
@@ -184,9 +184,8 @@ FROM t_site WHERE id = #{siteId} AND del_flag = ${@com.ruoyi.common.core.enums.DelFlagEnum@NO.getCode()} </select> <select id="getSiteListParkLot" resultType="com.ruoyi.chargingPile.api.model.Site"> select ts.id, ts.partner_id, ts.code, ts.`name`, ts.site_type, ts.business_category, ts.status,tpl.id AS parkingLotId select ts.id, ts.partner_id, ts.code, ts.`name`, ts.site_type, ts.business_category, ts.status from t_site ts left join t_parking_lot tpl on (ts.id = tpl.site_id) <where> <if test="null != ids and ids.size()>0"> AND ts.id IN @@ -195,7 +194,6 @@ </foreach> </if> AND ts.del_flag = ${@com.ruoyi.common.core.enums.DelFlagEnum@NO.getCode()} AND tpl.id IS NULL </where> </select> <select id="getSiteListGun" resultType="com.ruoyi.chargingPile.api.model.Site"> ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/listener/IotMessageListener.java
@@ -76,6 +76,11 @@ onlineReply.setOnline_result(0); result = iotMessageProduce.sendMessage(deviceId, ServiceIdMenu.ONLINE_REPLY.getKey(), messageUtil.onlineReply(onlineReply)); log.info("充电桩登录认证-返回结果:{}",result); // 响应硬件 对时设置应答 TimingSettingReply timingSettingReplyOnline = new TimingSettingReply(); timingSettingReplyOnline.setCharging_pile_code(onlineMessage.getCharging_pile_code()); timingSettingReplyOnline.setCurrent_time(CP56Time2aConverter.convertToCP56Time2a(new Date())); iotMessageProduce.sendMessage(deviceId, ServiceIdMenu.TIMING_SETTING_REPLY.getKey(),messageUtil.timingSettingReply(timingSettingReplyOnline)); break; case SendTagConstant.PING: PingMessage pingMessage = JSON.parseObject(content.toJSONString(),PingMessage.class); @@ -129,14 +134,14 @@ AcquisitionBillingModeMessage acquisitionBillingModeMessage = JSON.parseObject(content.toJSONString(),AcquisitionBillingModeMessage.class); sendResult = enhanceProduce.acquisitionBillingModeMessage(acquisitionBillingModeMessage); // 响应硬件 计费模型请求应答 1=尖阶段,2=峰阶段,3=平阶段,4=谷阶段 List<TAccountingStrategyDetail> accountingStrategyDetails = accountingStrategyDetailClient.getDetailListByCode(acquisitionBillingModeMessage.getCharging_pile_code()).getData(); List<TAccountingStrategyDetail> accountingStrategyDetails = accountingStrategyDetailClient.getDetailListByCode(acquisitionBillingModeMessage.getCharging_pile_code().substring(0,14)).getData(); Map<Integer, TAccountingStrategyDetail> strategyPrice = StrategyUtil.getStrategyPrice(accountingStrategyDetails); // 价格设置 AcquisitionBillingModeReply acquisitionBillingModeReply = new AcquisitionBillingModeReply(); StrategyUtil.setStrategyPrice(strategyPrice,acquisitionBillingModeReply); // 时段设置 StrategyUtil.setTime(accountingStrategyDetails,acquisitionBillingModeReply); TAccountingStrategyDetail accountingStrategyDetail = accountingStrategyDetailClient.getDetailByCode(acquisitionBillingModeMessage.getCharging_pile_code()).getData(); TAccountingStrategyDetail accountingStrategyDetail = accountingStrategyDetailClient.getDetailByCode(acquisitionBillingModeMessage.getCharging_pile_code().substring(0,14)).getData(); acquisitionBillingModeReply.setBilling_model_code(accountingStrategyDetail.getId().toString()); acquisitionBillingModeReply.setCharging_pile_code(acquisitionBillingModeMessage.getCharging_pile_code()); acquisitionBillingModeReply.setLoss_ratio(BigDecimal.ZERO); @@ -362,4 +367,32 @@ return R.ok(message); } @ApiOperation(value = "测试",tags = {"硬件接口"}) @GetMapping(value = "/test") public R test() { String orderNum = "2024092646526785213546"; String deviceId = "3401231001200202"; Long orderId = 2024065544L; BigDecimal money = new BigDecimal(50); PlatformStartCharging platformStartCharging = new PlatformStartCharging(); platformStartCharging.setTransaction_serial_number(orderNum); platformStartCharging.setCharging_pile_code(deviceId); platformStartCharging.setCharging_gun_code("02"); platformStartCharging.setCard_number(orderId.toString()); platformStartCharging.setAccount_balance(money); String message = iotMessageProduce.sendMessage(platformStartCharging.getCharging_pile_code(), ServiceIdMenu.PLATFORM_START_CHARGING.getKey(), messageUtil.platformStartCharging(platformStartCharging)); System.err.println(platformStartCharging); return R.ok(message); } @ApiOperation(value = "测试",tags = {"硬件接口"}) @GetMapping(value = "/stop") public R test1() { PlatformStopCharging platformStopCharging = new PlatformStopCharging(); platformStopCharging.setCharging_pile_code("3401231001200202"); platformStopCharging.setCharging_gun_code("02"); String message = iotMessageProduce.sendMessage(platformStopCharging.getCharging_pile_code(), ServiceIdMenu.PLATFORM_STOP_CHARGING.getKey(),messageUtil.platformStopCharging(platformStopCharging)); return R.ok(message); } } ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TAdvertisingController.java
@@ -19,6 +19,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.time.LocalDateTime; import java.util.Arrays; import java.util.List; @@ -76,7 +77,9 @@ public AjaxResult<List<TAdvertising>> list(@RequestParam("position") Integer position) { return AjaxResult.ok(advertisingService.list(Wrappers.lambdaQuery(TAdvertising.class) .eq(TAdvertising::getStatus, AdvertisingStatusEnum.YES.getCode()) .eq(TAdvertising::getPosition,position))); .eq(TAdvertising::getPosition,position) .le(TAdvertising::getStartTime, LocalDateTime.now()) .ge(TAdvertising::getEndTime,LocalDateTime.now()))); } }