liujie
8 天以前 e173071d2a65a8303095895c4c6a61a7fd170312
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpProcurementServiceImpl.java
@@ -7,6 +7,7 @@
import com.ruoyi.common.core.domain.BaseModel;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.system.dto.AddProcurementDto;
import com.ruoyi.system.export.PlatformLedgerReportExport;
import com.ruoyi.system.export.ProcurementReportClinicExport;
@@ -15,6 +16,7 @@
import com.ruoyi.system.mapper.*;
import com.ruoyi.system.model.*;
import com.ruoyi.system.query.ClinicProcurementReportQuery;
import com.ruoyi.system.query.PerformanceReportQuery;
import com.ruoyi.system.query.TErpGoodsQuery;
import com.ruoyi.system.query.TErpProcurementQuery;
import com.ruoyi.system.service.TErpGoodsService;
@@ -111,6 +113,14 @@
    @Resource
    private TCrmWarehouseMapper crmWarehouseMapper;
    @Resource
    private TCrmBranchMapper crmBranchMapper;
    @Resource
    private TCrmSalespersonMapper crmSalespersonMapper;
    @Resource
    private TCrmChangePointsMapper crmChangePointsMapper;
    @Resource
    private TErpProcurementCommissionMapper erpProcurementCommissionMapper;
    @Override
