| | |
| | | package cn.iocoder.yudao.module.crm.dal.mysql.business; |
| | | |
| | | import cn.hutool.core.date.LocalDateTimeUtil; |
| | | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| | | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| | | import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; |
| | |
| | | import cn.iocoder.yudao.module.crm.controller.admin.business.vo.business.CrmBusinessPageReqVO; |
| | | import cn.iocoder.yudao.module.crm.controller.admin.statistics.vo.funnel.CrmStatisticsFunnelReqVO; |
| | | import cn.iocoder.yudao.module.crm.dal.dataobject.business.CrmBusinessDO; |
| | | import cn.iocoder.yudao.module.crm.enums.business.CrmBusinessEndStatusEnum; |
| | | import cn.iocoder.yudao.module.crm.enums.common.CrmBizTypeEnum; |
| | | import cn.iocoder.yudao.module.crm.util.CrmPermissionUtils; |
| | | import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.time.LocalDateTime; |
| | | import java.util.Collection; |
| | | import java.util.List; |
| | | |
| | |
| | | .betweenIfPresent(CrmBusinessDO::getCreateTime, pageVO.getTimes())); |
| | | } |
| | | |
| | | // ========== 统计方法 ========== |
| | | |
| | | default Long selectTodayCount() { |
| | | LocalDateTime beginOfToday = LocalDateTimeUtil.beginOfDay(LocalDateTime.now()); |
| | | LocalDateTime endOfToday = LocalDateTimeUtil.endOfDay(LocalDateTime.now()); |
| | | return selectCount(new LambdaQueryWrapperX<CrmBusinessDO>() |
| | | .between(CrmBusinessDO::getCreateTime, beginOfToday, endOfToday)); |
| | | } |
| | | |
| | | default BigDecimal selectTotalPriceSum() { |
| | | LambdaQueryWrapperX<CrmBusinessDO> query = new LambdaQueryWrapperX<>(); |
| | | query.select(CrmBusinessDO::getTotalPrice); |
| | | List<CrmBusinessDO> list = selectList(query); |
| | | return list.stream() |
| | | .map(CrmBusinessDO::getTotalPrice) |
| | | .filter(p -> p != null) |
| | | .reduce(BigDecimal.ZERO, BigDecimal::add); |
| | | } |
| | | |
| | | default Long selectSuccessCount() { |
| | | return selectCount(new LambdaQueryWrapperX<CrmBusinessDO>() |
| | | .eq(CrmBusinessDO::getEndStatus, CrmBusinessEndStatusEnum.WIN.getStatus())); |
| | | } |
| | | |
| | | default BigDecimal selectSuccessPriceSum() { |
| | | LambdaQueryWrapperX<CrmBusinessDO> query = new LambdaQueryWrapperX<>(); |
| | | query.eq(CrmBusinessDO::getEndStatus, CrmBusinessEndStatusEnum.WIN.getStatus()) |
| | | .select(CrmBusinessDO::getTotalPrice); |
| | | List<CrmBusinessDO> list = selectList(query); |
| | | return list.stream() |
| | | .map(CrmBusinessDO::getTotalPrice) |
| | | .filter(p -> p != null) |
| | | .reduce(BigDecimal.ZERO, BigDecimal::add); |
| | | } |
| | | |
| | | default Long selectProcessingCount() { |
| | | return selectCount(new LambdaQueryWrapperX<CrmBusinessDO>() |
| | | .isNull(CrmBusinessDO::getEndStatus)); |
| | | } |
| | | |
| | | default Long selectFailCount() { |
| | | return selectCount(new LambdaQueryWrapperX<CrmBusinessDO>() |
| | | .eq(CrmBusinessDO::getEndStatus, CrmBusinessEndStatusEnum.LOSE.getStatus())); |
| | | } |
| | | |
| | | default List<Long> selectOwnerUserIds() { |
| | | LambdaQueryWrapperX<CrmBusinessDO> query = new LambdaQueryWrapperX<>(); |
| | | query.select(CrmBusinessDO::getOwnerUserId).isNotNull(CrmBusinessDO::getOwnerUserId); |
| | | List<CrmBusinessDO> list = selectList(query); |
| | | return list.stream().map(CrmBusinessDO::getOwnerUserId).distinct().toList(); |
| | | } |
| | | |
| | | default Long selectCountByOwnerUserId(Long ownerUserId) { |
| | | return selectCount(CrmBusinessDO::getOwnerUserId, ownerUserId); |
| | | } |
| | | |
| | | default BigDecimal selectPriceSumByOwnerUserId(Long ownerUserId) { |
| | | LambdaQueryWrapperX<CrmBusinessDO> query = new LambdaQueryWrapperX<>(); |
| | | query.eq(CrmBusinessDO::getOwnerUserId, ownerUserId).select(CrmBusinessDO::getTotalPrice); |
| | | List<CrmBusinessDO> list = selectList(query); |
| | | return list.stream() |
| | | .map(CrmBusinessDO::getTotalPrice) |
| | | .filter(p -> p != null) |
| | | .reduce(BigDecimal.ZERO, BigDecimal::add); |
| | | } |
| | | |
| | | } |