DeviceAlgorithmChargingHistoryServiceImpl.java 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. package com.xy.service;
  2. import cn.hutool.core.collection.CollUtil;
  3. import cn.hutool.core.map.MapUtil;
  4. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  5. import com.baomidou.mybatisplus.core.metadata.IPage;
  6. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  7. import com.xy.collections.list.JArrayList;
  8. import com.xy.dto.DeviceAlgorithmChargingHistoryDto;
  9. import com.xy.dto.DeviceInfoDto;
  10. import com.xy.dto.MercFeeConfigDto;
  11. import com.xy.dto.OrderMercManageDto;
  12. import com.xy.dto.be.MercDto;
  13. import com.xy.entity.DeviceAlgorithmChargingHistory;
  14. import com.xy.mapper.DeviceAlgorithmChargingHistoryMapper;
  15. import com.xy.service.be.MercService;
  16. import com.xy.utils.*;
  17. import io.swagger.annotations.Api;
  18. import io.swagger.annotations.ApiOperation;
  19. import lombok.AllArgsConstructor;
  20. import org.springframework.stereotype.Service;
  21. import org.springframework.web.bind.annotation.RequestBody;
  22. import java.util.ArrayList;
  23. import java.util.List;
  24. import java.util.Map;
  25. import java.util.stream.Collectors;
  26. import static com.xy.utils.Beans.copy;
  27. import static com.xy.utils.PlusBeans.toIPage;
  28. import static com.xy.utils.PlusBeans.toPageBean;
  29. /**
  30. * <p>
  31. * 设备算法计费历史表 服务实现类
  32. * </p>
  33. *
  34. * @author lijin
  35. * @since 2023-06-29
  36. */
  37. @Service
  38. @AllArgsConstructor
  39. @Api(tags = "设备算法计费历史表")
  40. public class DeviceAlgorithmChargingHistoryServiceImpl extends ServiceImpl<DeviceAlgorithmChargingHistoryMapper, DeviceAlgorithmChargingHistory> implements DeviceAlgorithmChargingHistoryService {
  41. private OrderMercManageService orderMercManageService;
  42. private MercService mercService;
  43. private DeviceTypeAlgorithmBeforConfigServiceImpl deviceTypeAlgorithmBeforConfigService;
  44. private DeviceInfoService deviceInfoService;
  45. private MercFeeConfigService mercFeeConfigService;
  46. @Override
  47. @ApiOperation("分页查询")
  48. public R<PageBean<DeviceAlgorithmChargingHistoryDto.Vo>> page(@RequestBody DeviceAlgorithmChargingHistoryDto.Page page) {
  49. LambdaQueryWrapper<DeviceAlgorithmChargingHistory> lambdaQueryWrapper = new MybatisPlusQuery().eqWrapper(page, DeviceAlgorithmChargingHistory.class).build();
  50. IPage<DeviceAlgorithmChargingHistory> iPage = page(PlusBeans.toIPage(page.getPage()), lambdaQueryWrapper);
  51. PageBean<DeviceAlgorithmChargingHistoryDto.Vo> pageBean = toPageBean(DeviceAlgorithmChargingHistoryDto.Vo.class, iPage);
  52. List<DeviceAlgorithmChargingHistoryDto.Vo> records = pageBean.getRecords();
  53. if (Emptys.check(records)) {
  54. copy(records).target(
  55. () -> orderMercManageService.list(new OrderMercManageDto.SelectList().setId(new JArrayList<>(records).getProperty(DeviceAlgorithmChargingHistoryDto.Vo::getOrderId))).getData()
  56. , DeviceAlgorithmChargingHistoryDto.Vo::getOrderId, DeviceAlgorithmChargingHistoryDto.Vo::getFiles, OrderMercManageDto.Vo::getId, OrderMercManageDto.Vo::getFiles
  57. ).builder();
  58. }
  59. return R.ok(pageBean);
  60. }
  61. public R<PageBean<DeviceAlgorithmChargingHistoryDto.PageByTopMercVO>> pageByTopMerc(DeviceAlgorithmChargingHistoryDto.PageByTopMerc page) {
  62. Long curMercId = page.getCurMercId();
  63. Long chooseMercId = page.getChooseMercId();
  64. List<Long> mercIds = new ArrayList<>();
  65. if (chooseMercId == null) {
  66. mercIds = R.feignCheckData(mercService.getChildMercIds(new MercDto.QuerySubDTO().setParentMercID(curMercId)));
  67. } else {
  68. // 指定商户ID
  69. mercIds.add(chooseMercId);
  70. }
  71. if (CollUtil.isEmpty(mercIds)) {
  72. return R.ok();
  73. }
  74. PageBean pageBean = page.getPage();
  75. LambdaQueryWrapper<DeviceAlgorithmChargingHistory> lambdaQueryWrapper = new MybatisPlusQuery().eqWrapper(page, DeviceAlgorithmChargingHistory.class)
  76. .ge(DeviceAlgorithmChargingHistory::getCreateTime, page.getBeginCreateTime())
  77. .le(DeviceAlgorithmChargingHistory::getCreateTime, page.getEndCreateTime())
  78. .in(DeviceAlgorithmChargingHistory::getMercId, mercIds)
  79. .build()
  80. .orderByDesc(!Emptys.check(pageBean.getOrders()), DeviceAlgorithmChargingHistory::getCreateTime);
  81. IPage<DeviceAlgorithmChargingHistory> iPage = page(toIPage(pageBean), lambdaQueryWrapper);
  82. PageBean<DeviceAlgorithmChargingHistoryDto.PageByTopMercVO> voPageBean = toPageBean(DeviceAlgorithmChargingHistoryDto.PageByTopMercVO.class, iPage);
  83. List<DeviceAlgorithmChargingHistoryDto.PageByTopMercVO> records = voPageBean.getRecords();
  84. if (Emptys.check(records)) {
  85. // 佣金配置查询
  86. List<MercFeeConfigDto.ListFeeConfigByMercVO> feeConfigByMercVOS = R.feignCheckData(mercFeeConfigService.listFeeConfigByMerc(new MercFeeConfigDto.ListFeeConfigByMercDTO().setMercId(curMercId)));
  87. Map<Long, MercFeeConfigDto.ListFeeConfigByMercVO> configByMercVOMap = MapUtil.newHashMap();
  88. if (CollUtil.isNotEmpty(feeConfigByMercVOS)) {
  89. configByMercVOMap = feeConfigByMercVOS.stream().collect(Collectors.toMap(MercFeeConfigDto.ListFeeConfigByMercVO::getMercId, f -> f));
  90. }
  91. List<Long> deviceIds = records.stream().map(DeviceAlgorithmChargingHistoryDto.PageByTopMercVO::getDeviceId).distinct().collect(Collectors.toList());
  92. List<DeviceInfoDto.Vo> deviceList = R.feignCheckData(deviceInfoService.listCommon(new DeviceInfoDto.ListCommon().setDeviceIds(deviceIds)));
  93. Map<Long, DeviceInfoDto.Vo> devcieMap = deviceList.stream().collect(Collectors.toMap(DeviceInfoDto.Vo::getDeviceId, d -> d));
  94. copy(records)
  95. .target(() -> orderMercManageService.list(new OrderMercManageDto.SelectList().setId(new JArrayList<>(records).getProperty(DeviceAlgorithmChargingHistoryDto.PageByTopMercVO::getOrderId))).getData()
  96. , DeviceAlgorithmChargingHistoryDto.PageByTopMercVO::getOrderId, DeviceAlgorithmChargingHistoryDto.PageByTopMercVO::getFiles, OrderMercManageDto.Vo::getId, OrderMercManageDto.Vo::getFiles
  97. ).target(() -> mercService.list(new MercDto.SelectList().setMercIds(new JArrayList<>(records).getProperty(DeviceAlgorithmChargingHistoryDto.PageByTopMercVO::getMercId).comparing())).getData()
  98. , DeviceAlgorithmChargingHistoryDto.PageByTopMercVO::getMercId, DeviceAlgorithmChargingHistoryDto.PageByTopMercVO::getMercName, MercDto.Vo::getId, MercDto.Vo::getName)
  99. .builder();
  100. for (DeviceAlgorithmChargingHistoryDto.PageByTopMercVO record : records) {
  101. // 初始0 佣金费用
  102. int extraMoney = 0;
  103. Long mercId = record.getMercId();
  104. MercFeeConfigDto.ListFeeConfigByMercVO listFeeConfigByMercVO = configByMercVOMap.get(mercId);
  105. if (listFeeConfigByMercVO != null) {
  106. extraMoney = listFeeConfigByMercVO.getFeeConfig().getFeeActive();
  107. }
  108. record.setAgentMoney(extraMoney);
  109. }
  110. }
  111. return R.ok(voPageBean);
  112. }
  113. /**
  114. * 财务管理-支出管理-设备激活费明细
  115. *
  116. * @param page
  117. * @return
  118. */
  119. public R<PageBean<DeviceAlgorithmChargingHistoryDto.MySpendPageVO>> mySpendPage(DeviceAlgorithmChargingHistoryDto.PageByTopMerc page) {
  120. Long curMercId = page.getCurMercId();
  121. List<Long> mercIds = new ArrayList<>();
  122. // 指定商户ID
  123. mercIds.add(curMercId);
  124. PageBean pageBean = page.getPage();
  125. LambdaQueryWrapper<DeviceAlgorithmChargingHistory> lambdaQueryWrapper = new MybatisPlusQuery().eqWrapper(page, DeviceAlgorithmChargingHistory.class)
  126. .ge(DeviceAlgorithmChargingHistory::getCreateTime, page.getBeginCreateTime())
  127. .le(DeviceAlgorithmChargingHistory::getCreateTime, page.getEndCreateTime())
  128. .in(DeviceAlgorithmChargingHistory::getMercId, mercIds)
  129. .build()
  130. .orderByDesc(!Emptys.check(pageBean.getOrders()), DeviceAlgorithmChargingHistory::getCreateTime);
  131. IPage<DeviceAlgorithmChargingHistory> iPage = page(toIPage(pageBean), lambdaQueryWrapper);
  132. PageBean<DeviceAlgorithmChargingHistoryDto.MySpendPageVO> voPageBean = toPageBean(DeviceAlgorithmChargingHistoryDto.MySpendPageVO.class, iPage);
  133. List<DeviceAlgorithmChargingHistoryDto.MySpendPageVO> records = voPageBean.getRecords();
  134. if (Emptys.check(records)) {
  135. List<Long> deviceIds = records.stream().map(DeviceAlgorithmChargingHistoryDto.MySpendPageVO::getDeviceId).distinct().collect(Collectors.toList());
  136. List<DeviceInfoDto.Vo> deviceList = R.feignCheckData(deviceInfoService.listCommon(new DeviceInfoDto.ListCommon().setDeviceIds(deviceIds)));
  137. Map<Long, DeviceInfoDto.Vo> devcieMap = deviceList.stream().collect(Collectors.toMap(DeviceInfoDto.Vo::getDeviceId, d -> d));
  138. copy(records)
  139. .target(() -> orderMercManageService.list(new OrderMercManageDto.SelectList().setId(new JArrayList<>(records).getProperty(DeviceAlgorithmChargingHistoryDto.MySpendPageVO::getOrderId))).getData()
  140. , DeviceAlgorithmChargingHistoryDto.MySpendPageVO::getOrderId, DeviceAlgorithmChargingHistoryDto.MySpendPageVO::getFiles, OrderMercManageDto.Vo::getId, OrderMercManageDto.Vo::getFiles
  141. ).target(() -> mercService.list(new MercDto.SelectList().setMercIds(new JArrayList<>(records).getProperty(DeviceAlgorithmChargingHistoryDto.MySpendPageVO::getMercId).comparing())).getData()
  142. , DeviceAlgorithmChargingHistoryDto.MySpendPageVO::getMercId, DeviceAlgorithmChargingHistoryDto.MySpendPageVO::getMercName, MercDto.Vo::getId, MercDto.Vo::getName)
  143. .builder();
  144. }
  145. return R.ok(voPageBean);
  146. }
  147. }