xuhy
2025-10-27 6fe1c89ad49f54e3729a496b9c2e9a640d87eb57
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TCrmClinicServiceImpl.java
@@ -1,5 +1,6 @@
package com.ruoyi.system.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.basic.PageInfo;
@@ -11,7 +12,9 @@
import com.ruoyi.system.export.TCrmClinicAuditExport;
import com.ruoyi.system.export.TCrmClinicListExport;
import com.ruoyi.system.mapper.TCrmClinicMapper;
import com.ruoyi.system.mapper.TCrmClinicPointsMapper;
import com.ruoyi.system.model.TCrmClinic;
import com.ruoyi.system.model.TCrmClinicPoints;
import com.ruoyi.system.model.TErpProcurement;
import com.ruoyi.system.query.TCrmClinicQuery;
import com.ruoyi.system.service.ISysUserService;
@@ -47,6 +50,8 @@
    private ISysUserService sysUserService;
    @Autowired
    private TErpProcurementService erpProcurementService;
    @Autowired
    private TCrmClinicPointsMapper crmClinicPointsMapper;
    @Override
    public PageInfo<TCrmClinicVO> pageList(TCrmClinicQuery query) {
@@ -63,15 +68,23 @@
                .in(TErpProcurement::getClinicId, clinicIds)
                .in(TErpProcurement::getStatus, Arrays.asList(3,4,5))
                .likeRight(TErpProcurement::getCreateTime, monthDate));
        List<TCrmClinicPoints> points = crmClinicPointsMapper.selectList(new LambdaQueryWrapper<TCrmClinicPoints>().in(TCrmClinicPoints::getClinicId, clinicIds).ge(TCrmClinicPoints::getExpireTime, new Date()).last(" and points > use_points ORDER BY create_time ASC"));
        for (TCrmClinicVO tCrmClinicVO : list) {
            List<TErpProcurement> procurementList = procurements.stream().filter(procurement -> procurement.getClinicId().equals(tCrmClinicVO.getId())).collect(Collectors.toList());
            if(!CollectionUtils.isEmpty(procurementList)){
                tCrmClinicVO.setMonthPurchaseAmount(procurementList.stream().map(TErpProcurement::getPayMoney).reduce(BigDecimal.ZERO, BigDecimal::add));
            }
            if(Objects.nonNull(tCrmClinicVO.getMonthPurchaseAmount()) && tCrmClinicVO.getMonthPurchaseAmount().compareTo(tCrmClinicVO.getLowProcurementMoney())>0){
            if(Objects.nonNull(tCrmClinicVO.getMonthPurchaseAmount()) && tCrmClinicVO.getMonthPurchaseAmount().compareTo(tCrmClinicVO.getLowProcurementMoney())>-1){
                tCrmClinicVO.setPerformanceStatus(2);
            }
            // 计算可用积分
            List<TCrmClinicPoints> pointsList = points.stream().filter(item -> item.getClinicId().equals(tCrmClinicVO.getId())).collect(Collectors.toList());
            // 可用积分
            int userPoints = pointsList.stream().mapToInt(item -> item.getPoints() - item.getUsePoints()).sum();
            tCrmClinicVO.setUserPoints(userPoints);
        }
        pageInfo.setRecords(list);
@@ -152,6 +165,9 @@
                .in(TErpProcurement::getClinicId, clinicIds)
                .in(TErpProcurement::getStatus, Arrays.asList(3,4,5))
                .likeRight(TErpProcurement::getCreateTime, monthDate));
        List<TCrmClinicPoints> points = crmClinicPointsMapper.selectList(new LambdaQueryWrapper<TCrmClinicPoints>().in(TCrmClinicPoints::getClinicId, clinicIds).ge(TCrmClinicPoints::getExpireTime, new Date()).last(" and points > use_points ORDER BY create_time ASC"));
        for (TCrmClinicListExport crmClinicListExport : list) {
            List<TErpProcurement> procurementList = procurements.stream().filter(procurement -> procurement.getClinicId().equals(crmClinicListExport.getId())).collect(Collectors.toList());
            if(!CollectionUtils.isEmpty(procurementList)){
@@ -162,6 +178,12 @@
                crmClinicListExport.setPerformanceStatus(2);
            }
            // 计算可用积分
            List<TCrmClinicPoints> pointsList = points.stream().filter(item -> item.getClinicId().equals(crmClinicListExport.getId())).collect(Collectors.toList());
            // 可用积分
            int userPoints = pointsList.stream().mapToInt(item -> item.getPoints() - item.getUsePoints()).sum();
            crmClinicListExport.setUserPoints(userPoints);
        }
        return list;
    }