diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardOrderDto.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardOrderDto.java index ddde43b92..dee26ad8f 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardOrderDto.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardOrderDto.java @@ -14,8 +14,11 @@ public class HardOrderDto extends HardOrderEntity { * 订单部门id极其子部门id */ private Long deptIdIdDeepen; + private List deptIds; + private Boolean isDeepDept = false; + private List userIds; private List userDeptIds; diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/order/HardDeptTotalVo.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/order/HardDeptTotalVo.java index 6503c1efa..dd80811d8 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/order/HardDeptTotalVo.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/order/HardDeptTotalVo.java @@ -12,12 +12,30 @@ public class HardDeptTotalVo { @Schema(description = "部门名") private String deptName; - @Schema(description = "充值金额") + @Schema(description = "批量充值金额") private Long walletPrice = 0L; - @Schema(description = "充值次数") + @Schema(description = "批量充值次数") private Long walletCount = 0L; + @Schema(description = "批量扣减金额") + private Long walletReducePrice = 0L; + + @Schema(description = "批量扣减次数") + private Long walletReduceCount = 0L; + + @Schema(description = "单次充值金额") + private Long walletOncePrice = 0L; + + @Schema(description = "单次充值次数") + private Long walletOnceCount = 0L; + + @Schema(description = "单次扣减金额") + private Long walletOnceReducePrice = 0L; + + @Schema(description = "单次扣减次数") + private Long walletOnceReduceCount = 0L; + @Schema(description = "消费金额") private Long orderPayPrice = 0L; diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardOrderController.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardOrderController.java index 475432689..1aade24a8 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardOrderController.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardOrderController.java @@ -3,7 +3,6 @@ package com.bsd.pjcloud.hard.controller.order; import cn.hutool.core.date.DatePattern; import cn.hutool.core.date.LocalDateTimeUtil; import cn.hutool.core.io.resource.ResourceUtil; -import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.excel.EasyExcel; diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderTotalServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderTotalServiceImpl.java index 78adec755..c98ffd0ba 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderTotalServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderTotalServiceImpl.java @@ -5,7 +5,6 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.bsd.pjcloud.admin.api.entity.SysDept; import com.bsd.pjcloud.admin.api.feign.RemoteDeptService; -import com.bsd.pjcloud.common.core.util.BeanUtils; import com.bsd.pjcloud.common.core.util.CollectionUtils; import com.bsd.pjcloud.hard.api.constant.order.HardOrderStatusEnum; import com.bsd.pjcloud.hard.api.dto.HardManagerDto; @@ -21,6 +20,7 @@ import com.bsd.pjcloud.hard.api.vo.order.HardOrderSumAndCountVo; import com.bsd.pjcloud.hard.mapper.HardManagerMapper; import com.bsd.pjcloud.hard.mapper.order.HardOrderMapper; import com.bsd.pjcloud.hard.service.HardOrderTotalService; +import com.bsd.pjcloud.wallet.api.constant.WalletBizEnum; import com.bsd.pjcloud.wallet.api.dto.WalletTransactionSumAndCountDto; import com.bsd.pjcloud.wallet.api.feign.RemoteMchService; import com.bsd.pjcloud.wallet.api.feign.RemoteWalletTransactionService; @@ -32,9 +32,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; -import java.util.ArrayList; import java.util.List; import java.util.concurrent.CompletableFuture; +import java.util.stream.Collectors; @Validated @Slf4j @@ -51,6 +51,13 @@ public class HardOrderTotalServiceImpl implements HardOrderTotalService { @Override public Page pageListSb(Page page, HardOrderDto dto) { + if (ObjectUtil.isNotEmpty(dto.getIsDeepDept()) && dto.getIsDeepDept() && ObjectUtil.isNotEmpty(dto.getDeptId())) { + List deptList = remoteDeptService.getDescendantList(dto.getDeptId()).getData(); + dto.setDeptId(null); + if (ObjectUtil.isNotEmpty(deptList)) { + dto.setDeptIds(deptList.stream().map(SysDept::getDeptId).collect(Collectors.toList())); + } + } Page list = hardOrderMapper.pageListSb(page, dto); if (ObjectUtil.isNotEmpty(list)) { // 商户 @@ -148,10 +155,54 @@ public class HardOrderTotalServiceImpl implements HardOrderTotalService { item.setDeptName(v.getName()); return item; }).toList(); - // 查询钱包流水 - CompletableFuture> walletFuture = CompletableFuture.supplyAsync(() -> { + // 查询钱包批量充值流水 + CompletableFuture> walletBatchFuture = CompletableFuture.supplyAsync(() -> { WalletTransactionSumAndCountDto walletDto = new WalletTransactionSumAndCountDto(); walletDto.setDeptIds(deptIds); + walletDto.setBizTypes(List.of(WalletBizEnum.BATCH.getCode())); + walletDto.setType(WalletTransactionSumAndCountDto.TYPE_INCOME); + if (ObjectUtil.isNotEmpty(dto.getCreateTimeList())) { + walletDto.setCreateTimeList(dto.getCreateTimeList()); + } + if (ObjectUtil.isNotEmpty(dto.getWalletTypeId())) { + walletDto.setWalletTypeId(dto.getWalletTypeId()); + } + return remoteWalletTransactionService.sumAndCount(walletDto).getData(); + }); + // 查询钱包批量扣减流水 + CompletableFuture> walletReduceFuture = CompletableFuture.supplyAsync(() -> { + WalletTransactionSumAndCountDto walletDto = new WalletTransactionSumAndCountDto(); + walletDto.setDeptIds(deptIds); + walletDto.setBizTypes(List.of(WalletBizEnum.BATCH.getCode())); + walletDto.setType(WalletTransactionSumAndCountDto.TYPE_EXPENSE); + if (ObjectUtil.isNotEmpty(dto.getCreateTimeList())) { + walletDto.setCreateTimeList(dto.getCreateTimeList()); + } + if (ObjectUtil.isNotEmpty(dto.getWalletTypeId())) { + walletDto.setWalletTypeId(dto.getWalletTypeId()); + } + return remoteWalletTransactionService.sumAndCount(walletDto).getData(); + }); + // 查询钱包单次充值流水 + CompletableFuture> walletOnceBatchFuture = CompletableFuture.supplyAsync(() -> { + WalletTransactionSumAndCountDto walletDto = new WalletTransactionSumAndCountDto(); + walletDto.setDeptIds(deptIds); + walletDto.setBizTypes(List.of(WalletBizEnum.UPDATE.getCode())); + walletDto.setType(WalletTransactionSumAndCountDto.TYPE_INCOME); + if (ObjectUtil.isNotEmpty(dto.getCreateTimeList())) { + walletDto.setCreateTimeList(dto.getCreateTimeList()); + } + if (ObjectUtil.isNotEmpty(dto.getWalletTypeId())) { + walletDto.setWalletTypeId(dto.getWalletTypeId()); + } + return remoteWalletTransactionService.sumAndCount(walletDto).getData(); + }); + // 查询钱包单次扣减流水 + CompletableFuture> walletOnceReduceFuture = CompletableFuture.supplyAsync(() -> { + WalletTransactionSumAndCountDto walletDto = new WalletTransactionSumAndCountDto(); + walletDto.setDeptIds(deptIds); + walletDto.setBizTypes(List.of(WalletBizEnum.UPDATE.getCode())); + walletDto.setType(WalletTransactionSumAndCountDto.TYPE_EXPENSE); if (ObjectUtil.isNotEmpty(dto.getCreateTimeList())) { walletDto.setCreateTimeList(dto.getCreateTimeList()); } @@ -186,19 +237,40 @@ public class HardOrderTotalServiceImpl implements HardOrderTotalService { } return hardOrderMapper.sumAndCount(refundDto); }); - CompletableFuture allFutures = CompletableFuture.allOf(walletFuture, payFuture, refundFuture); + CompletableFuture allFutures = CompletableFuture.allOf(walletBatchFuture, walletReduceFuture, payFuture, refundFuture, walletOnceBatchFuture, walletOnceReduceFuture); allFutures.join(); - List walletList = walletFuture.join(); + List walletBatchList = walletBatchFuture.join(); + List walletReduceList = walletReduceFuture.join(); + List walletOnceBatchList = walletOnceBatchFuture.join(); + List walletOnceReduceList = walletOnceReduceFuture.join(); List payList = payFuture.join(); List refundList = refundFuture.join(); // 聚合一下数据 for (HardDeptTotalVo v : resultList) { - if (ObjectUtil.isNotEmpty(walletList)) { - walletList.stream().filter(i -> ObjectUtil.equals(i.getDeptId(), v.getDeptId())).findFirst().ifPresent(i -> { + if (ObjectUtil.isNotEmpty(walletBatchList)) { + walletBatchList.stream().filter(i -> ObjectUtil.equals(i.getDeptId(), v.getDeptId())).findFirst().ifPresent(i -> { v.setWalletPrice(i.getSum()); v.setWalletCount(i.getCount()); }); } + if (ObjectUtil.isNotEmpty(walletReduceList)) { + walletReduceList.stream().filter(i -> ObjectUtil.equals(i.getDeptId(), v.getDeptId())).findFirst().ifPresent(i -> { + v.setWalletReducePrice(i.getSum()); + v.setWalletReduceCount(i.getCount()); + }); + } + if (ObjectUtil.isNotEmpty(walletOnceBatchList)) { + walletOnceBatchList.stream().filter(i -> ObjectUtil.equals(i.getDeptId(), v.getDeptId())).findFirst().ifPresent(i -> { + v.setWalletOncePrice(i.getSum()); + v.setWalletOnceCount(i.getCount()); + }); + } + if (ObjectUtil.isNotEmpty(walletOnceReduceList)) { + walletOnceReduceList.stream().filter(i -> ObjectUtil.equals(i.getDeptId(), v.getDeptId())).findFirst().ifPresent(i -> { + v.setWalletOnceReducePrice(i.getSum()); + v.setWalletOnceReduceCount(i.getCount()); + }); + } if (ObjectUtil.isNotEmpty(payList)) { payList.stream().filter(i -> ObjectUtil.equals(i.getDeptId(), v.getDeptId())).findFirst().ifPresent(i -> { v.setOrderPayPrice(i.getSum()); diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardOrderMapper.xml b/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardOrderMapper.xml index ecfb453b6..40aee211c 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardOrderMapper.xml +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardOrderMapper.xml @@ -77,6 +77,15 @@ and a.hour_type = #{dto.hourType} + + and a.dept_id = #{dto.deptId} + + + and a.dept_id in + + #{v} + + and a.order_status in diff --git a/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/feign/RemoteDeptService.java b/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/feign/RemoteDeptService.java index 5353eab62..494715601 100644 --- a/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/feign/RemoteDeptService.java +++ b/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/feign/RemoteDeptService.java @@ -48,6 +48,12 @@ public interface RemoteDeptService { @GetMapping("/dept/list") R> getAllDept(@RequestParam("parentDeptId") Long parentDeptId); + /** + * 查询所有部门包括被删除的 + * 被删除的部门名有(被删除)标注 + * + * @return + */ @NoToken @GetMapping("/dept/inner-all-dept") R> getInnerAllDept(); @@ -92,7 +98,7 @@ public interface RemoteDeptService { R> getParentDeptList(@RequestParam("deptId") Long deptId); /** - * 获得指定部门的所有父部门 + * 获得指定部门的所有子部门 * * @param deptId * @return diff --git a/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/controller/SysDeptController.java b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/controller/SysDeptController.java index 5e9454543..b2729e309 100644 --- a/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/controller/SysDeptController.java +++ b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/controller/SysDeptController.java @@ -24,6 +24,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.bsd.pjcloud.admin.api.entity.SysDept; import com.bsd.pjcloud.admin.api.vo.DeptExcelVO; +import com.bsd.pjcloud.admin.mapper.SysDeptMapper; import com.bsd.pjcloud.admin.service.SysDeptService; import com.bsd.pjcloud.common.core.util.R; import com.bsd.pjcloud.common.excel.annotation.RequestExcel; @@ -61,6 +62,8 @@ public class SysDeptController { private final SysDeptService sysDeptService; + private final SysDeptMapper sysDeptMapper; + /** * 通过ID查询 * @@ -226,6 +229,6 @@ public class SysDeptController { @Inner @GetMapping("/inner-all-dept") public R> getInnerAllDept() { - return R.ok(sysDeptService.list()); + return R.ok(sysDeptMapper.allList()); } } diff --git a/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/mapper/SysDeptMapper.java b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/mapper/SysDeptMapper.java index 8ba3b15df..a98cfa300 100644 --- a/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/mapper/SysDeptMapper.java +++ b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/mapper/SysDeptMapper.java @@ -23,6 +23,8 @@ import com.bsd.pjcloud.admin.api.entity.SysDept; import com.bsd.pjcloud.common.data.datascope.PjcloudBaseMapper; import org.apache.ibatis.annotations.Mapper; +import java.util.List; + /** *

* 部门管理 Mapper 接口 @@ -34,4 +36,5 @@ import org.apache.ibatis.annotations.Mapper; @Mapper public interface SysDeptMapper extends PjcloudBaseMapper { + List allList(); } diff --git a/pjcloud-upms/pjcloud-upms-biz/src/main/resources/mapper/SysDeptMapper.xml b/pjcloud-upms/pjcloud-upms-biz/src/main/resources/mapper/SysDeptMapper.xml index 621b0e753..3925e0d0f 100644 --- a/pjcloud-upms/pjcloud-upms-biz/src/main/resources/mapper/SysDeptMapper.xml +++ b/pjcloud-upms/pjcloud-upms-biz/src/main/resources/mapper/SysDeptMapper.xml @@ -20,4 +20,44 @@ + + + + + + + + + + + + + + select a.dept_id, + a.name, + a.hard_group_id, + a.sort_order, + a.create_by, + a.update_by, + a.create_time, + a.update_time, + a.del_flag, + a.parent_id, + a.tenant_id + + +