DeviceChargingServiceImpl.java 3.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. package com.xy.service;
  2. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  3. import com.baomidou.mybatisplus.core.metadata.IPage;
  4. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  5. import com.xy.dto.DeviceChargingDto;
  6. import com.xy.dto.DeviceChargingHistoryDto;
  7. import com.xy.dto.DeviceInfoDto;
  8. import com.xy.entity.DeviceCharging;
  9. import com.xy.entity.DeviceChargingHistory;
  10. import com.xy.entity.SysDictRedis;
  11. import com.xy.job.DeviceChargingJob;
  12. import com.xy.mapper.DeviceChargingMapper;
  13. import com.xy.utils.*;
  14. import com.xy.utils.enums.DictEnum;
  15. import io.swagger.annotations.Api;
  16. import io.swagger.annotations.ApiOperation;
  17. import lombok.AllArgsConstructor;
  18. import org.springframework.context.annotation.Lazy;
  19. import org.springframework.stereotype.Service;
  20. import org.springframework.validation.annotation.Validated;
  21. import org.springframework.web.bind.annotation.PostMapping;
  22. import org.springframework.web.bind.annotation.RequestBody;
  23. import java.util.List;
  24. import java.util.Map;
  25. import static com.xy.utils.PlusBeans.*;
  26. /**
  27. * <p>
  28. * 设备计费表 服务实现类
  29. * </p>
  30. *
  31. * @author lijin
  32. * @since 2023-04-14
  33. */
  34. @Service
  35. @Api(tags = "设备计费表")
  36. @AllArgsConstructor(onConstructor_ = @Lazy)
  37. public class DeviceChargingServiceImpl extends ServiceImpl<DeviceChargingMapper, DeviceCharging> implements DeviceChargingService {
  38. private DeviceChargingJob deviceChargingJob;
  39. private DeviceChargingHistoryServiceImpl deviceChargingHistoryService;
  40. @PostMapping("charging")
  41. @ApiOperation("手动计费")
  42. public R charging(@RequestBody @Validated DeviceChargingDto.Charging charging) {
  43. List<Long> deviceIds = charging.getDeviceIds();
  44. deviceChargingJob.deviceCharging(1, deviceIds.size(), deviceIds);
  45. return R.ok();
  46. }
  47. @PostMapping("page")
  48. @ApiOperation("分页查询")
  49. public R<PageBean<DeviceChargingDto.PageVo>> page(@RequestBody DeviceChargingDto.Page page) {
  50. IPage<DeviceChargingDto.PageVo> iPage = baseMapper.page(toIPage(page.getPage()), page);
  51. List<DeviceChargingDto.PageVo> records = iPage.getRecords();
  52. if (Emptys.check(records)) {
  53. Map<String, SysDictRedis> stringSysDictRedisMap = SysDictUtils.get(DictEnum.DEVICE_CHARGING.getKey());
  54. for (DeviceChargingDto.PageVo record : records) {
  55. DeviceInfoDto.Vo deviceInfo = record.getDeviceInfo();
  56. //封装最新计费历史信息
  57. LambdaQueryWrapper<DeviceChargingHistory> lambdaQueryWrapper = new LambdaQueryWrapper<DeviceChargingHistory>()
  58. .eq(DeviceChargingHistory::getDeviceId, deviceInfo.getDeviceId())
  59. .orderByDesc(DeviceChargingHistory::getCreateTime)
  60. .last("limit 1");
  61. DeviceChargingHistory deviceChargingHistory = deviceChargingHistoryService.getOne(lambdaQueryWrapper);
  62. if (deviceChargingHistory != null) {
  63. record.setDeviceChargingHistory(copy(DeviceChargingHistoryDto.Vo.class, deviceChargingHistory));
  64. }
  65. //封装计费标准金额
  66. SysDictRedis sysDictRedis = stringSysDictRedisMap.get(deviceInfo.getDeviceType().toString());
  67. if (sysDictRedis != null) {
  68. record.setChargingMoney(Integer.valueOf(sysDictRedis.getValue()));
  69. }
  70. //封装缴费状态
  71. DeviceChargingDto.Vo deviceCharging = record.getDeviceCharging();
  72. if (deviceCharging != null) {
  73. int contrast = DataTime.stringContrast(DataTime.toString(page.getThisTime()), DataTime.toString(deviceCharging.getTimeout()));
  74. record.setChargingStatus(contrast < 0);
  75. }
  76. }
  77. }
  78. return R.ok(toPageBean(iPage));
  79. }
  80. }