@@ -759,4 +769,260 @@
        return list;
    }
    @Override
    public PageInfo<BranchPerformanceReportVO> branchPerformanceReport(PerformanceReportQuery query) {
        List<String> clinicIds = new ArrayList<>();
        if(StringUtils.isNotBlank(query.getBranchName())){
            // 查询分公司名称
            List<TCrmBranch> crmBranches = crmBranchMapper.selectList(Wrappers.lambdaQuery(TCrmBranch.class)
                    .like(TCrmBranch::getBranchName, query.getBranchName()));
            if(CollectionUtils.isEmpty(crmBranches)){
                return new PageInfo<>();
            }
            List<String> branchIds = crmBranches.stream().map(TCrmBranch::getId).collect(Collectors.toList());
            List<TCrmClinic> crmClinics = crmClinicMapper.selectList(Wrappers.lambdaQuery(TCrmClinic.class)
                    .in(TCrmClinic::getBranchId, branchIds));
            if(CollectionUtils.isEmpty(crmClinics)){
                return new PageInfo<>();
            }
            List<String> ids = crmClinics.stream().map(TCrmClinic::getId).collect(Collectors.toList());
            clinicIds.addAll(ids);
        }
        query.setClinicIds(clinicIds);
        PageInfo<BranchPerformanceReportVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
        List<BranchPerformanceReportVO> list = this.baseMapper.branchPerformanceReport(query, pageInfo);
        if(CollectionUtils.isEmpty(list)){
            return pageInfo;
        }
        List<String> procurementIds = list.stream().map(BranchPerformanceReportVO::getId).collect(Collectors.toList());
        // 查询可获得积分
        List<TCrmChangePoints> crmChangePoints = crmChangePointsMapper.selectList(Wrappers.lambdaQuery(TCrmChangePoints.class)
                .in(TCrmChangePoints::getProcurementId, procurementIds)
                .eq(TCrmChangePoints::getUserType, 1)
                .eq(TCrmChangePoints::getChangeType, 1)
                .eq(TCrmChangePoints::getChangeReason, 1));
        // 查询业绩
        List<TErpProcurementCommission> erpProcurementCommissions = erpProcurementCommissionMapper.selectList(Wrappers.lambdaQuery(TErpProcurementCommission.class)
                .in(TErpProcurementCommission::getProcurementId, procurementIds)
                .eq(TErpProcurementCommission::getCommissionType, 1));
        for (BranchPerformanceReportVO branchPerformanceReportVO : list) {
            // 查询可获得积分
            List<TCrmChangePoints> changePoints = crmChangePoints.stream().filter(tCrmChangePoints -> branchPerformanceReportVO.getId().equals(tCrmChangePoints.getProcurementId())).collect(Collectors.toList());
            if(!CollectionUtils.isEmpty(changePoints)){
                branchPerformanceReportVO.setAvailablePoints(changePoints.stream().mapToInt(TCrmChangePoints::getChangeValue).sum());
            }
            // 查询业绩
            List<TErpProcurementCommission> commissions = erpProcurementCommissions.stream().filter(tErpProcurementCommission -> branchPerformanceReportVO.getId().equals(tErpProcurementCommission.getProcurementId())).collect(Collectors.toList());
            if(!CollectionUtils.isEmpty(commissions)){
                branchPerformanceReportVO.setPerformance(commissions.stream().map(TErpProcurementCommission::getMoney).reduce(BigDecimal.ZERO, BigDecimal::add));
            }
        }
        pageInfo.setRecords(list);
        return pageInfo;
    }
    @Override
    public PageInfo<SalespersonPerformanceReportVO> salespersonPerformanceReport(PerformanceReportQuery query) {
        List<String> clinicIds = new ArrayList<>();
        if(StringUtils.isNotBlank(query.getBranchName())){
            // 查询分公司名称
            List<TCrmBranch> crmBranches = crmBranchMapper.selectList(Wrappers.lambdaQuery(TCrmBranch.class)
                    .like(TCrmBranch::getBranchName, query.getBranchName()));
            if(CollectionUtils.isEmpty(crmBranches)){
                return new PageInfo<>();
            }
            List<String> branchIds = crmBranches.stream().map(TCrmBranch::getId).collect(Collectors.toList());
            List<TCrmClinic> crmClinics = crmClinicMapper.selectList(Wrappers.lambdaQuery(TCrmClinic.class)
                    .in(TCrmClinic::getBranchId, branchIds));
            if(CollectionUtils.isEmpty(crmClinics)){
                return new PageInfo<>();
            }
            List<String> ids = crmClinics.stream().map(TCrmClinic::getId).collect(Collectors.toList());
            clinicIds.addAll(ids);
        }
        if(StringUtils.isNotBlank(query.getSalespersonName())){
            // 查询业务员名称
            List<TCrmSalesperson> crmSalespeopleList = crmSalespersonMapper.selectList(Wrappers.lambdaQuery(TCrmSalesperson.class)
                    .like(TCrmSalesperson::getSalespersonName, query.getSalespersonName()));
            if(CollectionUtils.isEmpty(crmSalespeopleList)){
                return new PageInfo<>();
            }
            List<String> salespersonIds = crmSalespeopleList.stream().map(TCrmSalesperson::getId).collect(Collectors.toList());
            List<TCrmClinic> crmClinics = crmClinicMapper.selectList(Wrappers.lambdaQuery(TCrmClinic.class)
                    .in(TCrmClinic::getSalespersonId, salespersonIds));
            if(CollectionUtils.isEmpty(crmClinics)){
                return new PageInfo<>();
            }
            List<String> ids = crmClinics.stream().map(TCrmClinic::getId).collect(Collectors.toList());
            clinicIds.addAll(ids);
        }
        clinicIds = clinicIds.stream().distinct().collect(Collectors.toList());
        query.setClinicIds(clinicIds);
        PageInfo<SalespersonPerformanceReportVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
        List<SalespersonPerformanceReportVO> list = this.baseMapper.salespersonPerformanceReport(query, pageInfo);
        if(CollectionUtils.isEmpty(list)){
            return pageInfo;
        }
        List<String> procurementIds = list.stream().map(SalespersonPerformanceReportVO::getId).collect(Collectors.toList());
        // 查询可获得积分
        List<TCrmChangePoints> crmChangePoints = crmChangePointsMapper.selectList(Wrappers.lambdaQuery(TCrmChangePoints.class)
                .in(TCrmChangePoints::getProcurementId, procurementIds)
                .eq(TCrmChangePoints::getUserType, 2)
                .eq(TCrmChangePoints::getChangeType, 1)
                .eq(TCrmChangePoints::getChangeReason, 1));
        // 查询业绩
        List<TErpProcurementCommission> erpProcurementCommissions = erpProcurementCommissionMapper.selectList(Wrappers.lambdaQuery(TErpProcurementCommission.class)
                .in(TErpProcurementCommission::getProcurementId, procurementIds)
                .eq(TErpProcurementCommission::getCommissionType, 2));
        for (SalespersonPerformanceReportVO salespersonPerformanceReportVO : list) {
            // 查询可获得积分
            List<TCrmChangePoints> changePoints = crmChangePoints.stream().filter(tCrmChangePoints -> salespersonPerformanceReportVO.getId().equals(tCrmChangePoints.getProcurementId())).collect(Collectors.toList());
            if(!CollectionUtils.isEmpty(changePoints)){
                salespersonPerformanceReportVO.setAvailablePoints(changePoints.stream().mapToInt(TCrmChangePoints::getChangeValue).sum());
            }
            // 查询业绩
            List<TErpProcurementCommission> commissions = erpProcurementCommissions.stream().filter(tErpProcurementCommission -> salespersonPerformanceReportVO.getId().equals(tErpProcurementCommission.getProcurementId())).collect(Collectors.toList());
            if(!CollectionUtils.isEmpty(commissions)){
                salespersonPerformanceReportVO.setPerformance(commissions.stream().map(TErpProcurementCommission::getMoney).reduce(BigDecimal.ZERO, BigDecimal::add));
            }
        }
        pageInfo.setRecords(list);
        return pageInfo;
    }
    @Override
    public List<BranchPerformanceReportVO> exportBranchPerformanceReport(PerformanceReportQuery query) {
        List<String> clinicIds = new ArrayList<>();
        if(StringUtils.isNotBlank(query.getBranchName())){
            // 查询分公司名称
            List<TCrmBranch> crmBranches = crmBranchMapper.selectList(Wrappers.lambdaQuery(TCrmBranch.class)
                    .like(TCrmBranch::getBranchName, query.getBranchName()));
            if(CollectionUtils.isEmpty(crmBranches)){
                return new ArrayList<>();
            }
            List<String> branchIds = crmBranches.stream().map(TCrmBranch::getId).collect(Collectors.toList());
            List<TCrmClinic> crmClinics = crmClinicMapper.selectList(Wrappers.lambdaQuery(TCrmClinic.class)
                    .in(TCrmClinic::getBranchId, branchIds));
            if(CollectionUtils.isEmpty(crmClinics)){
                return new ArrayList<>();
            }
            List<String> ids = crmClinics.stream().map(TCrmClinic::getId).collect(Collectors.toList());
            clinicIds.addAll(ids);
        }
        query.setClinicIds(clinicIds);
        List<BranchPerformanceReportVO> list = this.baseMapper.exportBranchPerformanceReport(query);
        if(CollectionUtils.isEmpty(list)){
            return new ArrayList<>();
        }
        List<String> procurementIds = list.stream().map(BranchPerformanceReportVO::getId).collect(Collectors.toList());
        // 查询可获得积分
        List<TCrmChangePoints> crmChangePoints = crmChangePointsMapper.selectList(Wrappers.lambdaQuery(TCrmChangePoints.class)
                .in(TCrmChangePoints::getProcurementId, procurementIds)
                .eq(TCrmChangePoints::getUserType, 1)
                .eq(TCrmChangePoints::getChangeType, 1)
                .eq(TCrmChangePoints::getChangeReason, 1));
        // 查询业绩
        List<TErpProcurementCommission> erpProcurementCommissions = erpProcurementCommissionMapper.selectList(Wrappers.lambdaQuery(TErpProcurementCommission.class)
                .in(TErpProcurementCommission::getProcurementId, procurementIds)
                .eq(TErpProcurementCommission::getCommissionType, 1));
        for (BranchPerformanceReportVO branchPerformanceReportVO : list) {
            // 查询可获得积分
            List<TCrmChangePoints> changePoints = crmChangePoints.stream().filter(tCrmChangePoints -> branchPerformanceReportVO.getId().equals(tCrmChangePoints.getProcurementId())).collect(Collectors.toList());
            if(!CollectionUtils.isEmpty(changePoints)){
                branchPerformanceReportVO.setAvailablePoints(changePoints.stream().mapToInt(TCrmChangePoints::getChangeValue).sum());
            }
            // 查询业绩
            List<TErpProcurementCommission> commissions = erpProcurementCommissions.stream().filter(tErpProcurementCommission -> branchPerformanceReportVO.getId().equals(tErpProcurementCommission.getProcurementId())).collect(Collectors.toList());
            if(!CollectionUtils.isEmpty(commissions)){
                branchPerformanceReportVO.setPerformance(commissions.stream().map(TErpProcurementCommission::getMoney).reduce(BigDecimal.ZERO, BigDecimal::add));
            }
            if(Objects.nonNull(branchPerformanceReportVO.getPayTime())){
                String payTimeStr = new SimpleDateFormat("yyyy-MM-dd").format(branchPerformanceReportVO.getPayTime());
                branchPerformanceReportVO.setPayTimeStr(payTimeStr);
            }
        }
        return list;
    }
    @Override
    public List<SalespersonPerformanceReportVO> exportSalespersonPerformanceReport(PerformanceReportQuery query) {
        List<String> clinicIds = new ArrayList<>();
        if(StringUtils.isNotBlank(query.getBranchName())){
            // 查询分公司名称
            List<TCrmBranch> crmBranches = crmBranchMapper.selectList(Wrappers.lambdaQuery(TCrmBranch.class)
                    .like(TCrmBranch::getBranchName, query.getBranchName()));
            if(CollectionUtils.isEmpty(crmBranches)){
                return new ArrayList<>();
            }
            List<String> branchIds = crmBranches.stream().map(TCrmBranch::getId).collect(Collectors.toList());
            List<TCrmClinic> crmClinics = crmClinicMapper.selectList(Wrappers.lambdaQuery(TCrmClinic.class)
                    .in(TCrmClinic::getBranchId, branchIds));
            if(CollectionUtils.isEmpty(crmClinics)){
                return new ArrayList<>();
            }
            List<String> ids = crmClinics.stream().map(TCrmClinic::getId).collect(Collectors.toList());
            clinicIds.addAll(ids);
        }
        if(StringUtils.isNotBlank(query.getSalespersonName())){
            // 查询业务员名称
            List<TCrmSalesperson> crmSalespeopleList = crmSalespersonMapper.selectList(Wrappers.lambdaQuery(TCrmSalesperson.class)
                    .like(TCrmSalesperson::getSalespersonName, query.getSalespersonName()));
            if(CollectionUtils.isEmpty(crmSalespeopleList)){
                return new ArrayList<>();
            }
            List<String> salespersonIds = crmSalespeopleList.stream().map(TCrmSalesperson::getId).collect(Collectors.toList());
            List<TCrmClinic> crmClinics = crmClinicMapper.selectList(Wrappers.lambdaQuery(TCrmClinic.class)
                    .in(TCrmClinic::getSalespersonId, salespersonIds));
            if(CollectionUtils.isEmpty(crmClinics)){
                return new ArrayList<>();
            }
            List<String> ids = crmClinics.stream().map(TCrmClinic::getId).collect(Collectors.toList());
            clinicIds.addAll(ids);
        }
        clinicIds = clinicIds.stream().distinct().collect(Collectors.toList());
        query.setClinicIds(clinicIds);
        List<SalespersonPerformanceReportVO> list = this.baseMapper.exportSalespersonPerformanceReport(query);
        if(CollectionUtils.isEmpty(list)){
            return new ArrayList<>();
        }
        List<String> procurementIds = list.stream().map(SalespersonPerformanceReportVO::getId).collect(Collectors.toList());
        // 查询可获得积分
        List<TCrmChangePoints> crmChangePoints = crmChangePointsMapper.selectList(Wrappers.lambdaQuery(TCrmChangePoints.class)
                .in(TCrmChangePoints::getProcurementId, procurementIds)
                .eq(TCrmChangePoints::getUserType, 2)
                .eq(TCrmChangePoints::getChangeType, 1)
                .eq(TCrmChangePoints::getChangeReason, 1));
        // 查询业绩
        List<TErpProcurementCommission> erpProcurementCommissions = erpProcurementCommissionMapper.selectList(Wrappers.lambdaQuery(TErpProcurementCommission.class)
                .in(TErpProcurementCommission::getProcurementId, procurementIds)
                .eq(TErpProcurementCommission::getCommissionType, 2));
        for (SalespersonPerformanceReportVO salespersonPerformanceReportVO : list) {
            // 查询可获得积分
            List<TCrmChangePoints> changePoints = crmChangePoints.stream().filter(tCrmChangePoints -> salespersonPerformanceReportVO.getId().equals(tCrmChangePoints.getProcurementId())).collect(Collectors.toList());
            if(!CollectionUtils.isEmpty(changePoints)){
                salespersonPerformanceReportVO.setAvailablePoints(changePoints.stream().mapToInt(TCrmChangePoints::getChangeValue).sum());
            }
            // 查询业绩
            List<TErpProcurementCommission> commissions = erpProcurementCommissions.stream().filter(tErpProcurementCommission -> salespersonPerformanceReportVO.getId().equals(tErpProcurementCommission.getProcurementId())).collect(Collectors.toList());
            if(!CollectionUtils.isEmpty(commissions)){
                salespersonPerformanceReportVO.setPerformance(commissions.stream().map(TErpProcurementCommission::getMoney).reduce(BigDecimal.ZERO, BigDecimal::add));
            }
            if(Objects.nonNull(salespersonPerformanceReportVO.getPayTime())){
                String payTimeStr = new SimpleDateFormat("yyyy-MM-dd").format(salespersonPerformanceReportVO.getPayTime());
                salespersonPerformanceReportVO.setPayTimeStr(payTimeStr);
            }
        }
        return list;
    }
}