|
@@ -1,5 +1,7 @@
|
|
|
package com.xy.service;
|
|
|
|
|
|
+import cn.hutool.core.collection.CollUtil;
|
|
|
+import cn.hutool.core.map.MapUtil;
|
|
|
import com.alibaba.excel.annotation.ExcelProperty;
|
|
|
import com.alibaba.excel.annotation.write.style.ColumnWidth;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
@@ -11,7 +13,9 @@ import com.xy.collections.list.JArrayList;
|
|
|
import com.xy.collections.list.JList;
|
|
|
import com.xy.config.DeviceThreadPoolConfig;
|
|
|
import com.xy.config.FileConfig;
|
|
|
+import com.xy.dto.DeviceChargingConfigDto;
|
|
|
import com.xy.dto.DeviceChargingHistoryDto;
|
|
|
+import com.xy.dto.DeviceInfoDto;
|
|
|
import com.xy.dto.OrderMercManageDto;
|
|
|
import com.xy.dto.be.MercDto;
|
|
|
import com.xy.entity.DeviceChargingHistory;
|
|
@@ -38,6 +42,8 @@ import java.time.temporal.ChronoUnit;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Arrays;
|
|
|
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;
|
|
@@ -64,6 +70,10 @@ public class DeviceChargingHistoryServiceImpl extends ServiceImpl<DeviceCharging
|
|
|
|
|
|
private FileConfig fileConfig;
|
|
|
|
|
|
+ private DeviceChargingConfigServiceImpl deviceChargingConfigService;
|
|
|
+
|
|
|
+ private DeviceInfoService deviceInfoService;
|
|
|
+
|
|
|
@Override
|
|
|
@ApiOperation("分页查询")
|
|
|
public R<PageBean<DeviceChargingHistoryDto.Vo>> page(DeviceChargingHistoryDto.Page page) {
|
|
@@ -87,6 +97,66 @@ public class DeviceChargingHistoryServiceImpl extends ServiceImpl<DeviceCharging
|
|
|
return R.ok(pageBean);
|
|
|
}
|
|
|
|
|
|
+ public R<PageBean<DeviceChargingHistoryDto.PageVo>> pageByTopMerc(DeviceChargingHistoryDto.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);
|
|
|
+ }
|
|
|
+
|
|
|
+ DeviceChargingConfigDto.DeviceManagerFeeConfigVO deviceManagerFeeConfigVO = R.feignCheckData(deviceChargingConfigService.listByFeeConfig(new DeviceChargingConfigDto.ListByFeeConfigDTO().setMercId(curMercId)));
|
|
|
+ List<DeviceChargingConfigDto.DeviceManagerFeeMercVO> dmFeeMercs = deviceManagerFeeConfigVO.getDmFeeMercs();
|
|
|
+ Map<Integer, DeviceChargingConfigDto.DeviceManagerFeeMercVO> dfmMap = MapUtil.newHashMap();
|
|
|
+ if (CollUtil.isNotEmpty(dmFeeMercs)) {
|
|
|
+ dfmMap = dmFeeMercs.stream().collect(Collectors.toMap(DeviceChargingConfigDto.DeviceManagerFeeMercVO::getDeviceType, dfm -> dfm));
|
|
|
+ }
|
|
|
+ LambdaQueryWrapper<DeviceChargingHistory> lambdaQueryWrapper = new MybatisPlusQuery().eqWrapper(page, DeviceChargingHistory.class)
|
|
|
+ .ge(DeviceChargingHistory::getCreateTime, page.getBeginCreateTime())
|
|
|
+ .le(DeviceChargingHistory::getCreateTime, page.getEndCreateTime())
|
|
|
+ .in(DeviceChargingHistory::getMercId, mercIds)
|
|
|
+ .build()
|
|
|
+ .orderByDesc(DeviceChargingHistory::getCreateTime);
|
|
|
+ IPage<DeviceChargingHistory> iPage = page(PlusBeans.toIPage(page.getPage()), lambdaQueryWrapper);
|
|
|
+ PageBean<DeviceChargingHistoryDto.PageVo> pageBean = toPageBean(DeviceChargingHistoryDto.PageVo.class, iPage);
|
|
|
+ List<DeviceChargingHistoryDto.PageVo> records = pageBean.getRecords();
|
|
|
+ if (Emptys.check(records)) {
|
|
|
+ copy(records)
|
|
|
+ .target(() -> orderMercManageService.list(new OrderMercManageDto.SelectList().setId(new JArrayList<>(records).getProperty(DeviceChargingHistoryDto.PageVo::getOrderId))).getData()
|
|
|
+ , DeviceChargingHistoryDto.PageVo::getOrderId, DeviceChargingHistoryDto.PageVo::getFiles, OrderMercManageDto.Vo::getId, OrderMercManageDto.Vo::getFiles
|
|
|
+ )
|
|
|
+ .target(() -> mercService.list(new MercDto.SelectList().setMercIds(new JArrayList<>(records).getProperty(DeviceChargingHistoryDto.PageVo::getMercId).comparing())).getData(),
|
|
|
+ DeviceChargingHistoryDto.PageVo::getMercId, DeviceChargingHistoryDto.PageVo::getMercName, MercDto.Vo::getId, MercDto.Vo::getName)
|
|
|
+ .builder();
|
|
|
+ List<Long> deviceIds = records.stream().map(DeviceChargingHistoryDto.PageVo::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));
|
|
|
+ for (DeviceChargingHistoryDto.PageVo record : records) {
|
|
|
+ Long deviceId = record.getDeviceId();
|
|
|
+ //初始0 代理商费用
|
|
|
+ record.setAgentMoney(0);
|
|
|
+ DeviceInfoDto.Vo device = devcieMap.get(deviceId);
|
|
|
+ if (device != null) {
|
|
|
+ Integer deviceType = device.getDeviceType();
|
|
|
+ if (!dfmMap.isEmpty() && dfmMap.get(deviceType) != null) {
|
|
|
+ DeviceChargingConfigDto.DeviceManagerFeeMercVO deviceManagerFeeMercVO = dfmMap.get(deviceType);
|
|
|
+ Integer extraMoney = deviceManagerFeeMercVO.getExtraMoney();
|
|
|
+ //反显代理商金额
|
|
|
+ record.setAgentMoney(extraMoney);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ pageBean.setRecords(records);
|
|
|
+
|
|
|
+ }
|
|
|
+ return R.ok(pageBean);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
@ApiOperation("月统计分页")
|
|
|
@PostMapping("moonCountPage")
|
|
|
public R<PageBean<DeviceChargingHistoryDto.MoonCountVo>> moonCountPage(@RequestBody DeviceChargingHistoryDto.MoonCountPage moonCountPage) {
|
|
@@ -121,7 +191,7 @@ public class DeviceChargingHistoryServiceImpl extends ServiceImpl<DeviceCharging
|
|
|
});
|
|
|
//翻译商户名称
|
|
|
Beans.copy(moonCountVos).target(() -> mercService.list(new MercDto.SelectList().setMercIds(moonCountVos.getProperty(DeviceChargingHistoryDto.MoonCountVo::getMercId).comparing())).getData(),
|
|
|
- DeviceChargingHistoryDto.MoonCountVo::getMercId, DeviceChargingHistoryDto.MoonCountVo::getMercName, MercDto.Vo::getId, MercDto.Vo::getName)
|
|
|
+ DeviceChargingHistoryDto.MoonCountVo::getMercId, DeviceChargingHistoryDto.MoonCountVo::getMercName, MercDto.Vo::getId, MercDto.Vo::getName)
|
|
|
.builder();
|
|
|
PageBean<DeviceChargingHistoryDto.MoonCountVo> pageBean = new PageBean<DeviceChargingHistoryDto.MoonCountVo>()
|
|
|
.setCurrent(iPage.getCurrent())
|
|
@@ -167,7 +237,7 @@ public class DeviceChargingHistoryServiceImpl extends ServiceImpl<DeviceCharging
|
|
|
execute.end();
|
|
|
//翻译商户名称
|
|
|
Beans.copy(moonCountVos).target(() -> mercService.list(new MercDto.SelectList().setMercIds(moonCountVos.getProperty(DeviceChargingHistoryDto.MoonCountVo::getMercId).comparing())).getData(),
|
|
|
- DeviceChargingHistoryDto.MoonCountVo::getMercId, DeviceChargingHistoryDto.MoonCountVo::getMercName, MercDto.Vo::getId, MercDto.Vo::getName)
|
|
|
+ DeviceChargingHistoryDto.MoonCountVo::getMercId, DeviceChargingHistoryDto.MoonCountVo::getMercName, MercDto.Vo::getId, MercDto.Vo::getName)
|
|
|
.builder();
|
|
|
return R.ok(moonCountVos.desc(DeviceChargingHistoryDto.MoonCountVo::getDate));
|
|
|
}
|
|
@@ -243,4 +313,4 @@ public class DeviceChargingHistoryServiceImpl extends ServiceImpl<DeviceCharging
|
|
|
@ExcelProperty(value = "续费金额")
|
|
|
private Integer chargingMoney;
|
|
|
}
|
|
|
-}
|
|
|
+}
|