|
@@ -1,13 +1,17 @@
|
|
package com.xy.service;
|
|
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.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.xy.collections.list.JArrayList;
|
|
import com.xy.collections.list.JArrayList;
|
|
-import com.xy.dto.DeviceAlgorithmChargingHistoryDto;
|
|
|
|
-import com.xy.dto.OrderMercManageDto;
|
|
|
|
|
|
+import com.xy.dto.*;
|
|
|
|
+import com.xy.dto.be.MercDto;
|
|
import com.xy.entity.DeviceAlgorithmChargingHistory;
|
|
import com.xy.entity.DeviceAlgorithmChargingHistory;
|
|
|
|
+import com.xy.entity.DeviceSimCharge;
|
|
import com.xy.mapper.DeviceAlgorithmChargingHistoryMapper;
|
|
import com.xy.mapper.DeviceAlgorithmChargingHistoryMapper;
|
|
|
|
+import com.xy.service.be.MercService;
|
|
import com.xy.utils.*;
|
|
import com.xy.utils.*;
|
|
import io.swagger.annotations.Api;
|
|
import io.swagger.annotations.Api;
|
|
import io.swagger.annotations.ApiOperation;
|
|
import io.swagger.annotations.ApiOperation;
|
|
@@ -15,9 +19,13 @@ import lombok.AllArgsConstructor;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.web.bind.annotation.RequestBody;
|
|
import org.springframework.web.bind.annotation.RequestBody;
|
|
|
|
|
|
|
|
+import java.util.ArrayList;
|
|
import java.util.List;
|
|
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.Beans.copy;
|
|
|
|
+import static com.xy.utils.PlusBeans.toIPage;
|
|
import static com.xy.utils.PlusBeans.toPageBean;
|
|
import static com.xy.utils.PlusBeans.toPageBean;
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -34,6 +42,9 @@ import static com.xy.utils.PlusBeans.toPageBean;
|
|
public class DeviceAlgorithmChargingHistoryServiceImpl extends ServiceImpl<DeviceAlgorithmChargingHistoryMapper, DeviceAlgorithmChargingHistory> implements DeviceAlgorithmChargingHistoryService {
|
|
public class DeviceAlgorithmChargingHistoryServiceImpl extends ServiceImpl<DeviceAlgorithmChargingHistoryMapper, DeviceAlgorithmChargingHistory> implements DeviceAlgorithmChargingHistoryService {
|
|
|
|
|
|
private OrderMercManageService orderMercManageService;
|
|
private OrderMercManageService orderMercManageService;
|
|
|
|
+ private MercService mercService;
|
|
|
|
+ private DeviceTypeAlgorithmBeforConfigServiceImpl deviceTypeAlgorithmBeforConfigService;
|
|
|
|
+ private DeviceInfoService deviceInfoService;
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@ApiOperation("分页查询")
|
|
@ApiOperation("分页查询")
|
|
@@ -50,4 +61,78 @@ public class DeviceAlgorithmChargingHistoryServiceImpl extends ServiceImpl<Devic
|
|
}
|
|
}
|
|
return R.ok(pageBean);
|
|
return R.ok(pageBean);
|
|
}
|
|
}
|
|
-}
|
|
|
|
|
|
+
|
|
|
|
+ public R<PageBean<DeviceAlgorithmChargingHistoryDto.PageByTopMercVO>> pageByTopMerc(DeviceAlgorithmChargingHistoryDto.PageByTopMerc page) {
|
|
|
|
+ Long curMercId = page.getCurMercId();
|
|
|
|
+ Long chooseMercId = page.getChooseMercId();
|
|
|
|
+ List<Long> mercIds = new ArrayList<>();
|
|
|
|
+ if (chooseMercId == null) {
|
|
|
|
+ mercIds = R.feignCheckData(mercService.getAllSubMercIds(new MercDto.QuerySubDTO().setParentMercID(curMercId)));
|
|
|
|
+ } else {
|
|
|
|
+ //指定商户ID
|
|
|
|
+ mercIds.add(chooseMercId);
|
|
|
|
+ }
|
|
|
|
+ PageBean pageBean = page.getPage();
|
|
|
|
+ LambdaQueryWrapper<DeviceAlgorithmChargingHistory> 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<DeviceAlgorithmChargingHistory> iPage = page(toIPage(pageBean), lambdaQueryWrapper);
|
|
|
|
+ PageBean<DeviceAlgorithmChargingHistoryDto.PageByTopMercVO> voPageBean = toPageBean(DeviceAlgorithmChargingHistoryDto.PageByTopMercVO.class, iPage);
|
|
|
|
+ List<DeviceAlgorithmChargingHistoryDto.PageByTopMercVO> records = voPageBean.getRecords();
|
|
|
|
+ if (Emptys.check(records)) {
|
|
|
|
+ DeviceTypeAlgorithmBeforConfigDto.DeviceActiveFeeVO deviceActiveFeeVO = R.feignCheckData(deviceTypeAlgorithmBeforConfigService.deviceActiveFeeList(new DeviceTypeAlgorithmBeforConfigDto.DeviceActiveFeeDTO().setMercId(curMercId)
|
|
|
|
+ ));
|
|
|
|
+ List<DeviceTypeAlgorithmBeforConfigDto.DeviceActiveMercFeeVO> deviceActiveMercFees = deviceActiveFeeVO.getDeviceActiveMercFees();
|
|
|
|
+ Map<String, DeviceTypeAlgorithmBeforConfigDto.DeviceActiveMercFeeVO> dafMap = MapUtil.newHashMap();
|
|
|
|
+ if (CollUtil.isNotEmpty(deviceActiveMercFees)) {
|
|
|
|
+ for (DeviceTypeAlgorithmBeforConfigDto.DeviceActiveMercFeeVO daf : deviceActiveMercFees) {
|
|
|
|
+ Long algorithmId = daf.getAlgorithmId();
|
|
|
|
+ Integer deviceType = daf.getDeviceType();
|
|
|
|
+ String key = algorithmId + String.valueOf(deviceType);
|
|
|
|
+ DeviceTypeAlgorithmBeforConfigDto.DeviceActiveMercFeeVO deviceActiveMercFeeVO = dafMap.get(key);
|
|
|
|
+ if (deviceActiveMercFeeVO == null) {
|
|
|
|
+ dafMap.put(key, daf);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ List<Long> deviceIds = records.stream().map(DeviceAlgorithmChargingHistoryDto.PageByTopMercVO::getDeviceId).distinct().collect(Collectors.toList());
|
|
|
|
+
|
|
|
|
+ List<DeviceInfoDto.Vo> deviceList = R.feignCheckData(deviceInfoService.listCommon(new DeviceInfoDto.ListCommon().setDeviceIds(deviceIds)));
|
|
|
|
+ Map<Long, DeviceInfoDto.Vo> 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;
|
|
|
|
+ record.setAgentMoney(extraMoney);
|
|
|
|
+ Long algorithmId = record.getAlgorithmId();
|
|
|
|
+ Long deviceId = record.getDeviceId();
|
|
|
|
+ DeviceInfoDto.Vo device = devcieMap.get(deviceId);
|
|
|
|
+ if (device != null) {
|
|
|
|
+ String key = algorithmId + String.valueOf(device.getDeviceType());
|
|
|
|
+ DeviceTypeAlgorithmBeforConfigDto.DeviceActiveMercFeeVO deviceActiveMercFeeVO = dafMap.get(key);
|
|
|
|
+ if (deviceActiveMercFeeVO != null) {
|
|
|
|
+ extraMoney = deviceActiveMercFeeVO.getExtraMoney();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ Integer money = record.getChargingMoney();
|
|
|
|
+ //反显代理商金额
|
|
|
|
+ if (money != null && extraMoney > money) {
|
|
|
|
+ //扩展金额比实缴金额还大?
|
|
|
|
+ extraMoney = 0;
|
|
|
|
+ }
|
|
|
|
+ record.setAgentMoney(extraMoney);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return R.ok(voPageBean);
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+}
|