package com.xy.service; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.map.MapUtil; 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.collections.list.JArrayList; import com.xy.dto.DeviceAlgorithmChargingHistoryDto; import com.xy.dto.DeviceInfoDto; import com.xy.dto.MercFeeConfigDto; import com.xy.dto.OrderMercManageDto; import com.xy.dto.be.MercDto; import com.xy.entity.DeviceAlgorithmChargingHistory; import com.xy.mapper.DeviceAlgorithmChargingHistoryMapper; import com.xy.service.be.MercService; import com.xy.utils.*; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.web.bind.annotation.RequestBody; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.stream.Collectors; import static com.xy.utils.Beans.copy; import static com.xy.utils.PlusBeans.toIPage; import static com.xy.utils.PlusBeans.toPageBean; /** *

* 设备算法计费历史表 服务实现类 *

* * @author lijin * @since 2023-06-29 */ @Service @AllArgsConstructor @Api(tags = "设备算法计费历史表") public class DeviceAlgorithmChargingHistoryServiceImpl extends ServiceImpl implements DeviceAlgorithmChargingHistoryService { private OrderMercManageService orderMercManageService; private MercService mercService; private DeviceTypeAlgorithmBeforConfigServiceImpl deviceTypeAlgorithmBeforConfigService; private DeviceInfoService deviceInfoService; private MercFeeConfigService mercFeeConfigService; @Override @ApiOperation("分页查询") public R> page(@RequestBody DeviceAlgorithmChargingHistoryDto.Page page) { LambdaQueryWrapper lambdaQueryWrapper = new MybatisPlusQuery().eqWrapper(page, DeviceAlgorithmChargingHistory.class).build(); IPage iPage = page(PlusBeans.toIPage(page.getPage()), lambdaQueryWrapper); PageBean pageBean = toPageBean(DeviceAlgorithmChargingHistoryDto.Vo.class, iPage); List records = pageBean.getRecords(); if (Emptys.check(records)) { copy(records).target( () -> orderMercManageService.list(new OrderMercManageDto.SelectList().setId(new JArrayList<>(records).getProperty(DeviceAlgorithmChargingHistoryDto.Vo::getOrderId))).getData() , DeviceAlgorithmChargingHistoryDto.Vo::getOrderId, DeviceAlgorithmChargingHistoryDto.Vo::getFiles, OrderMercManageDto.Vo::getId, OrderMercManageDto.Vo::getFiles ).builder(); } return R.ok(pageBean); } public R> pageByTopMerc(DeviceAlgorithmChargingHistoryDto.PageByTopMerc page) { Long curMercId = page.getCurMercId(); Long chooseMercId = page.getChooseMercId(); List mercIds = new ArrayList<>(); if (chooseMercId == null) { mercIds = R.feignCheckData(mercService.getChildMercIds(new MercDto.QuerySubDTO().setParentMercID(curMercId))); } else { // 指定商户ID mercIds.add(chooseMercId); } if (CollUtil.isEmpty(mercIds)) { return R.ok(); } PageBean pageBean = page.getPage(); LambdaQueryWrapper lambdaQueryWrapper = new MybatisPlusQuery().eqWrapper(page, DeviceAlgorithmChargingHistory.class) .ge(DeviceAlgorithmChargingHistory::getCreateTime, page.getBeginCreateTime()) .le(DeviceAlgorithmChargingHistory::getCreateTime, page.getEndCreateTime()) .in(DeviceAlgorithmChargingHistory::getMercId, mercIds) .build() .orderByDesc(!Emptys.check(pageBean.getOrders()), DeviceAlgorithmChargingHistory::getCreateTime); IPage iPage = page(toIPage(pageBean), lambdaQueryWrapper); PageBean voPageBean = toPageBean(DeviceAlgorithmChargingHistoryDto.PageByTopMercVO.class, iPage); List records = voPageBean.getRecords(); if (Emptys.check(records)) { // 佣金配置查询 List feeConfigByMercVOS = R.feignCheckData(mercFeeConfigService.listFeeConfigByMerc(new MercFeeConfigDto.ListFeeConfigByMercDTO().setMercId(curMercId))); Map configByMercVOMap = MapUtil.newHashMap(); if (CollUtil.isNotEmpty(feeConfigByMercVOS)) { configByMercVOMap = feeConfigByMercVOS.stream().collect(Collectors.toMap(MercFeeConfigDto.ListFeeConfigByMercVO::getMercId, f -> f)); } List deviceIds = records.stream().map(DeviceAlgorithmChargingHistoryDto.PageByTopMercVO::getDeviceId).distinct().collect(Collectors.toList()); List deviceList = R.feignCheckData(deviceInfoService.listCommon(new DeviceInfoDto.ListCommon().setDeviceIds(deviceIds))); Map devcieMap = deviceList.stream().collect(Collectors.toMap(DeviceInfoDto.Vo::getDeviceId, d -> d)); copy(records) .target(() -> orderMercManageService.list(new OrderMercManageDto.SelectList().setId(new JArrayList<>(records).getProperty(DeviceAlgorithmChargingHistoryDto.PageByTopMercVO::getOrderId))).getData() , DeviceAlgorithmChargingHistoryDto.PageByTopMercVO::getOrderId, DeviceAlgorithmChargingHistoryDto.PageByTopMercVO::getFiles, OrderMercManageDto.Vo::getId, OrderMercManageDto.Vo::getFiles ).target(() -> mercService.list(new MercDto.SelectList().setMercIds(new JArrayList<>(records).getProperty(DeviceAlgorithmChargingHistoryDto.PageByTopMercVO::getMercId).comparing())).getData() , DeviceAlgorithmChargingHistoryDto.PageByTopMercVO::getMercId, DeviceAlgorithmChargingHistoryDto.PageByTopMercVO::getMercName, MercDto.Vo::getId, MercDto.Vo::getName) .builder(); for (DeviceAlgorithmChargingHistoryDto.PageByTopMercVO record : records) { // 初始0 佣金费用 int extraMoney = 0; Long mercId = record.getMercId(); MercFeeConfigDto.ListFeeConfigByMercVO listFeeConfigByMercVO = configByMercVOMap.get(mercId); if (listFeeConfigByMercVO != null) { extraMoney = listFeeConfigByMercVO.getFeeConfig().getFeeActive(); } record.setAgentMoney(extraMoney); } } return R.ok(voPageBean); } /** * 财务管理-支出管理-设备激活费明细 * * @param page * @return */ public R> mySpendPage(DeviceAlgorithmChargingHistoryDto.PageByTopMerc page) { Long curMercId = page.getCurMercId(); List mercIds = new ArrayList<>(); // 指定商户ID mercIds.add(curMercId); PageBean pageBean = page.getPage(); LambdaQueryWrapper lambdaQueryWrapper = new MybatisPlusQuery().eqWrapper(page, DeviceAlgorithmChargingHistory.class) .ge(DeviceAlgorithmChargingHistory::getCreateTime, page.getBeginCreateTime()) .le(DeviceAlgorithmChargingHistory::getCreateTime, page.getEndCreateTime()) .in(DeviceAlgorithmChargingHistory::getMercId, mercIds) .build() .orderByDesc(!Emptys.check(pageBean.getOrders()), DeviceAlgorithmChargingHistory::getCreateTime); IPage iPage = page(toIPage(pageBean), lambdaQueryWrapper); PageBean voPageBean = toPageBean(DeviceAlgorithmChargingHistoryDto.MySpendPageVO.class, iPage); List records = voPageBean.getRecords(); if (Emptys.check(records)) { List deviceIds = records.stream().map(DeviceAlgorithmChargingHistoryDto.MySpendPageVO::getDeviceId).distinct().collect(Collectors.toList()); List deviceList = R.feignCheckData(deviceInfoService.listCommon(new DeviceInfoDto.ListCommon().setDeviceIds(deviceIds))); Map devcieMap = deviceList.stream().collect(Collectors.toMap(DeviceInfoDto.Vo::getDeviceId, d -> d)); copy(records) .target(() -> orderMercManageService.list(new OrderMercManageDto.SelectList().setId(new JArrayList<>(records).getProperty(DeviceAlgorithmChargingHistoryDto.MySpendPageVO::getOrderId))).getData() , DeviceAlgorithmChargingHistoryDto.MySpendPageVO::getOrderId, DeviceAlgorithmChargingHistoryDto.MySpendPageVO::getFiles, OrderMercManageDto.Vo::getId, OrderMercManageDto.Vo::getFiles ).target(() -> mercService.list(new MercDto.SelectList().setMercIds(new JArrayList<>(records).getProperty(DeviceAlgorithmChargingHistoryDto.MySpendPageVO::getMercId).comparing())).getData() , DeviceAlgorithmChargingHistoryDto.MySpendPageVO::getMercId, DeviceAlgorithmChargingHistoryDto.MySpendPageVO::getMercName, MercDto.Vo::getId, MercDto.Vo::getName) .builder(); } return R.ok(voPageBean); } }