package com.xy.service; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.xy.dto.DeviceChargingDto; import com.xy.dto.DeviceChargingHistoryDto; import com.xy.dto.DeviceInfoDto; import com.xy.entity.DeviceCharging; import com.xy.entity.DeviceChargingHistory; import com.xy.entity.SysDictRedis; import com.xy.job.DeviceChargingJob; import com.xy.mapper.DeviceChargingMapper; import com.xy.utils.*; import com.xy.utils.enums.DictEnum; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import java.util.List; import java.util.Map; import static com.xy.utils.PlusBeans.*; /** *

* 设备计费表 服务实现类 *

* * @author lijin * @since 2023-04-14 */ @Service @Api(tags = "设备计费表") @AllArgsConstructor(onConstructor_ = @Lazy) public class DeviceChargingServiceImpl extends ServiceImpl implements DeviceChargingService { private DeviceChargingJob deviceChargingJob; private DeviceChargingHistoryServiceImpl deviceChargingHistoryService; @PostMapping("charging") @ApiOperation("手动计费") public R charging(@RequestBody @Validated DeviceChargingDto.Charging charging) { List deviceIds = charging.getDeviceIds(); deviceChargingJob.deviceCharging(1, deviceIds.size(), deviceIds); return R.ok(); } @PostMapping("page") @ApiOperation("分页查询") public R> page(@RequestBody DeviceChargingDto.Page page) { IPage iPage = baseMapper.page(toIPage(page.getPage()), page); List records = iPage.getRecords(); if (Emptys.check(records)) { Map stringSysDictRedisMap = SysDictUtils.get(DictEnum.DEVICE_CHARGING.getKey()); for (DeviceChargingDto.PageVo record : records) { DeviceInfoDto.Vo deviceInfo = record.getDeviceInfo(); //封装最新计费历史信息 LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper() .eq(DeviceChargingHistory::getDeviceId, deviceInfo.getDeviceId()) .orderByDesc(DeviceChargingHistory::getCreateTime) .last("limit 1"); DeviceChargingHistory deviceChargingHistory = deviceChargingHistoryService.getOne(lambdaQueryWrapper); if (deviceChargingHistory != null) { record.setDeviceChargingHistory(copy(DeviceChargingHistoryDto.Vo.class, deviceChargingHistory)); } //封装计费标准金额 SysDictRedis sysDictRedis = stringSysDictRedisMap.get(deviceInfo.getDeviceType().toString()); if (sysDictRedis != null) { record.setChargingMoney(Integer.valueOf(sysDictRedis.getValue())); } //封装缴费状态 DeviceChargingDto.Vo deviceCharging = record.getDeviceCharging(); if (deviceCharging != null) { int contrast = DataTime.stringContrast(DataTime.toString(page.getThisTime()), DataTime.toString(deviceCharging.getTimeout())); record.setChargingStatus(contrast < 0); } } } return R.ok(toPageBean(iPage)); } }